You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

如何对比JSON格式请求体与响应体?附验证示例

如何验证支付请求对应的响应体

嘿,我来帮你梳理下怎么针对这个支付请求体去验证响应体,步骤清晰好上手:

首先先明确咱们的请求体结构(格式化后的JSON更清晰):

{
  "Details": {
    "PaymentRequested": {
      "Transaction_Reference": "string",
      "Final_Reference": "string",
      "Payment Details": {
        "Amount": "0.10",
        "Currency": "INR"
      }
    }
  }
}

接下来分几个维度去验证响应体:

  • 字段存在性检查
    逐层确认响应体里的所有预期字段都存在,不能有缺失。比如必须有Details层级,下面要包含PaymentRequested,再往下的Transaction_ReferenceFinal_ReferencePayment Details(以及它下面的AmountCurrency)一个都不能少,嵌套结构要完整。

  • 字段类型与格式验证
    每个字段的类型要和预期匹配:

    • Transaction_ReferenceFinal_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"
      }
    }
  }
}

咱们可以这样验证:

  1. 快速扫一遍所有字段,确认没有缺失;
  2. 检查Amount是"0.10",和请求的金额一致;Currency是INR,符合预期;
  3. 两个Reference字段都是符合业务格式的字符串,没有乱码或无效值。

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

火山引擎 最新活动