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

如何在JS中通过PayPal Orders API结合高级结账创建设置/支付令牌

解决方案:PayPal高级结账+Orders API保存支付方式

明确一点:用高级结账(Smart Payment Buttons)时,完全可以通过Orders API捕获订单时获取可存储的payment token,且不会破坏客户端流程,核心是在创建订单阶段就配置Vault参数,而非仅在捕获环节添加。

步骤1:创建订单时配置Vault属性

不要只在捕获请求里加vault配置,而是在POST /v2/checkout/orders 创建订单的请求体中,同时指定intent为CAPTURE,并在payment_source的paypal节点下添加vault参数,无需设置return_url/cancel_url(高级结账会自动处理前端流程):

{
  "intent": "CAPTURE",
  "purchase_units": [
    {
      "amount": {
        "currency_code": "USD",
        "value": "10.00"
      }
    }
  ],
  "payment_source": {
    "paypal": {
      "attributes": {
        "vault": {
          "store_in_vault": "ON_SUCCESS",
          "usage_type": "MERCHANT"
        }
      }
    }
  }
}

步骤2:前端高级结账流程保持原样

前端依旧用PayPal JS SDK渲染按钮,不用额外配置return/cancel URL,正常走客户端授权流程:

paypal.Buttons({
  createOrder: function(data, actions) {
    return fetch('/api/create-order', {
      method: 'POST',
      headers: {
        'Content-Type': 'application/json'
      }
    }).then(res => res.json()).then(orderData => orderData.id);
  },
  onApprove: function(data, actions) {
    return actions.order.capture().then(details => {
      // 从捕获响应里提取payment token
      const paymentToken = details.purchase_units[0].payments.captures[0].payment_source.paypal.token_id;
      // 把token存入数据库
    });
  }
}).render('#paypal-button-container');

步骤3:提取并存储Payment Token

订单捕获成功后,响应的purchase_units[0].payments.captures[0].payment_source.paypal节点下会返回token_id,这就是需要存入数据库的永久payment token,不用额外创建setup token再兑换。

常见问题处理

  • 若仍出现要求return_url的错误:检查创建订单时是否误设置了application_context里的return_url/cancel_url,高级结账模式下不需要这些参数,PayPal前端会自动处理跳转。
  • 确保账号已开启Vault功能:登录PayPal商家后台,确认Vault服务已激活(部分地区需申请开通)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.23 23:13:15