对接 PayPal 支付系统到你的 APP 包括以下几个步骤。你可以使用 PayPal 提供的 SDK 或者直接调用 API 来实现支付功能。以下是技术对接的详细说明:
1. 创建 PayPal 账户
- 注册开发者账户: 访问 [PayPal Developer Portal](https://developer.paypal.com/) 并注册一个开发者账户。
- 创建应用: 登录后,在 PayPal 开发者控制台中创建一个应用。这个应用会为你生成 Client ID 和 Secret Key,用于 API 调用和集成。
2. 获取 API 凭证
- 沙盒模式和生产模式: 在开发和测试过程中使用 Sandbox 环境。进入 PayPal 开发者控制台,获取沙盒和生产环境的 Client ID 和 Secret Key。
3. 集成 PayPal SDK
根据你的 APP 技术栈选择相应的 SDK 进行集成:
a. Android 集成 PayPal
- 依赖库配置:
在 `build.gradle` 中添加 PayPal SDK 依赖:
groovy
implementation 'com.paypal.checkout:android-sdk:0.9.1'
- 初始化 PayPal SDK:
java
CheckoutConfig config = new CheckoutConfig(
getApplication(),
"YOUR_CLIENT_ID",
Environment.SANDBOX, // 或 Environment.LIVE
"com.yourcompany.yourapp://paypalpay",
CurrencyCode.USD,
UserAction.PAY_NOW
);
PayPalCheckout.setConfig(config);
- 创建订单并处理支付:
java
PayPalCheckout.start(new CreateOrder() {
@Override
public void create(OrderActions orderActions) {
List<PurchaseUnit> purchaseUnits = new ArrayList<>();
purchaseUnits.add(
new PurchaseUnit.Builder()
.amount(new Amount.Builder()
.currencyCode(CurrencyCode.USD)
.value("10.00")
.build())
.build());
orderActions.create(new OrderRequest.Builder()
.intent(OrderIntent.CAPTURE)
.purchaseUnits(purchaseUnits)
.build());
}
});
- 处理支付结果:
java
PayPalCheckout.addOnCompleteListener(new OnCompleteListener() {
@Override
public void onComplete(Order order) {
if (order.getStatus().equals(OrderStatus.COMPLETED)) {
// 支付成功
}
}
});
b. iOS 集成 PayPal
- 安装 SDK: 使用 CocoaPods 安装 PayPal SDK,在 `Podfile` 中添加:
ruby
pod 'PayPalCheckout'
- 初始化 PayPal SDK:
swift
let config = CheckoutConfig(
clientID: "YOUR_CLIENT_ID",
environment: .sandbox, // 或 .live
returnUrl: "com.yourcompany.yourapp://paypalpay",
currencyCode: .usd,
userAction: .payNow
)
PayPalCheckout.set(config: config)
- 创建订单:
swift
PayPalCheckout.start(
createOrder: { createOrderAction in
let order = OrderRequest(
intent: .capture,
purchaseUnits: [
PurchaseUnit(
amount: Amount(currencyCode: .usd, value: "10.00")
)
]
)
createOrderAction.create(order: order)
}
)
- 处理支付结果:
swift
PayPalCheckout.onApprove = { approval in
approval.actions.capture { response, error in
if let order = response {
// 支付成功
}
}
}
c. 使用 REST API 集成(适用于后端)
如果你想在后端通过 REST API 实现支付流程:
- 创建订单:
bash
curl -v -X POST https://api-m.sandbox.paypal.com/v2/checkout/orders
-H "Content-Type: application/json"
-H "Authorization: Bearer YOUR_ACCESS_TOKEN"
-d '{
"intent": "CAPTURE",
"purchase_units": [
{
"amount": {
"currency_code": "USD",
"value": "10.00"
}
}
]
}'
- 捕获支付:
bash
curl -v -X POST https://api-m.sandbox.paypal.com/v2/checkout/orders/ORDER_ID/capture
-H "Content-Type: application/json"
-H "Authorization: Bearer YOUR_ACCESS_TOKEN"
d. JavaScript SDK 集成(适用于 WebView 或移动 Web APP)
- 在 HTML 页面中引入 PayPal JavaScript SDK:
html
<script src="https://www.paypal.com/sdk/js?client-id=YOUR_CLIENT_ID"></script>
- 渲染支付按钮并处理支付:
html
<div id="paypal-button-container"></div>
<script>
paypal.Buttons({
createOrder: function(data, actions) {
return actions.order.create({
purchase_units: [{
amount: {
value: '10.00'
}
}]
});
},
onApprove: function(data, actions) {
return actions.order.capture().then(function(details) {
alert('Transaction completed by ' + details.payer.name.given_name);
});
}
}).render('paypal-button-container');
</script>
4. 测试支付
- 沙盒模式: PayPal 提供了一些沙盒账户和虚拟信用卡,供你在测试环境中模拟支付流程。
- 错误处理: 处理支付失败、用户取消支付等场景,确保用户有良好的支付体验。
5. 上线到生产环境
- 切换环境: 在正式上线时,将沙盒环境切换为生产环境,确保你使用生产环境的 Client ID 和 Secret Key。
- 安全性: 确保你遵循 PCI-DSS 安全标准,保护用户支付数据。
通过这些步骤,你的 APP 就可以成功集成 PayPal 支付功能。如果你有更多的定制需求,PayPal 的 API 文档中有详细的参数和功能说明,可以根据具体场景进行调整。