基于Adyen网关实现Google Pay循环支付的后端对接疑问
Adyen + Google Pay 循环支付实现指南
核心结论
不需要创建0美元支付请求,关键是在Google Pay请求中声明循环支付意图,同时配合Adyen侧的recurring参数配置,就能实现后续的自动扣款。
1. Google Pay侧的关键请求配置
你不需要特殊token,只需要在PaymentDataRequest中明确标记交易为订阅/循环类型,让Google Pay和发卡行知晓后续会有重复扣款。核心配置如下:
关键JSON片段:
{ "apiVersion": 2, "apiVersionMinor": 0, "allowedPaymentMethods": [ { "type": "CARD", "parameters": { "allowedAuthMethods": ["PAN_ONLY", "CRYPTOGRAM_3DS"], "allowedCardNetworks": ["AMEX", "DISCOVER", "MASTERCARD", "VISA"] }, "tokenizationSpecification": { "type": "PAYMENT_GATEWAY", "parameters": { "gateway": "adyen", "gatewayMerchantId": "你的Adyen商户ID" } } } ], "transactionInfo": { "totalPrice": "9.99", // 首笔扣款金额,免费试用可设为"0.00" "totalPriceStatus": "FINAL", // 固定金额用FINAL,可变金额用NOT_CURRENTLY_KNOWN "currencyCode": "USD" }, "transactionIntent": "SUBSCRIPTION", // 重点:标记为订阅/循环支付 "merchantInfo": { "merchantName": "你的商户名称" } }
transactionIntent: "SUBSCRIPTION"是核心,它告诉Google Pay这笔交易是循环扣款的前置授权,返回的token和一次性支付格式一致,但具备后续扣款的权限。- 如果是免费试用场景,
totalPrice设为"0.00"即可验证支付方式有效性,不会产生实际扣款。
2. Adyen侧的配合配置
拿到Google Pay返回的token后,向Adyen的/payments接口发起请求时,必须添加recurring字段,让Adyen存储该支付方式用于后续扣款:
Adyen支付请求示例:
{ "amount": { "value": 999, // 金额单位为分(9.99美元=999) "currency": "USD" }, "paymentMethod": { "type": "googlepay", "googlePayToken": "从Google Pay获取的token" }, "recurring": { "contract": "RECURRING" // 声明为循环支付合约 }, "reference": "订阅订单ID_20240520", "merchantAccount": "你的Adyen商户账户" }
- 成功支付后,Adyen会返回
recurringDetailReference,后续发起循环扣款时,直接使用这个reference调用/payments接口,无需再调用Google Pay。 - 如果你需要支持一键支付+循环扣款,可将
contract设为"ONECLICK,RECURRING"。
常见误区澄清
- 不需要特殊token:Google Pay不会返回专门的循环支付token,只要请求中标记了
SUBSCRIPTION意图,普通token就具备循环扣款权限。 - 0美元请求非必须:只有当你需要验证支付方式但不扣款时才用,正常场景直接发起首笔扣款即可完成授权。
内容的提问来源于stack exchange,提问作者Maroš Šeleng
相关产品推荐
相关产品推荐

