.NET Core项目无按钮服务端重定向集成Amazon Pay方案咨询
Amazon Pay 服务端重定向集成方案说明
方案可行性
完全可以使用和PayPal类似的拼接参数重定向方案集成,Amazon Pay 官方提供了Hosted Checkout模式,无需渲染官方前端按钮,直接通过服务端生成带签名的重定向链接即可完成支付流程。
请求端点
根据所属区域选择对应端点:
- 北美区
- 沙箱环境:
https://payments-sandbox.amazon.com/apa/checkout/v2/hostedCheckout - 生产环境:
https://payments.amazon.com/apa/checkout/v2/hostedCheckout
- 沙箱环境:
- 欧洲区
- 沙箱环境:
https://payments-sandbox-eu.amazon.com/apa/checkout/v2/hostedCheckout - 生产环境:
https://payments-eu.amazon.com/apa/checkout/v2/hostedCheckout
- 沙箱环境:
- 日本区
- 沙箱环境:
https://payments-sandbox-jp.amazon.com/apa/checkout/v2/hostedCheckout - 生产环境:
https://payments-jp.amazon.com/apa/checkout/v2/hostedCheckout
- 沙箱环境:
参数配置调整
你现有代码的参数逻辑基本正确,只需做少量调整:
- 保留的有效参数:
accessKey、sellerId、lwaClientId:身份验证参数,替换为你自己的正式值即可returnURL:你现有代码里的参数名是return,需改为returnURL,值为支付成功后的回调地址,必须提前在Amazon Pay卖家后台的安全域名列表中配置cancelReturnURL:取消支付后的回调地址,同样需要提前在后台配置域名sellerOrderId、currencyCode、paymentAction:订单核心参数,你的配置逻辑正确shippingAddressRequired:是否需要邮寄地址,设置为true/false即可- 邮寄地址相关参数(
first_name/last_name/address1等):如果shippingAddressRequired设为true,需要完整传入对应参数,否则可以不传
- 需要补充的必填参数:
你代码中提到的AddOrderTotalParameters方法需要补充amount参数,值为订单总金额的字符串格式(如"129.99"),和currencyCode对应。 - 需要删除的无效参数:
no_shipping、address_override是PayPal专属参数,Amazon Pay不识别,直接删除即可。
签名逻辑验证
你现有签名逻辑符合Amazon Pay要求:
- 先按ASCII码从小到大排序所有业务参数
- 用HMAC-SHA256算法,以你的Amazon Pay秘钥为密钥生成签名
- 签名值做URL编码后作为
signature参数加入请求,注意排序和签名时不要包含signature参数本身,你的现有代码逻辑符合要求。
注意事项
- 所有参数值必须使用UTF-8编码,避免出现乱码导致签名验证失败
- 如果是虚拟商品无需邮寄,
shippingAddressRequired设为false即可,不需要传任何地址相关参数 paymentAction设置为AuthorizeAndCapture会在用户支付后直接扣款,如果需要先授权后续发货再扣款,可以改为Authorize
内容的提问来源于stack exchange,提问作者ebk
相关产品推荐
相关产品推荐

