You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

SagePay VPS协议4.00服务端集成:VPSSignature不匹配问题

排查SagePay VPS Protocol 4.00签名不匹配问题

针对你遇到的VPSSignature不匹配问题,从签名规则和提供的请求/响应数据出发,以下是具体排查方向和验证步骤:

核心排查点

签名不匹配的绝大多数原因是拼接字符串不符合规则,需逐一核对以下细节:

1. 严格遵循字段拼接顺序

必须完全按照给定的顺序拼接字段,MD5对字符顺序极度敏感。正确的字段顺序及对应响应值如下:

1. VPSTxId: {8652345E-5B25-49F1-DD23-1B9CCC2B6545}
2. VendorTxCode: 324234906133500
3. Status: OK
4. TxAuthNo: 34234532
5. VendorName: Vendorname(与请求中Vendor字段完全一致,注意大小写)
6. AVSCV2: SECURITY CODE MATCH ONLY
7. SecurityKey: AZFE2KOSDS
8. AddressResult: NOTMATCHED
9. PostCodeResult: NOTMATCHED
10. CV2Result: MATCHED
11. GiftAid: 0
12. 3DSecureStatus: OK
13. CAVV: Y2c2ZVVBeTRvTUVwVGtpaGVMdzk=
14. AddressStatus: (空值,直接留空)
15. PayerStatus: (空值,直接留空)
16. CardType: VISA
17. Last4Digits: 0006
18. DeclineCode: 00
19. ExpiryDate: 0123
20. FraudResponse: (空值,直接留空)
21. BankAuthCode: 999777
22. ACSTransID: 490ead88-8dc8-4ac4-b40a-fbe1f8a95182
23. DSTransID: 3f06865c-33c1-462c-956d-01f4c55114b5
24. SchemeTraceID: Wkv0Jq8QEYu4DupyW0gG}s2~}N2K~U+7LAMYCVU0vXt2uH0prPJCpY6

2. 空字段处理不能省略

响应中AddressStatus、PayerStatus、FraudResponse为空,拼接时必须保留这些空位置(直接留空字符串),不能跳过字段。例如CAVV后直接接空,再接PayerStatus的空,之后才是CardType。

3. 避免多余空格/特殊字符丢失

  • 拼接时字段之间不能添加任何空格、换行符或分隔符,必须直接连在一起。
  • 确保所有特殊字符(如VPSTxId的大括号、SchemeTraceID中的}、~、+)完整保留,未被转义或截断。

4. MD5编码格式匹配

  • 计算MD5时需使用UTF-8编码(SagePay默认要求)。
  • 最终结果必须转换为大写十六进制字符串,与返回的VPSSignature格式一致。

验证拼接字符串

正确的拼接字符串应为:

{8652345E-5B25-49F1-DD23-1B9CCC2B6545}324234906133500OK34234532VendornameSECURITY CODE MATCH ONLYAZFE2KOSDSNOTMATCHEDNOTMATCHEDMATCHED0OKY2c2ZVVBeTRvTUVwVGtpaGVMdzk==VIS0006000123999777490ead88-8dc8-4ac4-b40a-fbe1f8a951823f06865c-33c1-462c-956d-01f4c55114b5Wkv0Jq8QEYu4DupyW0gG}s2~}N2K~U+7LAMYCVU0vXt2uH0prPJCpY6

将该字符串输入MD5计算器,得到的结果应与返回的N135C007EF1643ABE44CAC12EBD9ED43完全一致。

内容的提问来源于stack exchange,提问作者Jinson John

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.19 05:15:33