1

我正在使用 Google pay API 将 Braintree 集成到我的 android 应用程序中,已显示付款对话框,输入实时卡详细信息后,我单击了继续,但onActivityResult根本没有调用我不知道我错过了什么,有人可以请帮助我使用 Google pay API 集成 Braintree。

我已经提到了以下链接

public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    mPaymentsClient =
            Wallet.getPaymentsClient(
                    getActivity(),
                    new Wallet.WalletOptions.Builder()
                            .setEnvironment(WalletConstants.ENVIRONMENT_TEST)
                            .build());
}

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
    View v = inflater.inflate(R.layout.create_promote, container, false);
    return v;
}

@Override
public void onActivityCreated(Bundle savedInstanceState) {
    super.onActivityCreated(savedInstanceState);
    pay = (TextView) getView().findViewById(R.id.promote);
    pay.setOnClickListener(this);
}

@Override
public void onClick(View v) {
    switch (v.getId()) {
        case R.id.promote:
            if (CreatePromote.clientToken.equals("")) {
                JoysaleApplication.dialog(getActivity(), getString(R.string.alert), getString(R.string.somethingwrong));
            } else {
                try {
                    mBraintreeFragment = BraintreeFragment.newInstance(getActivity(), CreatePromote.clientToken);
                } catch (InvalidArgumentException e) {
                    e.printStackTrace();
                }
                IsReadyToPayRequest request =
                        IsReadyToPayRequest.newBuilder()
                                .addAllowedPaymentMethod(WalletConstants.PAYMENT_METHOD_CARD)
                                .addAllowedPaymentMethod(WalletConstants.PAYMENT_METHOD_TOKENIZED_CARD)
                                .build();
                Task<Boolean> task = mPaymentsClient.isReadyToPay(request);
                task.addOnCompleteListener(
                        new OnCompleteListener<Boolean>() {
                            public void onComplete(Task<Boolean> task) {
                                try {
                                    boolean result = task.getResult(ApiException.class);
                                    if (result == true) {
                                        PaymentDataRequest request = createPaymentDataRequest();
                                        if (request != null) {
                                            AutoResolveHelper.resolveTask(
                                                    mPaymentsClient.loadPaymentData(request),
                                                    getActivity(),100);
                                        }
                                    } else {
                                        // Hide Google as payment option.
                                    }
                                } catch (ApiException exception) {
                                }
                            }
                        });
            }
            break;
    }
}

    private PaymentDataRequest createPaymentDataRequest() {
        PaymentDataRequest.Builder request =
                PaymentDataRequest.newBuilder()
                        .setTransactionInfo(
                                TransactionInfo.newBuilder()
                                        .setTotalPriceStatus(WalletConstants.TOTAL_PRICE_STATUS_FINAL)
                                        .setTotalPrice("10.00")
                                        .setCurrencyCode("USD")
                                        .build())
                        .addAllowedPaymentMethod(WalletConstants.PAYMENT_METHOD_CARD)
                        .addAllowedPaymentMethod(WalletConstants.PAYMENT_METHOD_TOKENIZED_CARD)
                        .setCardRequirements(
                                CardRequirements.newBuilder()
                                        .addAllowedCardNetworks(
                                                Arrays.asList(
                                                        WalletConstants.CARD_NETWORK_AMEX,
                                                        WalletConstants.CARD_NETWORK_DISCOVER,
                                                        WalletConstants.CARD_NETWORK_VISA,
                                                        WalletConstants.CARD_NETWORK_MASTERCARD))
                                        .build());

        PaymentMethodTokenizationParameters params =
                PaymentMethodTokenizationParameters.newBuilder()
                        .setPaymentMethodTokenizationType(
                                WalletConstants.PAYMENT_METHOD_TOKENIZATION_TYPE_PAYMENT_GATEWAY)
                        .addParameter("gateway","Braintree")
                        .addParameter("gatewayMerchantId", "replace me")
                        .build();

        request.setPaymentMethodTokenizationParameters(params);
        return request.build();
    }

@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    switch (requestCode) {
        case 100:
            switch (resultCode) {
                case Activity.RESULT_OK:
                    PaymentData paymentData = PaymentData.getFromIntent(data);
                    String token = paymentData.getPaymentMethodToken().getToken();
                    break;
                case Activity.RESULT_CANCELED:
                    break;
                case AutoResolveHelper.RESULT_ERROR:
                    Status status = AutoResolveHelper.getStatusFromIntent(data);
                    // Log the status for debugging.
                    // Generally, there is no need to show an error to
                    // the user as the Google Pay API will do that.
                    break;
                default:
                    // Do nothing.
            }
            break;
        default:
            // Do nothing.
    }
}
4

1 回答 1

2

在您的代码中添加商家 ID。像下面

addParameter("gatewayMerchantId", "r3379kksdass9gt2gtjw")

于 2018-01-19T11:47:28.780 回答