我正在创建一个有关结帐付款信息的部分,客户应在其中输入其银行卡详细信息,以便在市场损失 (*) 的情况下,我们可以稍后通过 PayPal 在该卡上向他收费。 我正在使用 PayPal SDK 来实现此功能,以保存 cPayPalards 并稍后收费,但我遇到了“createVaultSetupToken”回调的问题。我创建了前端和后端逻辑,并调用后端来创建设置令牌和 PayPal API(下面的 FE 代码,BE API 请求就像文档 paymnet_source 中带有空卡对象)。
createVaultSetupToken: async (data) => {
const result = await fetch("/PayPalExtended/setup/token", { method: "POST" })
var jsonRes = await result.json()
const { id } = jsonRes;
return id;
},
此操作成功,显示 201 Created,我取回了令牌,并将其返回给回调,并且 SDK 从未调用 OnApprove 回调,因为我收到来自 PayPal SDK 的错误。
graphql_UpdateVaultSetupToken_error
Object { err: "Cannot get vault - no customer id found in id token", timestamp: "1703524904796", referer: "www.sandbox.paypal.com", sdkCorrelationID: "f137663e5663e", sessionID: "sessionID", clientID: "clientID", env: "sandbox" }
card-field:40:65202
OnError 回调记录以下内容:
Something went wrong: Error: Cannot get vault - no customer id found in id token
https://www.sandbox.paypal.com/smart/card-field?type=cvv&clientID=clientID&sessionID=sessionID&clientMetadataID=uid_a55f4eb2d9_mtc6mdm6ntu&cardFieldsSessionID=cardFieldsSessionID&env=sandbox&debug=false&locale.country=GB&locale.lang=en&sdkMeta=eyJ1cmwiOiJodHRwczovL3d3dy5wYXlwYWwuY29tL3Nkay9qcz9jbGllbnQtaWQ9QVFIR2Vna3lsX2RjRmdnVmoxODFOZG80cG5id3U1YmhwaFRyRFRKWXVpdXBHZlE2RVVvaWtWQjV3WTRJMXZzTi1VeldFVVFTNU5ubnVsNWgmY3VycmVuY3k9VVNEJmludGVudD1hdXRob3JpemUmY29tbWl0PWZhbHNlJnZhdWx0PXRydWUmZGVidWc9ZmFsc2UmY29tcG9uZW50cz1idXR0b25zLGNhcmQtZmllbGRzIiwiYXR0cnMiOnsiZGF0YS1wYXJ0bmVyLWF0dHJpYnV0aW9uLWlkIjoiTm9wQ29tbWVyY2VfUFBDUCIsImRhdGEtdWlkIjoidWlkX3pqdnRodHZsZmFxaW9udGdhcGxyeHl1bnpsemp6cyJ9fQ&disable-card=¤cy=USD&intent=authorize&commit=false&vault=true&sdkCorrelationID=f137663e5663e:40
我使用的卡来自用于高级结帐的卡测试页面:
Number: 2223000048400011
date: 11/25
CCV:123
Name: Mark Thomas
来自 API/我的后端的响应:
{
"jsonRes ": {
"id": "2DV308********",
"payment_source": {
"Card": null,
"Token": null
},
"customer": {
"id": "uCEH******"
},
"status": "CREATED"
}
}
PayPal 脚本源:
https://www.paypal.com/sdk/js?client-id=clientId&currency=USD&intent=authorize&commit=false&vault=true&debug=false&components=buttons,card-fields" data-partner-attribution-id="NopCommerce_PPCP" data-page-type="checkout" data-user-id-token="data-user-id"
不知道是什么问题,几乎尝试了所有方法:) .
* 由于这是一种电汇付款方式,因此可能会失败,或者客户可能在一段时间后停止交易,我们有这项政策,如果发生这种情况,我们将向客户收取信用卡损失的费用。
几乎什么都试过了。
所以,回答这个脚本 src:
https://www.paypal.com/sdk/js?client-id=clientId¤cy=USD&intent=authorize&commit=false&vault=true&debug=false&components=buttons,card-fields" data-partner-attribution-id="NopCommerce_PPCP “ data-page-type =“结帐” data-user-id-token =“data-user-id”
变数太多。特别是 data-user-id-token 让我很怀疑,但其意图也可能是保管库的问题。保存付款方式文档中的较短的 SDK src 似乎可以工作:
https://www.paypal.com/sdk/js?components=card-fields&client-id=CLIENT-ID