TIPS: 此文章中的环境仅仅是在SandBox 进行了开发调试!
说明
- 为什么选择PayPal
在国外,多数支付都是采用PayPal或者信用卡进行支付。 注意 对于使用PayPal,其实也有诸多限制,一定要调查清楚了再去分析是否合适自己的项目 - 为什么使用BrainTree
在使用PayPal 的时候,我们计划采用集成SDK的方式进行支付。在PayPal的 APP SDK 项目中,已经不再维护 SDK,推荐使用 Braintree Direct 参见: https://github.com/paypal/PayPal-Android-SDK - How it works
准备工作
- 注册PayPal账号
PayPal 地址: https://www.paypal.com/ - 注册Braintree沙箱账号
因为注册一个正式的braintree比较麻烦,我们这里仅仅注册一个 Sandbox账号用来调试 Sandbox 注册地址:https://www.braintreepayments.com/my/sandbox 官方注册账号 https://www.braintreepayments.com
配置PayPal
- 创建Sandbox账号
- 登陆后 Dashboard->MyApps&Credentials ;
- 选择 Sandbox,然后点击 CreateApp
- 填写APP名称,并选择在沙箱中使用的账号
- 创建成功后,可以在 MyApps&Credentials 中显示你创建的APP,点击该APP进入项目,可以看到 Sandbox account 、Client ID 、Secret (需要点击show按钮)
warn: 此时,尚未有 webhooks 配置
配置BrainTree
登陆到沙箱环境
- 配置PayPal
- 点击 下拉菜单中的 Processing
- 找到 PayPal ,点击后面的 “Options” ,去配置PayPal
- 分别填入 PayPalEmail 、PayPal Client Id ,PayPal ClientSecret
- 启用对信用卡的校验
- 找到 Processing -> Fraud Tools 中的 CVV,进入
- 如图配置
- 配置WebHooks
- 点击 API -> WebHooks -> create new webhook
- 填入:Destination URL (HTTPS only),并选择要通知的事件
- 校验WebHooks是否正确(需要先开发webhooks功能)
APP 实现代码
略
后台JAVA实现代码
//初始化 gateway
BraintreeGateway gateway = new BraintreeGateway(
isProduct ? Environment.PRODUCTION : Environment.SANDBOX,
merchant_id,
public_key,
private_key
);
//生成token
String token = gateway.clientToken().generate();
//请求交易
TransactionRequest request = new TransactionRequest()
.amount( 这里放金额 )
.paymentMethodNonce( 这里放APP提交过来的字符串码 )
.orderId( 这里可以放订单号 )
.options()
.submitForSettlement(true)
.paypal()
.done()
.storeInVaultOnSuccess(true)
.done();
Result<Transaction> result = gateway.transaction().sale(request);
具体的JAVA代码实现,可以参考官方开发文档: https://developers.braintreepayments.com/guides/paypal/server-side/java
注意事项
- SandBox 环境下 WebHooks无效的问题
在测试过程中发现,交易成功后,无法收到回调。经过多次google,有提到该问题已经很久(据说修复了,但是一直不能用) 那么可以使用他们提供的 WebhookTestingGateway 进行测试
WebhookTestingGateway webhookTestingGateway = new WebhookTestingGateway(gateway.getConfiguration() );
Map<String, String> params =webhookTestingGateway.sampleNotification(WebhookNotification.Kind.SUBSCRIPTION_CHARGED_SUCCESSFULLY, merchant_id);
PayPal选择分析
1、PAYPAL企业账号注册(用于收款、提现的账号)
部分国家不可以注册
2、PAYPAL收款的汇率、手续费
支持银联、Visa、MasterCard、American Express、Discover Card用于支付
手续费:
当月累积收款$3000以下,4.4%+$0.3
当月累积收款$3000-10000,3.9%+$0.3
当月累积收款$10000-100000,3.7%+$0.3
当月累积收款$100000,3.4%+$0.3
汇率:
收款货币使用美元,付款使用人民币,需要付款方把人民币兑换成美元后付款,兑换费率为正常汇率+固定兑换手续费2.5%
3、PAYPAL提现
不能提现人民币,只能使用电汇美金形式提现到银行账户(其他PAYPAL不支持的收款币种,都需要已电汇美金形式提现)
提现必须使用银行账户,需要支持美元
支持PAYPAL提现的中国银行:工商银行、建设银行、农业银行、中国银行、招商银行、交通银行、中信银行、民生银行、兴业银行、光大银行、华夏银行、浦发银行、邮政银行
提现手续费:
中国大陆:3-7个工作日,每次$35
美国:3-4个工作日,每次$35
中国香港:3-6个工作日,免费(低于1000HKD时,每笔3.5HKD)
提现汇率:
PAYPAL账户币种与提现币种相同,不需要支付汇率+兑换费,只需支付手续费
PAYPAL账户币种与提现币种不同,需要支付汇率+2.5%兑换费+手续费
4、PAYPAL支持币种
收款币种:
澳元、加元、瑞士法郎、捷克克朗、丹麦克朗、欧元、英镑、港币、福林、以色列新谢克尔、日元、墨西哥比索、挪威克朗、新西兰元、菲律宾比索、波兰兹罗提、俄罗斯卢布、瑞典克朗、新加坡元、泰铢、新台币、美元
付款币种:100+
5、企业账户身份认证