我通过 Paytabs Tokenization 方法创建了一个令牌,然后使用生成的令牌再次请求
tran_class: recurring
但我得到
{'code': 422, 'message': 'Unable to process your request', 'trace': 'PMNT0102.65DCFAF6.0002C7A0'}
作为响应
第一次付款请求有效负载
payload = {
"profile_id": PROFILE_ID,
"tran_type": "sale",
"tran_class": "ecom",
"cart_id": cart_id,
"cart_currency": "EUR",
"cart_amount": amount,
"cart_description": "Advertising Services",
"paypage_lang": "en",
"customer_details": customer_details,
"shipping_details": customer_details,
"tokenise": 2,
"callback": "url",
"return": "url"
}
从上面我得到了令牌我保存它以供将来的付款请求,但是当我尝试使用此令牌请求时,我收到错误
{'code': 422, 'message': 'Unable to process your request', 'trace': 'PMNT0102.65DCFAF6.0002C7A0'}
带有令牌的付款请求有效负载
payload = {
"profile_id": PROFILE_ID,
"tran_type": "sale",
"tran_class": "recurring",
"cart_id": cart_id,
"cart_currency": "EUR",
"cart_amount": amount,
"cart_description": "Advertising Services",
"payment_token": payment_token,
"tran_ref": tran_ref,
"callback": "url",
"return": "url"
}
任何人都可以指导我在这里做错了什么
根据提供的代码,在使用 Paytabs 进行定期付款时,看起来出现了几个潜在的问题,这些问题可能导致“无法处理的请求 [422]”错误:
-
tran_class 的使用不正确: 虽然在初始令牌化请求中正确使用了
tran_class: 'ecom'
,但在随后的定期付款请求中,不应在第一次交易后使用tran_class: 'recurring'
。 Paytabs 处理定期付款的方式不同,它依赖于初始令牌化交易中设置。 -
缺少参数: 对于定期付款,Paytabs 通常要求某些特定于定期付款的参数,这些参数在的第二个有效负载中缺失。最重要的是,可能需要包含
recurring_type
(使用“定期”等值)和recurring_period
(指定定期付款频率,例如“每月”)。请参阅 Paytabs 文档,了解确切的必需参数及其可能的值。 -
令牌使用不当: Paytabs 生成的令牌通常特定于交易类型。不能将用于初始销售交易的令牌用于后续的定期付款。相反,初始的成功响应应该返回可以用于设置未来定期付款的定期令牌或 ID。
-
tran_ref 不一致: 确保在定期付款请求中发送的
tran_ref
在的系统中是唯一的,并且与之前的任何交易(包括初始令牌化)不匹配。
建议操作:
-
查看 Paytabs 文档: 彻底咨询 Paytabs API 文档,了解定期付款的具体说明。重点关注与令牌化、定期参数和必需字段相关的部分。
-
确认令牌用途: 验证收到的令牌是否旨在用于定期付款,以及它是否有任何使用限制。
-
使用正确的定期参数: 在的定期付款请求中包含所有必需的定期特定参数,例如
recurring_type
和recurring_period
,如 Paytabs 文档中所述。 -
调试和联系支持: 如果问题仍然存在,请启用详细日志记录以捕获请求和响应,包括标头。这些信息可以帮助识别问题。如果无法自行解决问题,请考虑联系 Paytabs 支持以获得进一步的帮助。
修改后的有效负载示例(仅供说明 - 请参考 Paytabs 文档以获取准确的参数):
payload = {
"profile_id": PROFILE_ID,
"tran_type": "sale",
"cart_id": cart_id, # 确保这是唯一的
"cart_currency": "EUR",
"cart_amount": amount,
"cart_description": "Advertising Services",
"payment_token": recurring_token, # 使用正确的定期令牌
"tran_ref": unique_tran_ref, # 确保这是唯一的
"recurring_type": "periodic", # 根据 Paytabs 规范调整
"recurring_period": "monthly", # 根据 Paytabs 规范调整
"callback": "your_callback_url",
"return": "your_return_url"
}
请记住用的实际端点、令牌和基于 Paytabs 文档的正确值的唯一
tran_ref
替换占位符。
通过仔细审查 Paytabs 文档和实施这些调整,应该能够解决“无法处理的请求 [422]”错误,并成功处理定期付款。
标签:python,payment-gateway,tokenize,paytabs From: 78066187