### [集成PayPal支付(使用BrainTree)](https://pmself.com/article/451) **Published:** 2021-06-09T09:12:28 **Author:** admin **Excerpt:** TIPS: 此文章中的环境仅仅是在SandBox 进行了开发调试! 说明 为什么选择PayPal在国外,多数支… TIPS: 此文章中的环境仅仅是在SandBox 进行了开发调试! # 说明 - 为什么选择PayPal 在国外,多数支付都是采用PayPal或者信用卡进行支付。 **注意** 对于使用PayPal,其实也有诸多限制,一定要调查清楚了再去分析是否合适自己的项目 - 为什么使用BrainTree 在使用PayPal 的时候,我们计划采用集成SDK的方式进行支付。在PayPal的 APP SDK 项目中,已经不再维护 SDK,推荐使用 Braintree Direct 参见: [https://github.com/paypal/PayPal-Android-SDK](https://github.com/paypal/PayPal-Android-SDK) - How it works ![](https://oscimg.oschina.net/oscnet/up-f84243150d7e227b62e3f8d0cec184154df.png) # 准备工作 - 注册PayPal账号 PayPal 地址: [https://www.paypal.com/](https://www.paypal.com/) - 注册Braintree沙箱账号 因为注册一个正式的braintree比较麻烦,我们这里仅仅注册一个 Sandbox账号用来调试 Sandbox 注册地址:[https://www.braintreepayments.com/my/sandbox](https://www.braintreepayments.com/my/sandbox) 官方注册账号 [https://www.braintreepayments.com](https://www.braintreepayments.com/) # 配置PayPal - 创建Sandbox账号 1. 登陆后 Dashboard->MyApps&Credentials ; 2. 选择 Sandbox,然后点击 CreateApp 3. 填写APP名称,并选择在沙箱中使用的账号 4. 创建成功后,可以在 MyApps&Credentials 中显示你创建的APP,点击该APP进入项目,可以看到 Sandbox account 、Client ID 、Secret (需要点击show按钮) ![](https://oscimg.oschina.net/oscnet/up-decf7b7c602ac97d23e61a9c1d9b8f3c29d.png) warn: 此时,尚未有 webhooks 配置 # 配置BrainTree > 登陆到沙箱环境 ![](https://oscimg.oschina.net/oscnet/up-49deb3a7d7d113b3ea478bb91e620e582fb.png) - 配置PayPal 1. 点击 下拉菜单中的 Processing 2. 找到 PayPal ,点击后面的 “Options” ,去配置PayPal 3. 分别填入 PayPalEmail 、PayPal Client Id ,PayPal ClientSecret - 启用对信用卡的校验 1. 找到 Processing -> Fraud Tools 中的 CVV,进入 2. 如图配置 ![](https://oscimg.oschina.net/oscnet/up-e225f5fc03ebfa8653e76e2a5dae4c6ea09.png) - 配置WebHooks 1. 点击 API -> WebHooks -> create new webhook 2. 填入:Destination URL (HTTPS only),并选择要通知的事件 3. 校验WebHooks是否正确(需要先开发webhooks功能) ![](https://oscimg.oschina.net/oscnet/up-6e533ca15640a3e8defe30c0c1d1276ae99.png) # 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 result = gateway.transaction().sale(request); ``` 具体的JAVA代码实现,可以参考官方开发文档: [https://developers.braintreepayments.com/guides/paypal/server-side/java](https://developers.braintreepayments.com/guides/paypal/server-side/java) # 注意事项 1. SandBox 环境下 WebHooks无效的问题 > 在测试过程中发现,交易成功后,无法收到回调。经过多次google,有提到该问题已经很久(据说修复了,但是一直不能用) 那么可以使用他们提供的 **WebhookTestingGateway** 进行测试 ``` WebhookTestingGateway webhookTestingGateway = new WebhookTestingGateway(gateway.getConfiguration() ); Map 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、企业账户身份认证 **Categories:** 技术 ---