网关集成
#
1. 接口说明#
请求URL所有接口的URL实际请求地址为支付网关地址 + 接口URL
专属的支付网关地址可联系Ksher申请获取
#
响应 HTTP Status CodeHTTP 状态码为 200 时, 响应中包含 error_code 和 error_message 字段, 表示此次请求结果
创建订单
, 查询订单
, 退款
调用成功时接口都返回订单详情
HTTP 状态码 | 说明 |
---|---|
200 | 请求成功 |
400 | 请求参数格式校检失败 |
401 | 请求未授权 |
403 | 没有权限 |
404 | 请求资源不存在 |
400 响应示例
#
2. 网站支付/H5支付#
创建订单#
APIURL | /api/v1/redirect/orders |
---|---|
Method | POST |
Content-Type | application/json |
#
请求参数#
Body参数名称 | 位置 | 类型 | 必选 | 说明 |
---|---|---|---|---|
merchant_order_id | body | string | 是 | 商户端使用的唯一订单号 |
amount | body | number | 是 | 订单金额(分) |
redirect_url | body | string | 是 | 用户端支付完成要重定向的url |
redirect_url_fail | body | string | 是 | 用户端支付完成或取消后要重定向的url |
note | body | string | 否 | 订单备注 |
timestamp | body | string | 是 | 时间戳 |
mid | body | string | 否 | 此订单的商户ID,仅当同一帐户下有多个子商户时才有效。 |
provider | body | string | 否 | 支付网关, 可选值( 'th', 'ph', 'my') |
channel | body | string | 否 | 支付网关对应的支付通道 |
signature | body | string | 是 | 请求签名 |
请求Body示例
#
响应结果error_code 为 SUCCESS 时, 创建订单成功, 此时接口返回订单详情信息, 订单详情字段说明见下方订单详情
reference 为支付地址或对应支付渠道的订单号
响应成功示例
响应失败示例(订单号重复
#
查询订单#
APIURL | /api/v1/redirect/orders/{order_id} |
---|---|
Method | GET |
#
请求参数名称 | 位置 | 类型 | 必选 | 说明 |
---|---|---|---|---|
order_id | path | string | 是 | 商户端使用的唯一订单号( 创建订单时的 merchant_order_id |
mid | query | string | 否 | 此订单的商户ID,仅当同一帐户下有多个子商户时才有效。 |
provider | query | string | 否 | 支付网关 |
signature | query | string | 是 | 请求签名 |
timestamp | query | string | 是 | 时间戳 |
请求示例
#
响应结果查询订单可结合场景判断 error_code 以确认结果, 如未支付的订单, 响应的 error_code 为 "PENDING"
响应成功示例
#
发起退款#
APIURL | /api/v1/redirect/orders/{order_id} |
---|---|
Method | PUT |
Content-Type | application/json |
#
请求参数名称 | 位置 | 类型 | 必选 | 说明 |
---|---|---|---|---|
order_id | path | string | 是 | 商户端使用的唯一订单号( 创建订单时的 merchant_order_id |
#
Body参数名称 | 位置 | 类型 | 必选 | 说明 |
---|---|---|---|---|
refund_order_id | body | string | 是 | 不限格式, 商户端使用的唯一的退款订单号 |
signature | body | string | 是 | 请求签名 |
timestamp | body | string | 是 | 时间戳 |
refund_amount | body | number | 是 | 退款金额, 分, 不能大于订单金额, 仅部分支付通道支持非全额退款 |
provider | body | string | 否 | 支付网关 |
mid | body | string | 否 | 此订单的商户ID,仅当同一帐户下有多个子商户时才有效。 |
请求Body示例
#
响应结果退款接口同步返回退款结果, 若退款成功, 接口返回订单详情, error_code 为 "REFUNDED"
响应成功示例
#
provider 和 channel 支持创建订单时, 可选择 provider 和 channel, 以选择支付渠道, 每个provider 都有对应可选的数个 channel
创建 redirect 订单时, provider 和 channel 可选值如下表:
provider | 可选channel | channel 说明 |
---|---|---|
th | ||
card | Visa / MC / JCB / UPI | |
ktc_instal | KTC Installment. support only KTC Card | |
kbank_instal | KBANK Installment. support only KBANK Card | |
kcc_instal | Krungsri Installment. support only Krungsri Card | |
kfc_instal | First Choice Installment. support only Krungsri First Choice Card | |
promptpay | Promptpay | |
scb_easy | SCB EASY *only support on mobile | |
bbl_deeplink | Bualuang mBanking *only support on mobile | |
baybank_deeplink | KMA Krungsri Mobile App. *only support on mobile | |
kplus | KPLUS. *only support on mobile | |
linepay | Line Pay | |
truemoney | Truemoney | |
airpay | Shopee Pay | |
atome | Atome | |
WeChat Pay | ||
alipay | 支付宝支付 | |
ph | ecpay_nonbank_otc_ph | Ecpay Network Philippines |
expresspay_nonbank_otc_ph | Expresspay Network Philippines | |
711_nonbank_otc_ph | 711 Network Philippines | |
cliqq_nonbank_otc_ph | 711 Cliqq Network Philippines | |
mlhuillier_nonbank_otc_ph | Mlhuillier Pawnshop Network | |
cebuana_nonbank_otc_ph | Cebuana Pawnshop Network | |
smbills_nonbank_otc_ph | SM Bills Payment Network | |
truemoney_nonbank_otc_ph | True Money Network | |
posible_nonbank_otc_ph | Posible.net Network | |
etap_nonbank_otc_ph | Etap Network | |
bn_online_ph | Bancnet Philippines | |
ubp_online_ph | Union Bank of the Philippines | |
gc_ph | Gcash | |
coins_ph | Coins.PH Philippines | |
grabpay_ph | GrabPay Philippines |
#
3. 小程序支付#
创建订单#
APIURL | /api/v1/miniapp/orders |
---|---|
Method | POST |
Content-Type | application/json |
#
请求参数#
Body参数名称 | 位置 | 类型 | 必选 | 说明 |
---|---|---|---|---|
merchant_order_id | body | string | 是 | 商户端使用的唯一订单号 |
amount | body | number | 是 | 订单金额(分) |
channel | body | string | 否 | 支付通道, 可选值 wechat (微信小程序), alipay(支付宝小程序) |
miniapp_openid | body | string | 否 | 小程序用户的openid, 微信小程序为openid |
miniapp_appid | body | string | 否 | 小程序的appid |
timestamp | body | string | 否 | 时间戳 |
note | body | string | 否 | 订单备注 |
signature | body | string | 是 | 请求签名 |
请求Body示例 创建微信小程序订单
请求Body示例 创建支付宝小程序订单
#
响应结果error_code 为 SUCCESS 时, 创建订单成功, 此时接口返回订单详情信息
创建微信小程序订单时订单详情额外字段
名称 | 类型 | 必选 | 说明 |
---|---|---|---|
reference | string | 是 | 微信小程序支付参数的 package 字段 |
reserved1 | string | 是 | 微信小程序支付参数的 timeStamp 字段 |
reserved2 | string | 是 | 微信小程序支付参数的 signType 字段 |
reserved3 | string | 是 | 微信小程序支付参数的 paySign 字段 |
reserved4 | string | 是 | 微信小程序支付参数的 nonceStr 字段 |
使用以上字段可在微信小程序内发起支付, 参考官方文档
响应成功示例
创建支付宝小程序订单时订单详情额外字段
名称 | 类型 | 必选 | 说明 |
---|---|---|---|
reference | string | 是 | 支付宝小程序支付参数的 orderStr 字段 |
使用以上字段可在支付宝小程序内发起支付, 参考 官方文档
响应成功示例
#
查询订单#
APIURL | /api/v1/miniapp/orders/{order_id} |
---|---|
Method | GET |
#
请求参数名称 | 位置 | 类型 | 必选 | 说明 |
---|---|---|---|---|
order_id | path | string | 是 | 商户端使用的唯一订单号( 创建订单时的 merchant_order_id) |
mid | query | string | 否 | 此订单的商户ID,仅当同一帐户下有多个子商户时才有效。 |
signature | query | string | 是 | 请求签名 |
timestamp | query | string | 是 | 时间戳 |
请求示例
#
响应结果响应成功示例
#
发起退款#
APIURL | /api/v1/miniapp/orders/{order_id} |
---|---|
Method | PUT |
Content-Type | application/json |
#
请求参数名称 | 位置 | 类型 | 必选 | 说明 |
---|---|---|---|---|
order_id | path | string | 是 | 商户端使用的唯一订单号( 创建订单时的 merchant_order_id |
#
Body参数名称 | 位置 | 类型 | 必选 | 说明 |
---|---|---|---|---|
refund_order_id | body | string | 是 | 不限格式, 商户端使用的唯一的退款订单号 |
signature | body | string | 是 | 请求签名 |
timestamp | body | string | 是 | 时间戳 |
refund_amount | body | number | 是 | 退款金额, 分, 不能大于订单金额, 仅部分支付通道支持非全额退款 |
mid | body | string | 否 | 此订单的商户ID,仅当同一帐户下有多个子商户时才有效。 |
请求Body示例
#
响应结果响应成功示例
#
4. App支付#
创建订单#
APIURL | /api/v1/app/orders |
---|---|
Method | POST |
Content-Type | application/json |
#
请求参数#
Body参数名称 | 位置 | 类型 | 必选 | 说明 |
---|---|---|---|---|
merchant_order_id | body | string | 是 | 商户端使用的唯一订单号 |
amount | body | number | 是 | 订单金额(分) |
channel | body | string | 否 | 支付通道 |
app_appid | body | string | 否 | 移动应用的app_id, 如微信开放平台的移动应用的app_id,申请方式参考 |
timestamp | body | string | 否 | 时间戳 |
note | body | string | 否 | 订单备注 |
signature | body | string | 是 | 请求签名 |
请求Body示例 创建支付宝订单
#
响应结果error_code 为 SUCCESS 时, 创建订单成功, 此时接口返回订单详情信息
创建支付宝订单时订单详情额外字段
名称 | 类型 | 必选 | 说明 |
---|---|---|---|
reference | string | 是 | 支付宝app 支付参数的 orderStr 字段 |
使用以上字段可通过支付SDK调起支付宝App支付
响应成功示例
#
查询订单#
APIURL | /api/v1/app/orders/{order_id} |
---|---|
Method | GET |
#
请求参数名称 | 位置 | 类型 | 必选 | 说明 |
---|---|---|---|---|
order_id | path | string | 是 | 商户端使用的唯一订单号( 创建订单时的 merchant_order_id) |
mid | query | string | 否 | 此订单的商户ID,仅当同一帐户下有多个子商户时才有效。 |
signature | query | string | 是 | 请求签名 |
timestamp | query | string | 是 | 时间戳 |
请求示例
#
响应结果响应成功示例
#
发起退款#
APIURL | /api/v1/app/orders/{order_id} |
---|---|
Method | PUT |
Content-Type | application/json |
#
请求参数名称 | 位置 | 类型 | 必选 | 说明 |
---|---|---|---|---|
order_id | path | string | 是 | 商户端使用的唯一订单号( 创建订单时的 merchant_order_id |
#
Body参数名称 | 位置 | 类型 | 必选 | 说明 |
---|---|---|---|---|
refund_order_id | body | string | 是 | 不限格式, 商户端使用的唯一的退款订单号 |
signature | body | string | 是 | 请求签名 |
timestamp | body | string | 是 | 时间戳 |
refund_amount | body | number | 是 | 退款金额, 分, 不能大于订单金额, 仅部分支付通道支持非全额退款 |
mid | body | string | 否 | 此订单的商户ID,仅当同一帐户下有多个子商户时才有效。 |
请求Body示例
#
响应结果响应成功示例
#
5. 客户扫描商家支付#
创建订单#
APIURL | /api/v1/cscanb/orders |
---|---|
Method | POST |
Content-Type | application/json |
#
请求参数#
Body 参数name | Location | Types | required | instruction |
---|---|---|---|---|
merchant_order_id | body | string | Yes | 商家唯一的订单号 |
amount | body | number | Yes | 订单金额 |
note | body | string | No | 订单备注 |
timestamp | body | string | Yes | 时间戳 |
mid | body | string | No | 商户ID,只有账号下有多家子商户时才生效 |
provider | body | string | No | 支付发起国家,支付网关可选值('th','ph','my' |
channel | body | string | Yes | 支付渠道,取值范围: alipay:支付宝钱包。 wechat:Wechat Wallet. airpay: Shopeepay Wallet. promptpay:PromptPay 二维码(泰国标准银行转账二维码)。 truemoney:TrueMoney Wallet. |
device_id | body | string | No | 发送请求的终端ID,由商家分配。 |
signature | body | string | Yes | 请求签名 |
note
使用API前请查看 账户类型及API支持的渠道。 通常,如果你想使用所有的钱包,就必须使用muti-mid
#
请求正文示例#
响应结果error_code 为 SUCCESS 时, 创建订单成功, 此时接口返回订单详情信息
reference
字段为对应支付渠道的支付地址或订单号
#
响应成功示例#
响应失败示例#
查询订单#
APIURL | /api/v1/cscanb/orders/{order_id} |
---|---|
Method | GET |
#
请求参数Name | Location | Types | Required | instruction |
---|---|---|---|---|
order_id | path | string | Yes | The unique order number used by the merchant (merchant_order_id when creating the order) |
mid | query | string | No | The merchant ID of this order is only valid when there are multiple sub-merchants under the same account. |
provider | query | string | No | Payment gateway |
signature | query | string | Yes | Request signature |
timestamp | query | string | Yes | Timestamp |
#
请求示例#
响应结果#
响应成功示例#
发起退款#
APIURL | /api/v1/cscanb/orders/{order_id} |
---|---|
Method | PUT |
Content-Type | application/json |
#
请求参数Name | Location | Types | Required | instruction |
---|---|---|---|---|
order_id | path | string | Yes | The unique order number used by the merchant (merchant_order_id when creating the order) |
#
Body 参数Name | Location | Types | Required | instruction |
---|---|---|---|---|
refund_order_id | body | string | Yes | Unlimited format, unique refund order number used by merchant |
signature | body | string | Yes | Request signature |
timestamp | body | string | Yes | Timestamp |
refund_amount | body | number | Yes | The refund amount, cents, cannot be greater than the order amount, only partial payment channels support non-full refunds. |
provider | body | string | No | Payment gateway |
mid | body | string | No | The merchant ID of this order is only valid when there are multiple sub-merchants under the same account. |
#
请求示例#
响应结果#
响应成功示例#
6. 商家扫描用户支付#
创建订单#
APIURL | /api/v1/bscanc/orders |
---|---|
Method | POST |
Content-Type | application/json |
#
请求参数#
Body 参数name | Location | Types | required | instruction |
---|---|---|---|---|
merchant_order_id | body | string | Yes | The unique order number used by the merchant |
amount | body | number | Yes | Order amount |
auth_code | body | string | Yes | The Authentication code generated from eWallet of the consumer |
note | body | string | No | order notes |
timestamp | body | string | Yes | Timestamp |
mid | body | string | No | The merchant ID of this order is only valid when there are multiple sub-merchants under the same account. |
provider | body | string | No | Payment gateway, optional values ('th','ph','my') |
channel | body | string | Yes | Payment Merchant support. Value range: alipay: Alipay Wallet. wechat: Wechat Wallet. linepay: Rabbit LINE Pay Wallet. airpay: Shopeepay Wallet. truemoney: TrueMoney Wallet. |
device_id | body | string | No | 发送请求的终端ID,由商家分配。 |
signature | body | string | Yes | Request signature |
#
请求示例#
响应结果error_code 为 SUCCESS 时, 创建订单成功, 此时接口返回订单详情信息
reference
字段为对应支付渠道的支付地址或订单号
#
响应成功示例#
响应失败示例#
查询订单#
APIURL | /api/v1/bscanc/orders/{order_id} |
---|---|
Method | GET |
#
请求参数Name | Location | Types | Required | instruction |
---|---|---|---|---|
order_id | path | string | Yes | The unique order number used by the merchant (merchant_order_id when creating the order) |
mid | query | string | No | The merchant ID of this order is only valid when there are multiple sub-merchants under the same account. |
provider | query | string | No | Payment gateway |
signature | query | string | Yes | Request signature |
timestamp | query | string | Yes | Timestamp |
#
请求示例#
响应结果#
响应成功示例#
发起退款#
APIURL | /api/v1/bscanc/orders/{order_id} |
---|---|
Method | PUT |
Content-Type | application/json |
#
请求参数Name | Location | Types | Required | instruction |
---|---|---|---|---|
order_id | path | string | Yes | The unique order number used by the merchant (merchant_order_id when creating the order) |
#
Body 参数Name | Location | Types | Required | instruction |
---|---|---|---|---|
refund_order_id | body | string | Yes | Unlimited format, unique refund order number used by merchant |
signature | body | string | Yes | Request signature |
timestamp | body | string | Yes | Timestamp |
refund_amount | body | number | Yes | The refund amount, cents, cannot be greater than the order amount, only partial payment channels support non-full refunds. |
provider | body | string | No | Payment gateway |
mid | body | string | No | The merchant ID of this order is only valid when there are multiple sub-merchants under the same account. |
#
请求示例#
响应结果#
响应成功示例#
7. 接口返回字段详情创建订单, 查询订单, 发起退款, 请求成功后, 接口返回的详情信息, 字段说明如下
名称 | 类型 | 必选 | 说明 |
---|---|---|---|
status | string | 是 | 订单状态 |
id | string | 是 | 内部唯一id |
currency | string | 是 | 货币类型 |
amount | number | 是 | 订单金额 |
note | string | 是 | 订单备注信息 |
reference | string | 是 | 支付链接 |
error_code | string | 是 | 接口返回的响应码 |
error_message | string | 是 | 接口返回的error_code响应码对应的信息说明 |
timestamp | string | 是 | 时间戳 |
signature | string | 是 | 响应内容的签名 |
api_name | string | 是 | 请求的API类别 |
order_type | string | 是 | 订单类型,普通销售订单或退款订单 |
acquirer | string | 是 | 当前订单的收单机构 |
gateway_order_id | string | 是 | gateway网关的订单号 |
merchant_order_id | string | 是 | 商户端使用的订单号 |
acquirer_order_id | string | 否 | 收单机构订单号,用于在收单机构端标识订单的uniq字符串 |
channel_order_id | string | 否 | 支付通道端的订单号, 用于标识支付通道端的订单 |
channel | string | 否 | 订单支付渠道 |
order_date | string | 否 | none |
mid | string | 否 | 此订单的商户ID,仅当同一帐户下有多个子商户时才有效。 |
reserved1 | string | 否 | Misc Field 1 |
reserved2 | string | 否 | Misc Field 2 |
reserved3 | string | 否 | Misc Field 3 |
reserved4 | string | 否 | Misc Field 4 |
locked | boolean | 否 | 表示订单是否已锁定以便清关和结算。 |
force_clear | boolean | 否 | 是否强制该笔交易参加对账 |
cleared | boolean | 否 | 表明该笔交易是否已经清分 |
#
订单详情的 status 合法值值 | 说明 | 创建订单 | 查询订单 | 发起退款 |
---|---|---|---|---|
Available | 待支付 | ✔ | ✔ | - |
Failed | 失败 | ✔ | ✔ | ✔ |
Closed | 已关闭 | - | ✔ | - |
Paid | 已支付 | - | ✔ | - |
Refunded | 部分退款/全部退款 | - | ✔ | ✔ |
Voided | 已撤销 | - | - | - |
Cancelled | 已取消 | - | - | - |
Authorized | 预授权 | - | - | - |
Release | 预授权完成 | - | - | - |
#
接口 error_code 合法值值 | 说明 | 创建订单 | 查询订单 | 发起退款 |
---|---|---|---|---|
SUCCESS | 创建订单成功 | ✔ | ✔ | - |
DUPLICATED | 重复的订单id (merchant_order_id 已存在) | ✔ | - | ✔ |
FAIL | 失败 | ✔ | ✔ | ✔ |
NOTPAY | 订单未支付 Buyer reject pay for one channel | - | ✔ | ✔ |
PENDING | 订单待支付 | - | ✔ | - |
REFUNDED | 订单全部或部分退款。 | - | ✔ | ✔ |
INVALID_REFUND_BALANCE | 退款金额有误(退款金额超出可订单退款金额) | - | - | ✔ |
NOTFOUND | 订单未找到或不存在 | - | ✔ | ✔ |
NOTPAID | 订单未支付 | - | ✔ | ✔ |
NOTSUPPORTED | 不支持该操作 | - | ✔ | ✔ |
SIGNERROR | 验证签名错误 | ✔ | ✔ | ✔ |
PROVIDERERROR | Provider 有误 | ✔ | ✔ | ✔ |
PROVIDERCLOSE | 当前商户不支持该 Provider | ✔ | ✔ | ✔ |
DEBUG | 签名debug模式, 该模式下, 返回的reference 字段为正确的签名, note字段为签名前的原始数据 | ✔ | ✔ | ✔ |
#
8. 结算#
查询结算单信息URL | /api/v1/finance/settlements/{yyyymmdd} |
---|---|
Method | GET |
#
API#
请求参数名称 | 位置 | 类型 | 必选 | 说明 |
---|---|---|---|---|
channel | query | string | 是 | 需要查询结算单的支付渠道 |
signature | query | string | 是 | 请求签名 |
timestamp | query | string | 是 | 时间戳,UTC UNIX 格式 |
yyyymmdd | path | string | 是 | 需要查询的年月日如20210803 |
请求示例
#
响应结果响应示例
#
查询开通的支付渠道URL | /api/v1/finance/settlements/channels |
---|---|
Method | GET |
#
API#
请求参数名称 | 位置 | 类型 | 必选 | 说明 |
---|---|---|---|---|
signature | query | string | 是 | 请求签名 |
timestamp | query | string | 是 | 时间戳,UTC UNIX 格式 |
请求示例
#
响应结果响应示例
#
查询订单列表URL | /api/v1/finance/settlements/order/{yyyymmdd} |
---|---|
Method | GET |
#
API#
请求参数名称 | 位置 | 类型 | 必选 | 说明 |
---|---|---|---|---|
channel | query | string | 否 | 需要查询结算单的支付渠道 |
limit | query | integer | 否 | 每次查询数据量限制,最大为50 |
offset | query | integer | 否 | 每次查询起始游标 |
signature | query | string | 是 | 请求签名 |
timestamp | query | string | 是 | 时间戳,UTC UNIX 格式 |
yyyymmdd | path | string | 是 | 需要查询的年月日如20210803 |
请求示例
#
响应结果响应示例
#
查询已结算订单列表URL | /api/v1/finance/settlements/settlement_order |
---|---|
Method | GET |
#
API#
请求参数名称 | 位置 | 类型 | 必选 | 说明 |
---|---|---|---|---|
limit | query | integer | 否 | 每次查询数据量限制,最大为50 |
offset | query | integer | 否 | 每次查询起始游标 |
reference_id | query | string | 是 | 从结算单信息接口中获得的“reference_id”字段 |
signature | query | string | 是 | 请求签名 |
timestamp | query | string | 是 | 时间戳,UTC UNIX 格式 |
请求示例
#
响应结果响应示例
#
9. WebHook可在gateway支付网关后台配置webhook回调地址
当订单状态发生变化时, 支付网关会向 webhook 地址发送一个 GET 请求, 并携带以下参数
参数名称 | 类型 | 描述 |
---|---|---|
type | string | 事件类型, 固定值 "order" |
instance | string | 商户侧订单号, 即 merchant_order_id 字段 |
code | string | 事件码, 固定值 "statuschange" |
message | string | 订单状态变化 |
signature | string | 请求签名 |
可通过签名规则对该请求进行签名验证, 签名规则中的apiUrl 使用webhook的完整地址
若 webhook 地址响应为200, 则通知成功, 否则会重复通知, 每5秒重复一次, 至多重复6次
收到 webhook 通知时, 需要对参数进行验签, 验签过程参考下文签名计算部分
#
messagemessage 字段取值
值 | 说明 |
---|---|
Order Timeout | 订单超时 |
Order Closed | 订单已关闭 |
Order Paid | 订单已支付 |
Order Refunded | 订单部分退款/全部退款 |
#
webhook 通知示例URL | webhook 地址 |
---|---|
Method | GET |
请求内容
#
10. 签名计算gateway API 会验证每个 API 请求, 所以每个 HTTP 请求都必须包含签名信息, 签名无效的请求会返回错误
gateway API 通过在支付后台设置的令牌验证请求, 令牌可用于生产 HTTP 请求中的 signature 字段, 需要严格保密
token 可在以下位置获取或重置:
如果你手动编写 HTTP 请求而非使用官方SDK, 则需要了解一下签名算法
#
签名算法生成签名过程如下
将所有请求参数(除 signature字段外) 按照 ASCII 表中的参数名称进行排序. 例如
将排序后的参数及其值拼接为一个字符串. 例如
在拼接好的字符串前再添加 API 名称, 以创建订单接口为例 "/api/v1/redirect/orders"
以 UTF-8 格式对字符串进行编码, 并使用 HMAC_SHA256 签名算法进行摘要, 秘钥为上文后台配置中的 token
此处为第三方加密工具演示, 可根据开发语言自行使用第三方工具库以实现 HMAC_SHA256 签名
#
webhook 验证签名webhook签名计算时, API名称为 webhook 地址的完整 url, 其他步骤一致
注意在参数拼接为字符串时, 要先将 signature 字段排除再做拼接
若最终得到的签名值和webhook收到的请求中的 signature 一致, 则验签成功