Android Open Source - Java-Yandex.Money-API-SDK Process Payment Task






From Project

Back to project page Java-Yandex.Money-API-SDK.

License

The source code is released under:

MIT License

If you think the Android project Java-Yandex.Money-API-SDK listed in this page is inappropriate, such as containing malicious code/tools or violating the copyright, please email info at java2s dot com, thanks.

Java Source Code

package ru.yandex.money.droid;
/* w  ww. ja  v a 2s .c om*/
import android.app.Activity;
import android.app.AlertDialog;
import android.app.ProgressDialog;
import android.content.DialogInterface;
import android.content.Intent;
import android.net.http.AndroidHttpClient;
import android.os.AsyncTask;
import ru.yandex.money.api.ApiCommandsFacade;
import ru.yandex.money.api.InsufficientScopeException;
import ru.yandex.money.api.InvalidTokenException;
import ru.yandex.money.api.enums.MoneySource;
import ru.yandex.money.api.response.ProcessPaymentResponse;

import java.io.IOException;

/**
 * User: mdv
 * Date: 19.03.12
 * Time: 20:54
 */
class ProcessPaymentTask extends AsyncTask<Void, Void, ProcessPaymentTask.ProcessPaymentResp> {

    ProgressDialog dialog;
    private Activity activity;
    private String clientId;
    private String accessToken;
    private String requestId;
    private MoneySource moneySource;
    private boolean showResultDialog;
    private String cvc;

    ProcessPaymentTask(Activity activity, String clientId, String accessToken, String requestId,
                       MoneySource moneySource, boolean showResultDialog, String cvc) {

        this.activity = activity;
        this.clientId = clientId;
        this.accessToken = accessToken;
        this.requestId = requestId;
        this.moneySource = moneySource;
        this.showResultDialog = showResultDialog;
        this.cvc = cvc;
    }

    @Override
    protected void onPreExecute() {
        dialog = Utils.makeProgressDialog(activity, "?????????? ???????", Consts.WAIT);
        dialog.setCancelable(false);
        if (!activity.isFinishing())
            dialog.show();
    }

    @Override
    protected ProcessPaymentResp doInBackground(
            Void... params) {
        AndroidHttpClient client = Utils.httpClient();
        try {
            ApiCommandsFacade ym = Utils.getYandexMoney(clientId, client);
            ProcessPaymentResponse resp = null;
            if (moneySource == MoneySource.wallet)
                resp = ym.processPaymentByWallet(accessToken, requestId);
            if (moneySource == MoneySource.card)
                resp = ym.processPaymentByCard(accessToken, requestId, cvc);
            return new ProcessPaymentResp(resp, null);
        } catch (IOException e) {
            return new ProcessPaymentResp(null, e);
        } catch (InsufficientScopeException e) {
            return new ProcessPaymentResp(null, e);
        } catch (InvalidTokenException e) {
            return new ProcessPaymentResp(null, e);
        } finally {
            client.close();
        }
    }

    @Override
    protected void onPostExecute(ProcessPaymentResp resp) {
        dialog.dismiss();

        if (resp.getException() == null) {
            if (resp.getResponse().isSuccess()) {
                if (showResultDialog) {
                    if (!activity.isFinishing())
                        makeResultAlertDialog(true, null, resp.getResponse().getPaymentId(), "???????").show();
                } else {
                    Intent intent = new Intent();
                    intent.putExtra(ActivityParams.PAYMENT_OUT_IS_SUCCESS, true);
                    intent.putExtra(ActivityParams.PAYMENT_OUT_OPERATION_ID, resp.getResponse().getPaymentId());
                    activity.setResult(Activity.RESULT_OK, intent);
                    activity.finish();
                }
            } else {
                Intent intent = new Intent();
                intent.putExtra(ActivityParams.PAYMENT_OUT_IS_SUCCESS, false);
                intent.putExtra(ActivityParams.PAYMENT_OUT_ERROR, resp.getResponse().getError());
                activity.setResult(Activity.RESULT_CANCELED, intent);
                activity.finish();
            }
        } else {
            Intent intent = new Intent();
            intent.putExtra(ActivityParams.PAYMENT_OUT_IS_SUCCESS, false);
            intent.putExtra(ActivityParams.PAYMENT_OUT_EXCEPTION, resp.getException());
            activity.setResult(Activity.RESULT_CANCELED, intent);
            activity.finish();
        }
    }

    private AlertDialog makeResultAlertDialog(final boolean isSuccess,
                                              final String error, final String operationId, String title) {
        AlertDialog.Builder builder;
        builder = new AlertDialog.Builder(activity);
        builder.setIcon(R.drawable.ic_wallet);
        if (title != null)
            builder.setTitle(title);
        if (isSuccess)
            builder.setMessage("??????? ???????? ????????");
        else
            builder.setMessage("??????: " + error);

        builder.setNeutralButton("Ok", new DialogInterface.OnClickListener() {
            public void onClick(DialogInterface dialog, int which) {
                Intent authResult = new Intent();
                authResult.putExtra(ActivityParams.PAYMENT_OUT_IS_SUCCESS,
                        isSuccess);
                if (error != null)
                    authResult.putExtra(ActivityParams.PAYMENT_OUT_ERROR, error);
                if (operationId != null)
                    authResult.putExtra(ActivityParams.PAYMENT_OUT_OPERATION_ID, operationId);

                if (isSuccess)
                    activity.setResult(Activity.RESULT_OK, authResult);
                else
                    activity.setResult(Activity.RESULT_CANCELED, authResult);
                activity.finish();
            }
        });
        AlertDialog dialog = builder.create();
        dialog.setCanceledOnTouchOutside(false);
        return dialog;
    }

    public class ProcessPaymentResp {
        private ProcessPaymentResponse response;
        private Exception exception;

        private ProcessPaymentResp(ProcessPaymentResponse response, Exception exception) {
            this.response = response;
            this.exception = exception;
        }

        public ProcessPaymentResponse getResponse() {
            return response;
        }

        public Exception getException() {
            return exception;
        }
    }
}




Java Source Code List

com.samples.client.Settings.java
com.samples.server.SampleIncomingTransferListener.java
com.samples.server.ServletListener.java
com.samples.yamodroid.Consts.java
com.samples.yamodroid.GreatAppActivity.java
ru.yandex.money.api.ApiCommandsFacadeImpl.java
ru.yandex.money.api.ApiCommandsFacade.java
ru.yandex.money.api.CommandUrlHolder.java
ru.yandex.money.api.InsufficientScopeException.java
ru.yandex.money.api.InternalServerErrorException.java
ru.yandex.money.api.InvalidTokenException.java
ru.yandex.money.api.ProtocolRequestException.java
ru.yandex.money.api.TestUrlHolder.java
ru.yandex.money.api.TokenRequesterImpl.java
ru.yandex.money.api.TokenRequester.java
ru.yandex.money.api.YamoneyAccount.java
ru.yandex.money.api.YamoneyApiClient.java
ru.yandex.money.api.YandexMoneyImpl.java
ru.yandex.money.api.YandexMoney.java
ru.yandex.money.api.enums.Destination.java
ru.yandex.money.api.enums.MoneyDirection.java
ru.yandex.money.api.enums.MoneySource.java
ru.yandex.money.api.enums.OperationHistoryType.java
ru.yandex.money.api.enums.Status.java
ru.yandex.money.api.notifications.IncomingTransferListener.java
ru.yandex.money.api.notifications.IncomingTransfer.java
ru.yandex.money.api.notifications.NotificationUtils.java
ru.yandex.money.api.notifications.NotificationsServlet.java
ru.yandex.money.api.response.AccountInfoResponse.java
ru.yandex.money.api.response.FundraisingStatsResponse.java
ru.yandex.money.api.response.OperationDetailResponse.java
ru.yandex.money.api.response.OperationHistoryResponse.java
ru.yandex.money.api.response.ProcessPaymentResponse.java
ru.yandex.money.api.response.ReceiveOAuthTokenResponse.java
ru.yandex.money.api.response.RequestPaymentResponse.java
ru.yandex.money.api.response.util.OperationHistoryError.java
ru.yandex.money.api.response.util.Operation.java
ru.yandex.money.api.response.util.PaymentErrorCode.java
ru.yandex.money.api.response.util.ProcessPaymentError.java
ru.yandex.money.api.response.util.RequestPaymentError.java
ru.yandex.money.api.response.util.money.PaymentMethods.java
ru.yandex.money.api.rights.AbstractLimitedPermission.java
ru.yandex.money.api.rights.AbstractPermission.java
ru.yandex.money.api.rights.AccountInfo.java
ru.yandex.money.api.rights.IdentifierType.java
ru.yandex.money.api.rights.MoneySource.java
ru.yandex.money.api.rights.OperationDetails.java
ru.yandex.money.api.rights.OperationHistory.java
ru.yandex.money.api.rights.PaymentP2P.java
ru.yandex.money.api.rights.PaymentShop.java
ru.yandex.money.api.rights.Payment.java
ru.yandex.money.api.rights.Permission.java
ru.yandex.money.droid.ActivityParams.java
ru.yandex.money.droid.AuthActivity.java
ru.yandex.money.droid.Consts.java
ru.yandex.money.droid.DetailHistoryActivity.java
ru.yandex.money.droid.HistoryActivity.java
ru.yandex.money.droid.HistoryAdapter.java
ru.yandex.money.droid.IntentCreator.java
ru.yandex.money.droid.LoadHistoryTask.java
ru.yandex.money.droid.PaymentActivity.java
ru.yandex.money.droid.PaymentConfirmActivity.java
ru.yandex.money.droid.PaymentShopParcelable.java
ru.yandex.money.droid.ProcessPaymentTask.java
ru.yandex.money.droid.Utils.java
ru.yandex.money.droid.YandexMoneyDroid.java