java - 如何在 Braintree Android PayPal Vault Payment 上获取 PaymentMethodNonce 和 deviceData
问题描述
我正在尝试实施 Braintree Vault PayPal 付款,这里面临的问题是让paymentMethodNonce
我的事件侦听createdListener
器捕获 nonce 不会被调用 using vault
,但一切正常使用checkout
. 如果没有 ,我无法向客户收费paymentMethodNonce
,请任何人帮助我。
mBraintreeFragment = BraintreeFragment.newInstance(this,"TOKEN_FROM_SERVER");
PayPalRequest request = new PayPalRequest().localeCode("US").billingAgreementDescription("Your agreement description");
PayPal.requestBillingAgreement(mBraintreeFragment, request);
mBraintreeFragment.addListener(createdListener);
mBraintreeFragment.addListener(cancelListener);
mBraintreeFragment.addListener(errorListener);
DataCollector.collectDeviceData(mBraintreeFragment, new BraintreeResponseListener<String>() {
@Override
public void onResponse(String deviceData) {
Log.e("PayPal", deviceData);
try {
JSONObject json = new JSONObject(deviceData);
deviceDataInfo = json.getString("correlation_id");
Log.e("PayPal", deviceDataInfo);
} catch (JSONException e) {
e.printStackTrace();
}
}
});
我的听众
PaymentMethodNonceCreatedListener createdListener = new PaymentMethodNonceCreatedListener() {
@Override
public void onPaymentMethodNonceCreated(PaymentMethodNonce paymentMethodNonce) {
String nonce = paymentMethodNonce.getNonce();
Log.d("PayPal", "nonce id " + nonce);
}
};
BraintreeCancelListener cancelListener = new BraintreeCancelListener() {
@Override
public void onCancel(int requestCode) {
Log.d("CreditCard", "Braintree Error Code " + requestCode);
}
};
BraintreeErrorListener errorListener = new BraintreeErrorListener() {
@Override
public void onError(Exception error) {
if (error instanceof ErrorWithResponse) {
ErrorWithResponse errorWithResponse = (ErrorWithResponse) error;
BraintreeError cardErrors = errorWithResponse.errorFor("creditCard");
if (cardErrors != null) {
List<BraintreeError> errors = cardErrors.getFieldErrors();
String err = Objects.requireNonNull(errors.get(0).getMessage());
Log.d("CreditCard", errors.toString());
}
}
}
};
解决方案
与其手动将您的侦听器添加到该请求中,不如仅从 Braintree 实现接口。
例如,如果您想使用 onPaymentMethodNonceCreated(),只需在您的类名后添加“implements PaymentMethodNonceCreatedListener”。
public class "YourClass" implements PaymentMethodNonceCreatedListener {
//...
}
然后覆盖现在 Android Studio 警告您的方法:
@Override
public void onPaymentMethodNonceCreated(PaymentMethodNonce paymentMethodNonce) {
String nonce = paymentMethodNonce.getNonce();
//...
}
这样你就可以为你的每个听众去!祝你好运!
推荐阅读
- neural-network - MNIST 上的二元分类:损失和准确率保持不变
- java - 使用 Jackson 反序列化包裹在未命名根对象中的 JSON 对象
- bash - 将预先准备好的输入参数字符串作为输入参数传递给程序(mailx)
- ruby-on-rails - 强制 yarn.lock 生成?
- javascript - 将前端与区块链接口以及在 mongodb 上存储数据
- javascript - window.print 包含 textarea 值
- javascript - Javascript 需要分号吗?
- c# - 将多个工作簿 sheet1 合并到一个母版中
- c++ - 渲染大块时的纹理混叠问题:OpenGL
- python-3.x - python3 - exec(open('....py').read()) - 传输变量