我几天来一直在尝试保存我网站用户的付款方式,这样只需在他们打算购买时登录,而无需输入财务信息,但我发现没办法那样做。为了保存支付来源,我首先需要创建一个设置令牌,然后使用该设置令牌来交换永久支付令牌,我可以将其存储在数据库中。我正在使用 PayPal 订单 API 及其高级结帐系统,高级结帐的工作方式是,当用户输入其财务信息进行收费时,大部分工作不是在我的服务器端处理,而是在我的服务器端处理。其中由 PayPal 在客户端处理。在 PayPal 文档中,它说捕获订单响应将返回一个付款令牌,我可以将其存储在我的数据库中,但似乎只有在我不使用高级结账时才会这样做。
所以我想知道是否有某种方法可以让捕获订单响应包含支付令牌,即使在使用高级结帐时也是如此,因为 PayPal 的文档表明我需要将其包含在捕获请求的正文中:
"paypal": {
"attributes": {
"vault": {
"store_in_vault": "ON_SUCCESS",
"usage_type": "MERCHANT"
}
}
}
但是当我将此代码插入到捕获订单请求正文中时,它告诉我我需要返回 URL 或取消 URL,但提前结帐将不起作用,因为它在客户端处理验证!整个事情变得一团糟。
但基本上我要求一种简单的方法来使用订单和高级结帐创建设置令牌或支付令牌,因为否则整个事情会变得非常混乱。
我已经尝试了一切,根据我的经验,没有办法做到这一点,以便我可以创建设置令牌或支付令牌,并进行高级结帐。
您是否尝试过按照“保存付款方式”文档进行操作?对于高级,attributes
进入
card
对象。curl -v -X POST https://api-m.sandbox.paypal.com/v2/checkout/orders \
-H "Content-Type: application/json" \
-H "Authorization: Bearer 'ACCESS-TOKEN'" \
-d '{
"intent": "CAPTURE",
"purchase_units": [{
"reference_id": "d9f80740-38f0-11e8-b467-0ed5f89f718b",
"amount": {
"currency_code": "USD",
"value": "100.00"
}
}],
"payment_source": {
"card": {
"name": "Firstname Lastname",
"billing_address": {
"address_line_1": "123 Main St.",
"address_line_2": "Unit B",
"admin_area_2": "Anytown",
"admin_area_1": "CA",
"postal_code": "12345",
"country_code": "US"
},
"attributes": {
"vault": {
"store_in_vault": "ON_SUCCESS"
},
"verification": {
"method": "SCA_ALWAYS"
}
}
}
}
}
PayPal 结帐是您应该并行实施的,因为所有高级集成还需要将 PayPal 作为付款选项,作为买家的平等选择(这是在用户协议中)。