一、环境准备
1. 注册
注册:创建PayPal账户 - PayPal中国https://www.paypal.com/c2/webapps/mpp/account-selection1.1 选择企业账户
1.2 开发者中心:
PayPal developerhttps://developer.paypal.com/
1.3 进入控制面板:
2. 创建沙箱测试账号
2.1 Business为收款账号,Personal为付款账号,平台默认创建好了两个账号
2.2 在沙箱模式创建一个app,平台默认创建好了一个
2.3 填写信息
类型:
Merchant-仅为自己收款
Platform-作为平台收款,可分账给卖家
2.4 绑定某个沙箱账号
3. Client ID及Secret
进入app详细页面,查看Client ID及Secret(后续需填写到代码中)
二、核心代码
1. 官方github sdk
- Rest-api-sdk,已被deprecated,但可继续用,只是官方不会继续添加新功能
This SDK is deprecated. You can continue to use it, but no new features or support requests will be accepted. For alternatives, please visit the current SDK homepage on the PayPal Developer Portal
https://github.com/paypal/PayPal-Java-SDKhttps://github.com/paypal/PayPal-Java-SDK
- Checkout SDK,推荐使用:
https://github.com/paypal/Checkout-Java-SDKhttps://github.com/paypal/Checkout-Java-SDK
此文章仅介绍Checkout SDK
2. pom引用
在自己的spring boot项目中添加sdk依赖Maven Central Repository Searchhttps://search.maven.org/artifact/com.paypal.sdk/checkout-sdk/1.0.5/jar
<dependency>
<groupId>com.paypal.sdk</groupId>
<artifactId>checkout-sdk</artifactId>
<version>1.0.5</version>
</dependency>
2.1 github中checkout-sdk-sample 的代码复制到自己的项目中
3. 代码讲解
3.1 填写Client ID及Secret
在PayPalClient.java中,替换创建好的app详细页面的Client ID及Secret
3.2 两个模式:Authorize、Capture
查看Authorize模式的RunAll.java可看到多了一步授权步骤,将orderId转成了authId
3.3 创建订单示例代码:
已知参数(其他未标注参数未知具体作用,如知晓请告知):
金额规则:
总金额=商品总价+运费+handling+税总金额-运费折扣
商品总价=各(商品单价x数量)的累加
税总金额=各(商品税x数量)的累加
如不满足会报错
商品类型category枚举:Ordershttps://developer.paypal.com/docs/api/orders/v2/
3.4 参数可简化,如我方是售卖线上课程的业务,简化后:
4. 支付代码demo流程
4.1 直接执行RunAll.java
4.2 创建完顶底后,复制approve的链接到浏览器
4.3 用sandbox的personal的账号登录,并支付
4.4 支付成功后,会跳到returnUrl填的地址
5. 退款
可设置退款金额,金额<=总金额
6. 支付回调
6.1 接口配置:
6.2 回调信息在JSONObject参数中
@PostMapping("/ipn")
public void ipn(@RequestBody JSONObject requestParams) {
}