如何检测Google Pay所使用的Adyen/Chase支付网关配置
检测Google Pay支付配置类型的方法
我方合作伙伴运营多款支持Google Pay支付的应用及遗留网站(含难以更新的遗留应用和使用Google Pay Javascript SDK的遗留站点),这些站点通过支付服务提供商(PSP)提供的信息初始化SDK,目前存在两种配置:
Adyen配置:
"tokenizationSpecification": { "type": "PAYMENT_GATEWAY", "parameters": { "gateway": "adyen", "gatewayMerchantId": "YOUR_MERCHANT_ACCOUNT_NAME" } }
Chase配置:
"tokenizationSpecification": { "type": "PAYMENT_GATEWAY", "parameters": { "gateway": "chase", "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID" } }
合作伙伴会向我方发送如下Payload:
{ "encryptedPayload": "{\"encryptedMessage\":\"dDkzUfxxxxxW/8K8\"}", "encryptedPaymentHeader": { "ephemeralPublicKey": "BCxxxx=" }, "signature": "MEQCIQxxxxGQbxi7rJA==", "protocolVersion": "ECv1" }
问题
请问是否有办法检测该支付请求使用的是上述哪一种配置?我方已尝试以下两种方式:
- 查找静态参数
- 解码Payload内容
可行方案
从你提供的加密Payload本身来看,它不会直接包含SDK初始化时的gateway标识——Google Pay ECv1加密仅对支付敏感数据进行加密,不会携带配置层面的信息。可以通过以下几种方式实现检测:
1. 关联请求上下文做映射
- 针对网站请求:维护一张域名/路径与PSP配置的对应表,后端接收Payload时,根据请求的来源域名或接口路径直接匹配对应的配置类型(比如Adyen配置的站点固定使用
xxx-adyen.com域名)。 - 针对应用请求:要求合作伙伴在发送Payload时额外添加一个极简标识字段(比如
"pspType": "adyen"或"chase"),这个改动对遗留应用的影响极小,远小于更新SDK配置的成本。
2. 解密Payload后识别令牌特征
ECv1加密的Payload可以用你的商户私钥解密,解密后的明文会包含支付令牌信息,不同PSP的令牌格式有明显区别:
- Adyen生成的令牌通常以
adyenjs_作为前缀 - Chase的令牌则符合其网关专属的格式规范(比如特定长度、前缀或结构)
通过识别令牌的格式特征,即可判断对应的PSP配置。
3. 匹配gatewayMerchantId
如果能获取合作伙伴的gatewayMerchantId列表(Adyen的是商户账户名,Chase的是网关商户ID),解密Payload明文后可以找到gatewayMerchantId字段,直接与列表匹配即可确定配置类型。
内容的提问来源于stack exchange,提问作者Kalle
相关产品推荐
相关产品推荐

