🚀API对接指南

circle-info

为了确保交易数据的安全性和完整性,调用支付网关的所有API接口都需要使用HTTPS协议和 HMAC-SHA512签名。

协议规则

以下指定了访问支付网关时调用 API 的规则:

规则
描述

传输协议

必须使用HTTPS传输数据

提交模式

POST或GET,取决于API

数据格式(内容类型)

提交的数据和响应都是 application/json 格式

字符编码

使用 UTF-8 字符编码

签名算法

HMAC-SHA512

签名要求

请求和接收数据需要进行签名检查

逻辑判断

确定协议字段、服务字段和交易状态

请求头

属性
类型
是否必需
限制
描述

content-type

string

application/json

内容类型

HiicashPay-Timestamp

int64

只处理 1 秒内发送的请求,以确保机器时间与网络同步

Unix 时间戳,以毫秒为单位

HiicashPay-Nonce

string

必须是 32 位字符

一个 32 字节的随机字符串

HiicashPay-AppId

string

由支付网关生成的 AppID

新建应用时生成的app_id

HiicashPay-Signature

string

使用 SHA512 生成的签名,并为大写字符串

生成签名

签名算法

circle-info

注意:

  • '\n'为LF,ASCII值为'0x0A'

  • 参数名称区分大小写

  • 当检查返回的数据或消息推送的签名时,需将HiicashPay-Signature参数排除在外。

  • 当提交json时,请仔细检查引号,'跟"不一样。

对内容进行签名

支付接口

商户业务系统通过支付订单接口发起支付收款订单,支付网关会根据商户配置的支付通道路由支付通道完成支付下单。支付网关根据不同的支付方式返回对应的支付参数,业务系统使用支付参数发起收款。

创建订单

请求URL:/pay/order/create

请求方式:POST

请求类型:application/json

请求参数

字段名
变量名
必填
类型
示例值
描述

商户号

mchNo

String(30)

8812345812345678

商户号

应用ID

appId

String(24)

60cc09bce4b0f1c0b83761c9

应用ID

商户订单号

mchOrderNo

String(30)

20160427210604000490

商户生成的订单号

支付金额

amount

int

100

支付金额,单位分

支付数据类型

payDataType

String

Cashier

支付参数类型 收银台方式-Cashier 网关方式-Gateway

货币代码

currency

String(3)

USD

三位货币代码,美元:USD

客户端IP

clientIp

String(32)

210.73.10.148

客户端IPV4地址

商品标题

subject

string(64)

电子产品

商品的标题

商品信息

body

String(256)

{[ "title" : "xxxxxx", "price": 100, "qt": 1]}

商品详细信息列表 title-标题 price-价格 qt-数量

异步通知地址

notifyUrl

String(128)

支付结果异步回调URL,如果不填则使用后台设置的异步通知地址

跳转通知地址

returnUrl

String(128)

支付结果同步跳转通知URL

失效时间

expiredTime

int

3600

订单失效时间,单位秒,默认1小时.订单在(创建时间+失效时间)后失效

示例数据

返回参数

字段名
变量名
必填
类型
示例值
描述

返回状态

code

int

0

0-处理成功,其他-处理有误,详见错误码

返回信息

msg

String(128)

签名失败

具体错误原因,例如:签名失败、参数格式校验错误

返回数据

data

String(512)

{}

返回下单数据,json格式

Data数据格式

字段名
变量名
必填
类型
示例值
描述

支付订单号

payOrderId

String(30)

U12021022311124442600

返回支付系统订单号

商户订单号

mchOrderNo

String(30)

8812345812345678123

返回商户传入的订单号

订单状态

orderState

int

2

支付订单状态 0-订单生成 1-支付中 2-支付成功 3-支付失败 4-已撤销 5-已退款 6-订单关闭

支付数据类型

payDataType

String

Cashier

支付参数类型 收银台方式-Cashier 网关方式-Gateway

支付数据

payData

String

返回收银台地址

渠道错误码

errCode

String

ACQ.PAYMENT_AUTH_CODE_INVALID

上游渠道返回的错误码

渠道错误描述

errMsg

String

Business Failed 失败

上游渠道返回的错误信息描述

成功示例数据

失败示例数据

接入演示

以 Python 为例

Body 请求体

Headers 请求头

下面我们来一步一步接入

按照上面的步骤,最终生成的签名应该是:

20628DE35D2B36F9530F91B1F58E8084E3B032B5F9A124EC5E20B3C1F8208A7E281366E66AA37F665744013923F2B4A3FE330F288B001BA4AB5EDD39F95A8CF2

如果你的签名不一致,请不要着急先传入参数,先按照上方全部付复制,不要修改任何变量,直到签名计算正确为止。

下面来发送请求

main() 方法方法中的

三个变量的值换为你商户后台的应用网关信息

删除以下代码

打开注释

Body 信息改为你自己的

如果一切顺利,你得到的值为:

返回值中的 datapayDataType 就是收银台支付链接,直接跳转即可。

查询订单

circle-info

商户通过该接口查询订单,支付网关会返回订单最新的数据

请求URL:/pay/order/query

请求方式:POST

请求类型:application/json

请求参数

字段名
变量名
必填
类型
示例值
描述

商户号

mchNo

String(30)

8812345812345678

商户号

应用ID

appId

String(24)

60cc09bce4b0f1c0b83761c9

应用ID

支付订单号

payOrderId

String(30)

U12021022311124442600

返回支付系统订单号,与mchOrderNo二者传一即可

商户订单号

mchOrderNo

String(30)

20160427210604000490

商户生成的订单号,与payOrderId二者传一即可

示例数据

返回参数

字段名
变量名
必填
类型
示例值
描述

返回状态

code

int

0

0-处理成功,其他-处理有误,详见错误码

返回信息

msg

String(128)

签名失败

具体错误原因,例如:签名失败、参数格式校验错误

返回数据

data

String(512)

{}

返回下单数据,json格式

Data数据格式

字段名
变量名
必填
类型
示例值
描述

支付订单号

payOrderId

String(30)

U12021022311124442600

返回支付系统订单号

商户号

mchNo

String(30)

8812345812345678

商户号

商户订单号

mchOrderNo

String(30)

8812345812345678123

返回商户传入的订单号

应用ID

appId

String(24)

60cc09bce4b0f1c0b83761c9

应用ID

支付方式

wayCode

String(30)

VOUCHER

支付方式,如Voucher:VOUCHER,用户余额:BALANCE

支付接口

ifCode

String(30)

WEB

支付接口,WEB、APP、MINIPRAM……

支付金额

amount

int

100

支付金额,单位分

货币代码

currency

String(3)

cny

三位货币代码,美元:USD 人民币:CNY

订单状态

orderState

int

2

支付订单状态 0-订单生成 1-支付中 2-支付成功 3-支付失败 4-已撤销 5-已退款 6-订单关闭

客户端IP

clientIp

String(32)

210.73.10.148

客户端IPV4地址

商品标题

subject

string(64)

电子产品

商品的标题

商品信息

body

String(256)

{[ "title" : "xxxxxx", "price": 100, "qt": 1]}

商品详细信息列表 title-标题 price-价格 qt-数量

渠道订单号

channelOrderNo

String

20160427210604000490

对应渠道的订单号

渠道用户

channelUser

String

882010423410394

渠道用户号 voucher卡号或者user_id

扩展参数

extParam

String(512)

134586944573118714

商户扩展参数,回调时会原样返回

渠道错误码

errCode

String

ACQ.PAYMENT_AUTH_CODE_INVALID

上游渠道返回的错误码

渠道错误描述

errMsg

String

Business Failed 失败

上游渠道返回的错误信息描述

创建时间

createdAt

long

1622016572190

订单创建时间,13位时间戳

成功时间

successTime

long

1622016572190

订单支付成功时间,13位时间戳

示例数据

关闭订单

circle-info

商户通过该接口关闭订单,支付网关会对订单完成关闭处理。

请求URL:/pay/order/close

请求方式:POST

请求类型:application/json

请求参数

字段名
变量名
必填
类型
示例值
描述

商户号

mchNo

String(30)

8812345812345678

商户号

应用ID

appId

String(24)

60cc09bce4b0f1c0b83761c9

应用ID

支付订单号

payOrderId

String(30)

U12021022311124442600

返回支付系统订单号,与mchOrderNo二者传一即可

商户订单号

mchOrderNo

String(30)

20160427210604000490

商户生成的订单号,与payOrderId二者传一即可

示例数据

返回参数

字段名
变量名
必填
类型
示例值

返回状态

code

int

0

0-处理成功,其他-处理有误,详见错误码

返回信息

msg

String(128)

签名失败

具体错误原因,例如:签名失败、参数格式校验错误

返回数据

data

String(512)

{}

返回下单数据,json格式

Data数据格式

字段名
变量名
必填
类型
示例值
描述

渠道错误码

errCode

String

ACQ.PAYMENT_AUTH_CODE_INVALID

上游渠道返回的错误码

渠道错误描述

errMsg

String

Business Failed 失败

上游渠道返回的错误信息描述

示例数据

支付通知

当订单支付成功时,支付网关会向商户系统发起回调通知。如果商户系统没有正确返回,支付网关会延迟再次通知。

请求URL:链接是通过创建订单接口提交的参数notifyUrl设置,或者商家在后台设置的回调URL

请求方式:POST

请求类型:application/json

请求头

属性
类型
描述

content-type

string

application/json

HiicashPay-Timestamp

int64

网关返回Unix时间戳

HiicashPay-Nonce

string

32位字符

HiicashPay-Signature

string

网关返回签名

示例数据

请求参数

支付订单号

payOrderId

String(30)

U12021022311124442600

返回支付系统订单号

商户号

mchNo

String(30)

8812345812345678

商户号

商户订单号

mchOrderNo

String(30)

8812345812345678123

返回商户传入的订单号

应用ID

appId

String(24)

60cc09bce4b0f1c0b83761c9

应用ID

支付方式

wayCode

String(30)

VOUCHER

支付方式,如Voucher:VOUCHER,用户余额:BALANCE

支付接口

ifCode

String(30)

WEB

支付接口,WEB、APP、MINIPRAM……

支付金额

amount

int

100

支付金额,单位分

货币代码

currency

String(3)

cny

三位货币代码,美元:USD 人民币:CNY

订单状态

orderState

int

2

支付订单状态 0-订单生成 1-支付中 2-支付成功 3-支付失败 4-已撤销 5-已退款 6-订单关闭

客户端IP

clientIp

String(32)

210.73.10.148

客户端IPV4地址

商品标题

subject

string(64)

电子产品

商品的标题

商品信息

body

String(256)

{[ "title" : "xxxxxx", "price": 100, "qt": 1]}

商品详细信息列表 title-标题 price-价格 qt-数量

渠道订单号

channelOrderNo

String

20160427210604000490

对应渠道的订单号

渠道用户

channelUser

String

882010423410394

渠道用户号 voucher卡号或者user_id

扩展参数

extParam

String(512)

134586944573118714

商户扩展参数,回调时会原样返回

渠道错误码

errCode

String

ACQ.PAYMENT_AUTH_CODE_INVALID

上游渠道返回的错误码

渠道错误描述

errMsg

String

Business Failed 失败

上游渠道返回的错误信息描述

创建时间

createdAt

long

1622016572190

订单创建时间,13位时间戳

成功时间

successTime

long

1622016572190

订单支付成功时间,13位时间戳

示例数据

返回结果

业务系统处理后同步返回给支付中心,返回参数的returnCode为 success 则表示成功,返回非success则表示处理失败,支付中心会再次通知业务系统。 (通知频率为0/30/60/90/120/150,单位:秒)

字段名
变量名
必填
类型
示例值
描述

返回状态

returnCode

string(30)

"success"

"success"-处理成功,其他-处理有误

返回信息

returnMsg

String(128)

""

具体错误原因

示例数据

签名校验

HiiCash 网关默认返回信息已经是按照键名首字母升序排序,如果你是手动获取的参数,需要将 post 参数按照键名升序排序

通知回调签名校验与创建订单相同,只不过参数变成网关发送的请求数据,签名后再与网关签名进行比对,如果一致则代表订单完成,下面以 Python 为例:

注意


网关支付


支付验证

用户通过该接口进行支付验证,如果是Voucher,验证通过后直接扣款,如果是用户,则返回需要填入的验证码类型

请求URL:/pay/order/verify

请求方式:POST

请求类型:application/json

请求参数

字段名
变量名
必填
类型
示例值
描述

支付订单号

payOrderId

String(30)

12021022311124442600

支付系统订单号

渠道用户

channelUser

String

882010423410394

渠道用户号 voucher卡号或者user_id

验证数据

verifyData

String(30)

密码

示例数据

返回参数

字段名
变量名
必填
类型
示例值
描述

返回状态

code

int

0

0-处理成功,其他-处理有误,详见错误码

返回信息

msg

String(128)

参数格式校验错误

具体错误原因,例如:签名失败、参数格式校验错误

返回数据

data

String(512)

{}

返回验证数据,json格式

Data数据格式

字段名
变量名
必填
类型
示例值
描述

验证类型

verifyType

int

0

验证类型 1-邮箱验证码 2-Google验证器

示例数据

申请扣款

用户通过该接口进行申请扣款

请求URL:/pay/order/billing

请求方式:POST

请求类型:application/json

请求参数

字段名

变量名

必填

类型

示例值

描述

支付订单号

payOrderId

String(30)

12021022311124442600

支付系统订单号

验证数据

verityData

String(30)

验证码内容

示例数据

返回参数

返回状态

code

int

0

0-处理成功,其他-处理有误,详见错误码

返回信息

msg

String(128)

参数格式校验错误

具体错误原因,例如:签名失败、参数格式校验错误

返回数据

data

String(512)

{}

返回验证数据,json格式

示例数据

如需使用以下余额支出接口,请先在 商户后台 -> 设置 -> API 设置 启用 API扣款功能,该功能默认关闭。再次提醒,如果应用密钥不慎泄漏可能会造成您的余额损失。

创建代金券

商户通过该接口进行创建代金券,费用会自动从商户余额中支出

请求URL:/voucher/create

请求方式:POST

请求类型:application/json

请求参数

字段名

变量名

必填

类型

示例值

描述

金额

amount

Int

500

创建代金券面值,最小 500($5),最大20000($200)

数量

quantity

Int

1

创建代金券数量,单次最少创建1张,最大100张

是否激活

isActive

Bool

True/False

是否激活,默认不激活,不激活情况下只返回激活码,需要手动激活一次才能使用,激活的情况下返回代金券卡号和卡密

示例数据

返回参数

返回状态

code

int

0

0-处理成功,其他-处理有误,详见错误码

返回信息

msg

String(128)

参数格式校验错误

具体错误原因,例如:签名失败、参数格式校验错误

返回数据

data

String(512)

{}

返回验证数据,json格式

代金券信息

data -> vouchers

Array

数组形式返回多组代金券

示例数据

创建转账

商户通过该接口进行想其他 HiiCash 账户转账,费用会自动从商户余额中支出

请求URL:/wallet/transfer

请求方式:POST

请求类型:application/json

请求参数

字段名

变量名

必填

类型

示例值

描述

金额

amount

Int

500

转账金额,单次转账最小金额 200($2),最大不限

账户号

accountNo

Int

8888888888888888

接收方 16 位账户号

附言

memo

String

测试转账

转账备注信息

示例数据

返回参数

返回状态

code

int

0

0-处理成功,其他-处理有误,详见错误码

返回信息

msg

String(128)

参数格式校验错误

具体错误原因,例如:签名失败、参数格式校验错误

返回数据

data

String(512)

{}

返回验证数据,json格式

转账订单号

data -> transactionId

String(128)

转账订单号

示例数据

Last updated