gpt4 book ai didi

node.js - CreateRecurringPaymentsProfile 后 PayPal SetExpressCheckout 停止工作

转载 作者:太空宇宙 更新时间:2023-11-03 16:31:11 24 4
gpt4 key购买 nike

我正在尝试使用 Express Checkout NVP API 实现定期付款。在成功流程 SetExpressCheckout -> 重定向到 PayPal 并接受 -> GetExpressCheckoutDetails -> CreateRecurringPaymentsProfile 后,当我尝试通过调用 SetExpressCheckout 获取新 token 时(假设当我尝试为另一个用户重复流程时),我收到错误消息:

{ TIMESTAMP: '2014-05-14T09:09:17Z',
CORRELATIONID: '9072df3650d68',
ACK: 'Failure',
VERSION: '113',
BUILD: '10958405',
L_ERRORCODE0: '10413',
L_SHORTMESSAGE0: 'Transaction refused because of an invalid argument. See additional error messages for details.',
L_LONGMESSAGE0: 'The totals of the cart item amounts do not match order amounts.',
L_SEVERITYCODE0: 'Error' }

如果我从请求中删除 PAYMENTREQUEST_0_AMT: 0,我会收到另一个错误,但这个错误带有 token (每个请求都相同):

{ TOKEN: 'EC-2U787650918701539',
TIMESTAMP: '2014-05-14T09:13:09Z',
CORRELATIONID: 'd3f276219cab9',
ACK: 'Failure',
VERSION: '113',
BUILD: '10958405',
L_ERRORCODE0: '10410',
L_SHORTMESSAGE0: 'Invalid token',
L_LONGMESSAGE0: 'Invalid token.',
L_SEVERITYCODE0: 'Error' }

因此 PayPal 给了我一个 token ,但说它无效。我想这不是参数或其值的问题,而是 token 的问题。出于某种原因,PayPal 在第一次成功流程后停止发出新 token 以响应 SetExpressCheckout 请求。

完整流程:

1) 设置快捷结账

USR: [...],
PWD: [...],
SIGNATURE: [...],
VERSION: 113,
METHOD: 'SetExpressCheckout',
PAYMENTREQUEST_0_AMT: 0,
MAXAMT: 5.0,
L_BILLINGTYPE0: 'RecurringPayments',
L_BILLINGAGREEMENTDESCRIPTION0: [...],
REQCONFIRMSHIPPING: 0,
NOSHIPPING: 1,
BRANDNAME: [...],
EMAIL: [...],
LANDINGPAGE: 'Login',
cancelUrl: [...],
returnUrl: [...]

2) 重定向到 https://www.sandbox.paypal.com/cgi-bin/webscr?cmd=_express-checkout&token=TOKEN,用户在此处接受计费协议(protocol)。

3) GetExpressCheckoutDetails(第 1 步中的凭据、METHOD 和 TOKEN)。

4) 创建经常性付款资料

USR: [...],
PWD: [...],
SIGNATURE: [...],
VERSION: 113,
METHOD: 'CreateRecurringPaymentsProfile',
TOKEN: [from the step 1],
PAYERID: [from the step 3],
PROFILESTARTDATE: [ISO date string],
DESC: [...],
BILLINGPERIOD: 'Month',
BILLINGFREQUENCY: 1,
AMT: 5.0,
AUTOBILLOUTAMT: 'AddToNextBilling',
CURRENCYCODE: 'USD',
MAXFAILEDPAYMENTS: 1,
L_PAYMENTREQUEST_0_ITEMCATEGORY0: 'Digital',
L_PAYMENTREQUEST_0_NAME0: [...],
L_PAYMENTREQUEST_0_AMT0: 5.0,
L_PAYMENTREQUEST_0_QTY0: 1

就是这样。我使用 node.js request完成请求。

最佳答案

您确定您第二次提供的请求是正确的吗?似乎一定发生了一些您不知道的事情,或者某些数据必须包含在我们在这里没有看到的请求中……??也许您的日志是从原始请求(通过 session 或其他方式)保存的,但第二个失败的请求实际上是一个新请求,带有附加参数,该请求将发送到 PayPal,而不是保存在您的日志中的内容..??

当我 replicate your request on my test server无论我重复多少次,它都能按预期工作。

您得到的有关购物车总数的错误仅在以下情况不正确时才会出现。

AMT = ITEMAMT + SHIPPINGAMT + HANDLINGAMT + TAXAMT

当我向同一个请求添加商品,但故意不加价时,我收到错误消息,显示您正在第二次通过。你可以see that here .

所以奇怪的是,您第二次显示的请求除了 MAXAMT 之外根本没有任何项目或数量信息,就像第一次一样。不过,您发送的金额为 0.00,这意味着如果将运费、手续费、税金或任何项目添加了价格,您最终会收到错误消息。

您确定这些参数之一没有以某种方式包含在您的日志未以某种方式捕获的请求中..?这是传递到您的 HTTP 请求中的确切内容的原始转储吗?

事实是 PayPal 的服务器必须看到会导致它触发此错误的某些内容,而且我从未见过该错误,因为它不是对这些值的简单计算错误。

如果您无法追踪到任何类似的东西,您需要将其提交给 PayPal MTS .不过,我什至懒得解释所有关于第二次绕行的信息。只需向他们提供失败的原始 API 请求和响应,并在您甚至没有在请求中包含任何金额或项目详细信息时质疑您收到此类错误的事实。

关于node.js - CreateRecurringPaymentsProfile 后 PayPal SetExpressCheckout 停止工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23650451/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com