Onerway
POST

支付结果通知

回调地址
该回调通知用于接收 TXN / SALE 支付交易的服务端结果,并通过 transactionId 和 paymentId 关联支付链路。

除以下字段外,全部回调报文字段均参与验签:

回调报文字段

notifyType
通知类型,标识本次 Webhook 的业务大类。
约束
取值
普通支付结果通知固定返回 TXN。
transactionId
Onerway 为本次交易生成的交易号,用于跟踪、查询和幂等处理。
约束
规则
该值为大整数样式字符串;JavaScript 系统中应按字符串保存和比对,避免精度丢失。
paymentId
支付意图 ID,用于按支付意图维度关联同一支付链路。
约束
一致性
不要与 transactionId 混用;transactionId 表示具体交易,paymentId 表示支付意图。
txnType
交易操作类型,表示本次通知对应的交易动作。
可选值
SALE
支付。
约束
取值
本文覆盖普通支付结果,固定返回 SALE。
merchantNo
Onerway 分配的商户号,标识接收该通知的商户账户。
merchantTxnId
商户为本次交易生成的商户交易号,可用于商户侧对账、去重和关联原始订单。
responseTime
Onerway 生成本次通知结果的时间,格式为 yyyy-MM-dd HH:mm:ss。
txnTime
交易发生或交易状态形成的时间,格式为 yyyy-MM-dd HH:mm:ss。
txnTimeZone
txnTime 使用的时区偏移,格式为 ±HH:mm。
orderAmount
原订单金额,以 orderCurrency 表示。
约束
规则
金额以 decimal string 返回,商户系统应避免用二进制浮点数直接计算金额。
orderCurrency
原订单币种,ISO 4217 三位字母货币代码。
status
当前交易处理状态。
可选值
S
成功;交易已成功完成。
F
失败;交易被拒绝或处理失败。
N
已取消;交易未在有效期内完成支付(如收银台超时未付)而关闭。
约束
规则
S 表示交易成功;F 表示交易失败或被拒绝;N 表示交易已取消。商户应以本字段判断当前 transactionId 的交易结果,并结合 paymentStatus 判断支付意图层状态。
paymentStatus
支付意图级状态,用于读取同一 paymentId 下支付意图的生命周期状态。
可选值
S
支付意图达到最终成功。
O
支付意图保持开放,可继续尝试。
N
支付意图已关闭:超时未完成支付,包括下单后未支付关单与多次尝试均失败后关单。
eci
电子商务指示符(ECI),表示交易相关的 3DS 认证状态。
cardBinCountry
卡 BIN 所属国家 / 地区,ISO 3166-1 alpha-2 两位字母代码。
交易结果原因对象,通知中按 JSON string 承载。
sign
兼容保留的签名字符串:仅使用第一个启用的密钥计算,密钥轮换期间可能与商户配置的密钥不一致;请改用 X-Rh-Signature header 验签。
约束
规则
验签时不要把 sign 自身作为待签名字段。
paymentMethod
本次交易使用的支付方式或卡品牌。
metaData
商户自定义交易数据,用于商户侧关联订单、渠道或业务上下文;通知中按请求传入值返回。
walletTypeName
钱包类型名称。
可选值
GooglePay
Google Pay 钱包。
ApplePay
Apple Pay 钱包。
EXPR
钱包内资金来源:银行卡。
channelRequestId
支付渠道侧的请求标识,可用于渠道侧对账或排查。
订单商品信息列表,通知中按 JSON string 承载。
支付方式详情对象;卡交易的明细位于 card 子对象。

回调示例

{
  "notifyType": "TXN",
  "transactionId": "replace_with_transaction_id",
  "paymentId": "replace_with_payment_id",
  "txnType": "SALE",
  "merchantNo": "replace_with_merchant_no",
  "merchantTxnId": "replace_with_merchant_transaction_id",
  "responseTime": "2026-06-25 13:52:23",
  "txnTime": "2026-06-25 13:51:10",
  "txnTimeZone": "+08:00",
  "orderAmount": "9.99",
  "orderCurrency": "USD",
  "status": "S",
  "paymentStatus": "S",
  "eci": "5",
  "cardBinCountry": "US",
  "reason": "{\"respCode\":\"20000\",\"respMsg\":\"Success\"}",
  "sign": "replace_with_sha256_signature",
  "paymentMethod": "MASTERCARD",
  "metaData": "{\"orderSource\":\"web\",\"campaignId\":\"spring_sale\"}",
  "channelRequestId": "replace_with_channel_request_id"
}

应答说明

成功接收并受理支付结果 webhook 后返回 HTTP 200,并在响应体中原样返回收到的 transactionId。

应答正文示例

replace_with_transaction_id