You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PayPal托管按钮集成后如何验证支付完成并存储交易数据

PayPal托管按钮支付验证与服务器同步方案

1. 前端添加支付成功回调

修改你的托管按钮代码,增加onApprove回调捕获支付完成事件,将交易标识传给后端做验证:

<script src="https://www.paypal.com/sdk/js?client-id=myClientId&components=hosted-buttons&disable-funding=venmo&currency=EUR"></script>
<div id="paypal-container-foobar"></div>
<script>
  paypal.HostedButtons({
    hostedButtonId: "MYHOSTEDBUTTONSID",
    onApprove: (data) => {
      // 向你的后端接口发送交易ID
      fetch('/verify-paypal-transaction', {
        method: 'POST',
        headers: { 'Content-Type': 'application/json' },
        body: JSON.stringify({ transactionId: data.orderID })
      })
      .then(res => res.json())
      .then(result => {
        result.success ? console.log('支付验证通过') : console.error('支付无效');
      });
    }
  }).render("#paypal-container-foobar")
</script>

2. 后端验证交易(核心步骤)

前端回调仅作触发,必须通过PayPal官方API在后端验证交易真实性,流程如下:

  • 用你的沙箱商户ID和秘钥调用OAuth接口获取访问令牌
  • 拿着令牌调用订单/交易查询接口,核对关键信息
  • 验证通过后再存储交易数据到数据库

后端伪代码示例(以Node.js为例)

const axios = require('axios');

async function verifyTransaction(transactionId) {
  // 1. 获取访问令牌
  const authRes = await axios.post(
    'https://api-m.sandbox.paypal.com/v1/oauth2/token',
    'grant_type=client_credentials',
    { auth: { username: '你的沙箱商户ID', password: '你的沙箱秘钥' } }
  );
  const token = authRes.data.access_token;

  // 2. 查询订单详情
  const orderRes = await axios.get(
    `https://api-m.sandbox.paypal.com/v2/checkout/orders/${transactionId}`,
    { headers: { Authorization: `Bearer ${token}` } }
  );
  const order = orderRes.data;

  // 3. 验证关键参数
  if (order.status === 'COMPLETED' && order.purchase_units[0].amount.currency_code === 'EUR') {
    // 这里可额外核对订单金额是否符合预期
    // 验证通过,存储交易数据
    return { success: true, data: order };
  }
  return { success: false, msg: '交易状态或参数异常' };
}

关键注意事项

  • 绝对不能仅依赖前端回调:前端可被篡改,后端API验证是唯一可信的方式
  • 沙箱与生产环境的API域名不同:沙箱用api-m.sandbox.paypal.com,生产用api-m.paypal.com
  • 商户秘钥需安全存储,禁止暴露在前端代码中

内容的提问来源于stack exchange,提问作者gremo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.26 22:42:36