Каким образом можно организовать оплату со счета телефона за определенный контент распространяемый приложением. То есть пользователь оплачивает и после этого получает доступ к контенту.
Для организации требуется какая то индетефикация пользователя. Как это лучше сделать? Соц сети? Гоогл плюс?
Онлайн платежи
Re: Онлайн платежи
гоогл
R.id.team
NullPointerException - что делать???
viewtopic.php?f=33&t=3899&p=28952#p28952
Где моя ошибка?
viewtopic.php?f=60&t=3198
NullPointerException - что делать???
viewtopic.php?f=33&t=3899&p=28952#p28952
Где моя ошибка?
viewtopic.php?f=60&t=3198
Re: Онлайн платежи
hard писал(а):Каким образом можно организовать оплату со счета телефона за определенный контент распространяемый приложением. То есть пользователь оплачивает и после этого получает доступ к контенту.
Для организации требуется какая то индетефикация пользователя. Как это лучше сделать? Соц сети? Гоогл плюс?
Код: Выделить всё
package com.elementsoftware.activeme.utils;
import java.sql.SQLException;
import java.util.Date;
import net.robotmedia.billing.BillingController;
import net.robotmedia.billing.BillingRequest.ResponseCode;
import net.robotmedia.billing.helper.AbstractBillingObserver;
import net.robotmedia.billing.model.Transaction.PurchaseState;
import android.app.Activity;
import android.os.AsyncTask;
import android.util.Log;
import com.elementsoftware.activeme.datalayer.accesslayer.HelperFactory;
import com.elementsoftware.activeme.datalayer.entities.ActivityPurchasedEntity;
import com.elementsoftware.activeme.datalayer.entities.PremiumActivityEntity;
import com.elementsoftware.activeme.datalayer.entities.UserInfo;
import com.elementsoftware.activeme.utils.webservice.ServiceExeption;
import com.elementsoftware.activeme.utils.webservice.ServiceHelper;
public class Billing extends Object {
public static final String ANDROID_MARKET_ITEM = "1";
public static final String ANDROID_FAKE_PURCHASE = "android.test.purchased";
public static final String ANDROID_FAKE_CANCEL = "android.test.canceled";
private AbstractBillingObserver mBillingObserver;
private Activity activity;
private PremiumActivityEntity curPurchase;
private final static String TAG = "Billing";
private IBilling billing;
@Override
protected void finalize() throws Throwable {
BillingController.unregisterObserver(mBillingObserver);
super.finalize();
}
private void restoreTransactions() {
if (!mBillingObserver.isTransactionsRestored()) {
BillingController.restoreTransactions(activity
.getApplicationContext());
}
}
public void setPremium(PremiumActivityEntity activity) {
curPurchase = activity;
}
// and class must be Activity
public Billing(final IBilling billing, Activity activity,
PremiumActivityEntity premiumActivity) {
curPurchase = premiumActivity;
this.activity = activity;
this.billing = billing;
mBillingObserver = new AbstractBillingObserver(activity) {
@Override
public void onSubscriptionChecked(boolean supported) {
billing.onSubscriptionChecked(supported);
}
@Override
public void onRequestPurchaseResponse(String itemId,
ResponseCode response) {
billing.onRequestPurchaseResponse(itemId, response);
}
@Override
public void onPurchaseStateChanged(String itemId,
PurchaseState state) {
if (state == PurchaseState.PURCHASED) {
sendPurchaseToService();
}
billing.onPurchaseStateChanged(itemId, state);
}
@Override
public void onBillingChecked(boolean supported) {
if (supported) {
restoreTransactions();
}
billing.onBillingChecked(supported);
}
};
BillingController.registerObserver(mBillingObserver);
BillingController.checkBillingSupported(activity
.getApplicationContext());
}
private void updateActivity() {
curPurchase.setPurchased(true);
try {
HelperFactory.getHelper().getPremiumDAO().update(curPurchase);
} catch (SQLException e) {
Log.e(TAG, e.getMessage());
}
}
private void updateLocalStatus(ActivityPurchasedEntity activityPurchase) {
try {
HelperFactory.getHelper().getPurchaseDAO()
.createOrUpdate(activityPurchase);
} catch (SQLException e) {
Log.e(TAG, e.getMessage());
}
}
private void sendPurchaseToService() {
ActivityPurchasedEntity data = new ActivityPurchasedEntity();
data.setActivity_id(curPurchase.getActivity_id());
data.setApi_key(UserInfo.getUser().getUserAPIKey());
data.setPrice("$ 300");
data.setDatetime(new Date());
data.setBuyOnMarket(true);
try {
HelperFactory.getHelper().getPurchaseDAO().createOrUpdate(data);
} catch (SQLException e) {
Log.e(TAG, e.getMessage());
}
new SendPurchase().execute(data);
}
private class SendPurchase extends
AsyncTask<ActivityPurchasedEntity, Void, Void> {
private static final String TAG = "SendPurchase";
@Override
protected Void doInBackground(ActivityPurchasedEntity... params) {
ActivityPurchasedEntity activity = params[0];
try {
ServiceHelper.getService(Billing.this.activity)
.setActivityGuidePurchased(activity);
activity.setSendToService(true);
updateLocalStatus(activity);
} catch (ServiceExeption e) {
Log.e(TAG, e.getMessage());
}
updateActivity();
return null;
}
@Override
protected void onPostExecute(Void result) {
billing.finishBillimg();
super.onPostExecute(result);
}
}
public interface IBilling {
public void onPurchaseStateChanged(String itemId, PurchaseState state);
public void onRequestPurchaseResponse(String itemId,
ResponseCode response);
public void onSubscriptionChecked(boolean supported);
public void onBillingChecked(boolean supported);
public void finishBillimg();
}
}
Re: Онлайн платежи
спасибо, не могли бы не код, а совет дать...по какой технологии что ли лучше.