如何对比JSON格式请求体与响应体?附验证示例
如何验证支付请求对应的响应体
嘿,我来帮你梳理下怎么针对这个支付请求体去验证响应体,步骤清晰好上手:
首先先明确咱们的请求体结构(格式化后的JSON更清晰):
{ "Details": { "PaymentRequested": { "Transaction_Reference": "string", "Final_Reference": "string", "Payment Details": { "Amount": "0.10", "Currency": "INR" } } } }
接下来分几个维度去验证响应体:
字段存在性检查:
逐层确认响应体里的所有预期字段都存在,不能有缺失。比如必须有Details层级,下面要包含PaymentRequested,再往下的Transaction_Reference、Final_Reference、Payment Details(以及它下面的Amount和Currency)一个都不能少,嵌套结构要完整。字段类型与格式验证:
每个字段的类型要和预期匹配:Transaction_Reference和Final_Reference必须是字符串类型,如果业务有格式要求(比如固定长度、前缀规则),也要验证是否符合;Amount示例里是字符串,但要确认是否符合业务规则(比如是否允许小数位数、是否是正数);Currency必须是合法的货币代码(比如示例里的INR),不能出现无效值。
业务逻辑一致性验证:
这部分是核心,要确保响应和请求的业务逻辑匹配:Amount的数值必须和请求中发起的金额完全一致,不能多也不能少;Currency要和请求的币种保持统一,不能出现请求是INR但响应是USD的情况;- 如果
Transaction_Reference是请求传入的标识,响应里要原样返回;Final_Reference如果是支付系统生成的唯一标识,要确保它的唯一性和有效性。
举个实际验证的例子:
假设收到的响应体是这样的:
{ "Details": { "PaymentRequested": { "Transaction_Reference": "TXN20240501001", "Final_Reference": "PAYFIN202400001", "Payment Details": { "Amount": "0.10", "Currency": "INR" } } } }
咱们可以这样验证:
- 快速扫一遍所有字段,确认没有缺失;
- 检查
Amount是"0.10",和请求的金额一致;Currency是INR,符合预期; - 两个Reference字段都是符合业务格式的字符串,没有乱码或无效值。
内容的提问来源于stack exchange,提问作者Ven




