完整技术指南,详细介绍PayPal标准支付和独立信用卡支付按钮的集成步骤与代码示例。
PayPal 是全球广泛使用的支付解决方案,其标准支付和信用卡支付功能可帮助开发者快速接入跨境支付能力。本文将通过 代码示例 + 图文演示,一步步讲解如何集成 PayPal 标准支付按钮和独立信用卡支付按钮,覆盖从沙盒环境配置到支付结果处理的完整流程。
访问 PayPal 中国 注册账号并接受《中国跨境支付服务用户协议》。 
<!-- 在页面中引入 PayPal JS SDK -->
<script src="https://www.paypal.com/sdk/js?client-id=<YOUR_CLIENT_ID>¤cy=USD"></script>
// 渲染标准支付按钮
paypal.Buttons({
createOrder: function(data, actions) {
// 调用后端API创建订单
return fetch('/api/create-order', { method: 'POST' })
.then(res => res.json())
.then(order => order.id);
},
onApprove: function(data, actions) {
// 捕获支付
return fetch(`/api/capture-payment/${data.orderID}`, { method: 'POST' })
.then(res => res.json())
.then(details => {
alert('支付成功!交易ID:' + details.id);
});
}
}).render('#paypal-button-container');
// 调用 PayPal Create Order API
const createOrder = async () => {
const accessToken = await getAccessToken(); // 获取访问令牌
const response = await fetch('https://api-m.sandbox.paypal.com/v2/checkout/orders', {
method: 'POST',
headers: {
'Content-Type': 'application/json',
'Authorization': `Bearer ${accessToken}`
},
body: JSON.stringify({
intent: 'CAPTURE',
purchase_units: [{
amount: { currency_code: 'USD', value: '100.00' },
items: [{
name: '商品名称',
category: 'DIGITAL_GOODS', // 非实体商品
quantity: '1',
unit_amount: { value: '100.00' }
}]
}],
application_context: {
shipping_preference: 'NO_SHIPPING' // 无需配送
}
})
});
return response.json();
};
POST /v2/checkout/orders/{id}/capture。PAYMENT.CAPTURE.COMPLETED 等事件,用于处理异步状态更新。 // 渲染独立信用卡按钮
paypal.Buttons({
fundingSource: paypal.FUNDING.CARD,
style: {
layout: 'vertical',
shape: 'rect',
color: 'black',
label: 'pay'
},
createOrder: function(data, actions) { /* 同标准支付 */ },
onApprove: function(data, actions) { /* 同标准支付 */ }
}).render('#card-button-container');
在创建订单时需传递 payer 信息以隐藏冗余字段:
{
"payer": {
"name": { "given_name": "Test", "surname": "User" },
"email_address": "test@example.com",
"address": { "country_code": "US" }
}
}
INVALID_REQUEST 错误:检查 purchase_units 中的商品详情是否完整。PAYMENT.CAPTURE.PENDING 事件。本文完整演示了 PayPal 标准支付与独立信用卡支付的集成流程,覆盖了:
最佳实践建议:
Client-ID。扩展阅读
立即动手尝试吧! 如有问题,欢迎在评论区留言讨论。