版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/q4878802/article/details/88060894
Android PayPal 支付集成
PayPal本身自己有移动端的SDK,但是已经不推荐使用了,我也自己集成了一下,还有一些问题存在,在这里就不做介绍了,官方推荐使用Braintree
SDK来集成,Braintree
支持很多种支付方式,也有很多调用方式,我也尝试了很多,为了大家少走弯路,直接看这篇文档就可以了:
首先介绍一下,Braintree
是需要申请资质的,但是似乎不是那么好申请,因为我们公司最后就没有申请下来,他SDK里面好多支付方式,都是需要在申请通过了之后才可以使用.
没有Braintree
账号,也没有关系,使用依据上面的文档,我们使用PayPal还是可以的。
1. 添加依赖
dependencies {
……
implementation 'com.braintreepayments.api:braintree:3.0.0'
}
2. 配置清单文件
<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
通过后台接口下单,获取支付token
4. 初始化
try {
mBraintreeFragment = BraintreeFragment.newInstance(activity, clientToken)
// 支付完成监听
mBraintreeFragment?.addListener(mPaymentMethodNonceCreatedListener)
// 取消监听
mBraintreeFragment?.addListener(mBraintreeCancelListener)
// 错误监听
mBraintreeFragment?.addListener(mBraintreeErrorListener)
} catch (e: InvalidArgumentException) {
e.printStackTrace()
}
5. 调起支付
val request = PayPalRequest("订单金额")
.currencyCode("货币类型")
.intent(PayPalRequest.INTENT_SALE)
PayPal.requestOneTimePayment(mBraintreeFragment, request)
这里有一个设置intent,有三个可选项:PayPalRequest.INTENT_AUTHORIZE
、PayPalRequest.INTENT_SALE
、PayPalRequest.INTENT_ORDER
。默认是PayPalRequest.INTENT_AUTHORIZE
,表示预授权,并不是立即到账。如果想要支付立即到账,需要设置为PayPalRequest.INTENT_SALE
。
支付成功后,可以在mPaymentMethodNonceCreatedListener
接口中取得nonce
、订单号
等信息,验证支付结果。