云豹直播系统集成Braintree,代替Paypal该怎么做
云豹直播系统接入了PayPall,但由于近期, paypal宣布停止维护,为满足组运营需要,云豹直播项目开发组将对其进行同类产品替换,下图为github上paypal的介绍,说的很清楚。

一、替代产品的集成教程
云豹直播系统开发组最终选择使用Braintree作为接力产品,下面是集成方式的讲解:
1、首先依赖库
compile 'com.braintreepayments.api:braintree:2.21.0',(目前公司项目采用androidX库)。 compile 'com.braintreepayments.api:drop-in:3.7.1'
2、然后在AndroidManifest.xml文件中添加如下代码:
<activity android:name="com.braintreepayments.api.BraintreeBrowserSwitchActivity"
android:launchMode="singleTask">
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
<data android:scheme="${applicationId}.braintree" />
</intent-filter>
</activity>3、从服务器获取Token,用于第四步初始化
4、初始化(调用支付)
public void setupBraintree(String money,String language, String clientToken) {
PayPalRequest payPalRequest = new PayPalRequest(money);
payPalRequest.localeCode(language);//设置语言 注意这里的语言格式是"zh_CN" : "en_US"
payPalRequest.currencyCode("USD");//货币
payPalRequest.intent(PayPalRequest.INTENT_SALE);INTENT_SALE 表示立即到账
DropInRequest dropInRequest = new DropInRequest()
.amount(money)
.paypalRequest(payPalRequest)
.clientToken(clientToken);//这里的clientToken是服务器返回的
startActivityForResult(dropInRequest.getIntent(this), BRAINTREE_REQUEST_CODE);
}5、重写onActivityResult
@Override
protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == BRAINTREE_REQUEST_CODE) {
switch (resultCode) {
case Activity.RESULT_OK:
DropInResult result = data.getParcelableExtra(DropInResult.EXTRA_DROP_IN_RESULT);
if (result != null && result.getPaymentMethodNonce() != null) {
String nonce = result.getPaymentMethodNonce() ;
//付款成功后访问服务器验证,将nonce 传给后台
//验证的接口由后台给这里逻辑由后台处理,这里返回成功,说明支付并验证成功。
} else {
ToastUtil.show(WordUtil.getString(R.string.pay_pal_fail));
}
break;
case Activity.RESULT_CANCELED://取消支付
ToastUtil.show(WordUtil.getString(R.string.pay_pal_cancel));
break;
default:
Exception error = (Exception) data.getSerializableExtra(DropInActivity.EXTRA_ERROR);
ToastUtil.show(WordUtil.getString(R.string.pay_pal_fail));
break;
}
}
}6、到此,将Braintree集成到云豹直播系统中的步骤就完成了,相当简单。
二、另一种集成写法
还有一种集成写法:区别于上述第4 步,通过BraintreeFragment 监听
public BraintreeFragment init(AbsActivity activity, final String token) {//token为服务器返回
try {
BraintreeFragment mBraintreeFragment = BraintreeFragment.newInstance(activity, token);
// 支付完成监听
mBraintreeFragment.addListener(new PaymentMethodNonceCreatedListener() {
@Override
public void onPaymentMethodNonceCreated(PaymentMethodNonce paymentMethodNonce) {
String nonce = paymentMethodNonce.getNonce();
if (mListener != null) {
mListener.paySuccess(nonce);
}
}
});
// 取消监听
mBraintreeFragment.addListener(new BraintreeCancelListener() {
@Override
public void onCancel(int requestCode) {
if (mListener != null) {
mListener.payCancel();
}
}
});
// 错误监听
mBraintreeFragment.addListener(new BraintreeErrorListener() {
@Override
public void onError(Exception error) {
if (error instanceof ErrorWithResponse) {
ErrorWithResponse errorWithResponse = (ErrorWithResponse) error;
BraintreeError cardErrors = errorWithResponse.errorFor("creditCard");
if (cardErrors != null) {
BraintreeError expirationMonthError = cardErrors.errorFor("expirationMonth");
if (expirationMonthError != null) {
if (mListener != null) {
mListener.payFail();
}
}
}
}
}
});
return mBraintreeFragment;
} catch (InvalidArgumentException e) {
if (mListener != null) {
mListener.payFail();
}
return null;
}
}
PayPalRequest request = new PayPalRequest(“价格”)
.currencyCode("货币符号")
.intent(PayPalRequest.INTENT_SALE);
PayPal.requestOneTimePayment(mBraintreeFragment, request);//调起支付这种方式也同样可以把Braintree集成到云豹直播系统中。
声明:以上内容为云豹科技作者本人原创,未经作者本人同意,禁止转载,否则将追究相关法律责任www.yunbaokj.com






鲁公网安备 37090202000844号

