Skip to content

基本规范

基本信息

  • 所有的 API 请求必须使用 HTTPS,所有 HTTP 接口的 method 均为 POST。
  • 入参、响应结果中的字段均采用驼峰命名。
  • 字符集: UTF-8
  • 所有的日期对象,使用 ISO 8601 所定义的格式
yyyy-MM-DDTHH:mm:ss.SSS+08:00
yyyy-MM-DDTHH:mm:ss+08:00

WARNING

请求时不应忽略服务器证书验证的错误,避免被恶意劫持。

请求参数

  • 请求时需要对 HTTP Body 进行签名,并将签名结果与请求参数一起提交给服务器处理。详情参考:签名机制
  • 业务参数通过 HTTP Body 提交,格式为 JSON,支持子对象。具体参数列表参看各个 API 接口具体描述。

示例:

SHELL
# 实际请求参数请移步左侧菜单,参看各个接口文档说明

curl https://{{gateway_domain}}/v2/payment/create \
  -X POST \
  -H "Content-Type: application/json" \
  -H 'Authorization: V2_SHA256 appId=483f6c9c743b4a9bbd34bee0c9c81eb71,sign=7cc24c5ed4eb9b97696260c51d38ce9cf959c242922689885f8b30bc6863a019,timestamp=1715670758482,nonce=CEAE7940ADEEE91C5A1207F1BB78BE7F' \
  -d '{"key1": "value1", "key2": "value2"}'

响应格式

TIP

响应包含 HTTP 状态码Response HeaderResponse Body,商户请根据 HTTP 状态码Response Body 中的 code 进行后续业务逻辑处理。

错误信息

  • 被网关成功接收并处理的请求,将返回 JSON 格式的应答消息体,HTTP 状态码为 200。
  • 请求签名校验失败时,将会返回 401 状态码。
  • 请求处理时发生了服务系统错误,将返回 5xx 范围内的状态码。

示例

SHELL
HTTP/1.1 200 OK
Content-Type: application/json
Server: nginx/1.18.0
Date: Mon, 06 Mar 2024 12:00:00 GMT
Authorization: V2_SHA256 appId=483f6c9c743b4a9bbd34bee0c9c81eb71,sign=7cc24c5ed4eb9b97696260c51d38ce9cf959c242922689885f8b30bc6863a019,timestamp=1715670758482,nonce=CEAE7940ADEEE91C5A1207F1BB78BE7F

{
    "code": "OK",
    "errorMessage": null,
    "data": {
        "key1": "value1",
        "key2": "value2"
    }
}

User Agent

HTTP 协议要求发起请求的客户端在每一次请求中都使用 HTTP 头 User-Agent 来标识自己。建议调用方选用以下两种方式的一种:

  • 使用HTTP客户端默认的 User-Agent。
  • 遵循 HTTP 协议,使用自身系统和应用的名称和版本等信息,组成自己独有的 User-Agent。

平台很可能会拒绝处理无 User-Agent 的请求。

通知机制

通知分为两种通知方式。

同步通知(urlRedirect)

在用户支付成功,或者取消支付时,平台会将消费者的浏览器重定向到商户提供的 returnUrl 上,并携带相关参数。 同步通知采用 GET 方式跳转,相应的拼接参数,会对每个参数的值进行编码为 UTF-8 的 URLEncode 处理,随后进行跳转。

TIP

因同步通知可能出现用户模拟操作,或在同步通知未进行跳转时,用户手动关闭浏览器等不可控情况,导致商户造成损失,我们强烈建议商户以异步通知结果来确认订单的支付结果。

异步通知(webhook)

平台会将消费者支付结果的消息通过服务器端发送到商户提供的 notifyUrl上,并携带相关参数,以 POST 形式提交。

商户需要对结果信息进行相应验证和处理:

  • 进行签名验证,以防止伪造的通知信息。
  • 且必须对返回结果中的订单状态做判断,以确定订单状态。