Amazon Pay Checkout持续返回InvalidRequest错误排查请求
针对你遇到的问题,结合代码细节,整理以下排查点:
Merchant ID 未替换真实值
代码中merchantId: 'merchant_id'是占位符,必须替换为Amazon Pay后台获取的真实Merchant ID,这个ID和Store ID是不同的,要确保对应欧洲区账户。Payload JSON 输出存在转义问题
直接用<?= $ap_info['payload_json'] ?>把JSON字符串输出到JS里,会导致双引号冲突,破坏Payload格式。改成下面的写法,通过PHP的json_encode()做转义处理:createCheckoutSessionConfig: { payloadJSON: <?= json_encode($ap_info['payload_json']) ?>, signature: '<?= $ap_info['signature'] ?>', algorithm: 'AMZN-PAY-RSASSA-PSS-V2' }私钥路径与权限异常
确认$GLOBALS['private_key']指向的PEM文件路径正确,用绝对路径更稳妥;同时要保证Web服务器进程能读取该文件,权限不足会导致签名生成失败,进而触发InvalidRequest。签名算法兼容性问题
虽然代码里指定了AMZN-PAY-RSASSA-PSS-V2,但部分旧账户可能默认只支持AMZN-PAY-RSA-SHA256,可以尝试切换算法测试是否解决问题。Store ID 与区域不匹配
检查$GLOBALS['store_id']是否是欧洲区(EU)账户对应的Store ID,必须和配置的region: 'EU'完全对应,跨区域的Store ID会导致请求无效。返回URL 未授权或不可访问
checkoutReviewReturnUrl设置的地址必须是已在Amazon Pay后台授权的HTTPS域名,且地址本身可正常访问,未授权或无法访问的URL会被Amazon Pay拒绝。
内容的提问来源于stack exchange,提问作者Hery

