如何对Amazon Pay的get checkout session接口请求进行授权?
CORS问题解决
你遇到的跨域错误是Amazon Pay API的正常安全限制,所有需要携带签名的接口不允许从浏览器端直接发起请求,必须将调用逻辑迁移到你的后端服务,流程改为:前端请求你自己的后端接口,后端服务再向Amazon Pay API发起请求,即可规避CORS错误,同时避免商户密钥泄露的安全风险。
疑问解答
1. authorization字符串的获取与格式要求
- 该字段为请求签名,不可直接获取固定值,需要你使用Amazon Pay商户后台分配的私钥,按照官方指定的签名规则生成,标准格式为
AMZN-PAY-RSASSA-PSS-V2 <Base64编码后的签名内容> - 无需手动实现签名逻辑,直接使用对应语言的Amazon Pay官方服务端SDK即可自动生成合法的authorization头,避免手写逻辑出错。
2. 日期格式要求与生成方法
- 该日期头为必填参数,必须使用UTC时间,格式为
YYYYMMDD'T'HHMMSS'Z'的ISO 8601精简格式,你之前在前端直接传入new Date()的本地时间格式完全不符合要求。 - 不同后端语言的快速生成方法:
- Node.js:
new Date().toISOString().replace(/[:-]|\.\d{3}/g, '') - Python:
datetime.datetime.utcnow().strftime('%Y%m%dT%H%M%SZ') - Java:使用
DateTimeFormatter.ofPattern("yyyyMMdd'T'HHmmss'Z'").withZone(ZoneOffset.UTC)格式化当前UTC时间即可
- Node.js:
额外注意
绝对不要将签名生成、密钥存储等逻辑放在前端运行,会导致你的商户私钥泄露,造成资金损失。
内容的提问来源于stack exchange,提问作者Digglit
相关产品推荐
相关产品推荐

