本文档主要描述商户接入平台涉及到的对接标准与技术细节,请开发同学仔细阅读对接规范,便于快速接入,谢谢!
如你在接入过程中遇到任何问题,可随时联系 在线客服 获得技术支持。
商户UID指的是用户在平台注册后,分配给用户的一个6位数唯一编码,代表着用户在平台中的唯一身份,请妥善保管。
商户在接入平台时要使用到的秘钥,秘钥主要用于验签,安全访问。密钥在商户管理后台-->API接入中查看。
请求方式:POST
Content-type:application/json
为了保证传递的数据不被修改,所有接口请求和回调都需要进行摘要认证。
以下为请求的最外层参数,每个接口的专用参数请转成json格式后放入data字段中
字段名称 | 字段类型 | 是否必填 | 说明 |
---|---|---|---|
uid | string | 是 | UID |
timestamp | string | 是 | 时间戳 |
sign | string | 是 | 签名 |
data | string | 是 | json字符串,具体见对应的接口说明 |
请求示例:
{ "uid": "136994", "sign": "00bd24ca1fa29a333191235aad10621a", "timestamp": "1716700031", "data": "{\"Amount\":\"2\",\"Blockchain\":\"TRC20\",\"CustomerOrderNo\":\"TEST127\",\"EffectiveDuration\":300,\"JumpURL\":\"111\"}" }
sign=md5(uid + data + key + timestamp),其中key为商户密钥
签名代码PHP示例:
$uid = "136994"; $data = '{"Amount":"2","Blockchain":"TRC20","CustomerOrderNo":"TEST127","EffectiveDuration":300,"JumpURL":"111"}'; $time = "1716700031"; $key = "c6e86d12aa021a3a94ea45235ca5d9aa"; $sign = md5($uid . $data . $key . $time); echo $sign;//2a81cd6c131f4c1ac88c2f9408000470
以下为返回结果的最外层参数
字段名称 | 字段类型 | 是否必填 | 说明 |
---|---|---|---|
code | int | 是 | 返回码 |
msg | string | 是 | 返回码描述 |
data | string | 是 | 具体的返回结果,见对应的接口说明 |
返回示例:
{ "code": 200, "data": { "MerchantSellOrderStatus": "T_MERCHANT_VERIFY_TODO", "MerchantSellOrderStatusText": "待商户审核" }, "msg": "success" }
请求地址:https://open.uugate.com/Open.Customer/CreateReceiveOrder
请求参数:
字段名称 | 字段类型 | 是否必填 | 说明 |
---|---|---|---|
Amount | string | 是 | 收款订单金额(USDT),预留4位小数,实际使用2位小数 |
Blockchain | string | 是 | 链路类型,目前只支持TRC20 |
CustomerOrderNo | string | 是 | 客户订单号 |
EffectiveDuration | string | 是 | 订单有效期,300-86400之间,单位秒 |
JumpURL | string | 否 | 商户会员支付成功后,收银界面上返回按钮对应的链接 |
Rule | Object | 否 | 当前订单执行的规则,不传则按商户默认配置执行,具体见示例 |
接口请求示例:
{ "uid": "136994", "sign": "33748c41adaa6ee11a8e863d1fe9f250", "timestamp": "1716700031", "data": "{\"Amount\":\"33\",\"Blockchain\":\"TRC20\",\"CustomerOrderNo\":\"TEST156\",\"EffectiveDuration\":300,\"JumpURL\":\"111\",\"Rule\":{\"WalletRules\":{\"Range\":\"SpecifyWallet\",\"Order\":\"Loop\",\"AutoCreate\":\"Off\",\"Register\":\"Register\",\"SpecifyWalletAddress\":\"TVEZobKr3Fyj6dayBcpSpoDLfb3B63Xj7b\"},\"AmountRules\":{\"Floor\":\"Off\"},\"CollectRules\":{\"AutoCollect\":\"On\",\"ToAddress\":\"TVEZobKr3Fyj6dayBcpSpoDLfb3B63Xj7b\",\"Frequency\":\"0\"}}}" } //Rule Example $rule = [ 'WalletRules'=>[ 'Range'=>'AllWallets',//钱包范围,AllWallets,AllSystemWallets,CreateNewSystemWallet,CreateDisposableSystemWallet,SpecifyWallet 'Order'=>'Loop',//钱包收款排序,Loop,BalanceAsc,BalanceDesc 'AutoCreate'=>'On',//自动生成钱包,On,Off 'Register'=>'Register',//钱包激活规则,DoNotRegister,Register,RegisterAndTransferU 'SpecifyWalletAddress'=>'',//指定钱包地址,仅当Range=SpecifyWallet时有效 ], 'AmountRules'=>[ 'Floor'=>'Off',//匹配时先对金额进行floor操作,On,Off ], 'CollectRules'=>[ 'AutoCollect'=>'On',//是否开启,On,Off 'ToAddress'=>'Txxxxxx',//归集地址,未添加为钱包的会自动添加 'Frequency'=>'0',//归集频率,注意格式为字符串,0(表示收到后立即归集),1,4,24 ], ];
接口返回:
字段名称 | 字段类型 | 是否必填 | 说明 |
---|---|---|---|
CheckOutUrl | string | 是 | 下单成功后返回的收银台URL地址,商户会员付款页面 |
ReceiveAddress | string | 是 | 订单对应的收款地址 |
接口返回示例:
{ "CheckOutUrl": "http://localhost:8000/Open.Customer/CheckOut?data=Ergz52xOPB9SJKW0CqbajDRPJIihDDCO8IYwIdR8MZgRAiOthgnK%2BsBjPQ7SBVqvYNuudqrYQlRDvlD4epD1QMeRp5wQlHRhugTbYCvJF3M%3D", "ReceiveAddress": "TLvT5GG3aWiTknCvGbux2CW6wgwznogBF2", "code": 0, "msg": "success" }
请求地址:https://open.uugate.com/Open.Customer/GetReceiveOrderStatus
请求参数:
字段名称 | 字段类型 | 是否必填 | 说明 |
---|---|---|---|
CustomerOrderNo | string | 是 | 商户订单编号,即你自己系统里的订单编号,便于后续对账 |
接口请求示例:
{ "uid": "136994", "sign": "00bd24ca1fa29a333191235aad10621a", "timestamp": "1716700031", "data": "{\"CustomerOrderNo\":\"126\"}" }
接口返回:
字段名称 | 字段类型 | 是否必填 | 说明 |
---|---|---|---|
UID | string | 是 | 商户UID |
OrderNo | string | 是 | 系统订单号 |
CustomerOrderNo | string | 是 | 商户订单号 |
Status | string | 是 | 订单状态,详见文档底部收款订单状态码 |
FinishTime | string | 是 | 订单完成时间,如果未完成则返回Null |
Amount | string | 是 | 订单金额(USDT),预留4位小数,实际使用2位小数 |
AmountInFact | string | 是 | 订单实收金额,如果未完成则返回Null |
接口返回示例:
{ "ReceiveOrder": { "UID": "136994", "OrderNo": "SK2405252026240048", "CustomerOrderNo": "126", "Status": "待付款", "FinishTime": null, "Amount": "1.0000", "AmountInFact": null }, "code": 0, "msg": "success" }
当订单完成或补单完成时会进行回调。回调会最多进行3次,成功接收回调需返回'success'。请求方式为POST,Content-Type: application/json
请求地址:在商户后台->API接入中设置
请求参数:
字段名称 | 字段类型 | 是否必填 | 说明 |
---|---|---|---|
OrderType | string | 是 | 订单类型,收款回调时固定为ReceiveOrder |
ReceiveOrder.UID | string | 是 | 商户UID |
ReceiveOrder.OrderNo | string | 是 | 系统订单号 |
ReceiveOrder.CustomerOrderNo | string | 是 | 商户订单号 |
ReceiveOrder.Status | string | 是 | 订单状态,详见文档底部收款订单状态码 |
ReceiveOrder.FinishTime | string | 是 | 订单完成时间 |
ReceiveOrder.Amount | string | 是 | 订单金额(USDT),预留4位小数,实际使用2位小数 |
ReceiveOrder.AmountInFact | string | 是 | 订单实收金额 |
ReceiveOrder.Txid | string | 是 | 订单交易哈希 |
接口请求示例:
{ "uid":136994, "timestamp":1716720904, "data":"{\"OrderType\":\"ReceiveOrder\",\"ReceiveOrder\":{\"UID\":\"136994\",\"OrderNo\":\"SK2405251145300005\",\"CustomerOrderNo\":\"122\",\"Status\":\"已完成\",\"FinishTime\":\"2024-05-25 17:27:28\",\"Amount\":\"1.0000\",\"AmountInFact\":\"1.0000\"}}", "sign":"90de05574c1630b4d11a94a32cd0bad6" }
请求地址:https://open.uugate.com/Open.Customer/CreatePaymentOrder
请求参数:
字段名称 | 字段类型 | 是否必填 | 说明 |
---|---|---|---|
Amount | string | 是 | 付款金额(USDT),预留4位小数,实际使用2位小数 |
CustomerOrderNo | string | 是 | 商户订单编号,即你自己系统里的订单编号,便于后续对账 |
Blockchain | string | 是 | 链路类型,目前只支持TRC20 |
FromAddress | string | 是 | 发起地址,填写具体地址或AUTO,AUTO表示自动匹配 |
ToAddress | string | 是 | 接收地址 |
接口请求示例:
{ "uid": "136994", "sign": "00bd24ca1fa29a333191235aad10621a", "timestamp": "1716700031", "data": "{\"Amount\":\"1\",\"Blockchain\":\"TRC20\",\"CustomerOrderNo\":\"127\",\"FromAddress\":\"TMQvgsJLGRh48sth9wgFN4Xptgs6TFkAbd\",\"ToAddress\":\"TSVAFSHBBsEHB6UbCn7ogUmZhjSpvHdPQN\"}" }
接口返回示例:
{ "PaymentOrder": { "OrderNo": "FK2405261145180046", "CustomerOrderNo": "127", "FromAddress": "TMQvgsJLGRh48sth9wgFN4Xptgs6TFkAbd" }, "code": 0, "msg": "success" }
请求地址:https://open.uugate.com/Open.Customer/GetPaymentOrderStatus
请求参数:
字段名称 | 字段类型 | 是否必填 | 说明 |
---|---|---|---|
UID | string | 是 | 商户UID |
OrderNo | string | 是 | 系统订单号 |
CustomerOrderNo | string | 是 | 商户订单号 |
Status | string | 是 | 订单状态,详见文档底部付款订单状态码 |
FinishTime | string | 是 | 订单完成时间,如果未完成则返回Null |
Amount | string | 是 | 订单金额(USDT),预留4位小数,实际使用2位小数 |
接口请求示例:
{ "uid": "136994", "sign": "00bd24ca1fa29a333191235aad10621a", "timestamp": "1716700031", "data": "{\"CustomerOrderNo\":\"FK2405211522064632\"}" }
接口返回示例:
{ "PaymentOrder": { "UID": "136994", "OrderNo": "FK2405211522064632", "CustomerOrderNo": "FK2405211522064632", "Status": "付款中", "Amount": "123.0000", "FinishTime": null }, "code": 0, "msg": "success" }
当订单完成时会进行回调。回调会最多进行3次,成功接收回调需返回'success'。请求方式为POST,Content-Type: application/json
请求地址:在商户后台->API接入中设置
请求参数:
字段名称 | 字段类型 | 是否必填 | 说明 |
---|---|---|---|
OrderType | string | 是 | 订单类型,付款回调时固定为PaymentOrder |
PaymentOrder.UID | string | 是 | 商户UID |
PaymentOrder.OrderNo | string | 是 | 系统订单号 |
PaymentOrder.CustomerOrderNo | string | 是 | 商户订单号 |
PaymentOrder.Status | string | 是 | 订单状态,详见文档底部收款订单状态码 |
PaymentOrder.FinishTime | string | 是 | 订单完成时间 |
PaymentOrder.Amount | string | 是 | 订单金额(USDT),预留4位小数,实际使用2位小数 |
PaymentOrder.Txid | string | 是 | 订单交易哈希 |
接口请求示例:
{ "uid": "136994", "timestamp": 1716721664, "data": "{\"OrderType\":\"PaymentOrder\",\"PaymentOrder\":{\"UID\":\"136994\",\"OrderNo\":\"FK2405261145180046\",\"CustomerOrderNo\":\"127\",\"Status\":\"付款中\",\"FinishTime\":null,\"Amount\":\"1.0000\"}}", "sign": "153902d63b413837012d65a6a18e3461" }
请求地址:https://open.uugate.com/Open.Customer/GetAdvanceAccountBalance
请求参数:
字段名称 | 字段类型 | 是否必填 | 说明 |
---|
接口请求示例:
{ "uid": "136994", "sign": "00bd24ca1fa29a333191235aad10621a", "timestamp": "1716700031", "data": "{}" }
接口返回:
字段名称 | 字段类型 | 是否必填 | 说明 |
---|---|---|---|
Balance | string | 是 | 账户余额 |
接口返回示例:
{ "AdvanceAccount": { "Balance": "2.8222" }, "code": 0, "msg": "success" }
请求地址:https://open.uugate.com/Open.Customer/GetWalletBalance
请求参数:
字段名称 | 字段类型 | 是否必填 | 说明 |
---|
接口请求示例:
{ "uid": "136994", "sign": "00bd24ca1fa29a333191235aad10621a", "timestamp": "1716700031", "data": "{\"Address\":\"TASz7np3asoQiUi9eG8F9TXPyrXYmTJtqg\"}" }
接口返回:
字段名称 | 字段类型 | 是否必填 | 说明 |
---|---|---|---|
Balance | string | 是 | 账户余额 |
接口返回示例:
{ "Wallet": { "Balance": "2.8222" }, "code": 0, "msg": "success" }
请求地址:https://open.uugate.com/Open.Customer/CreateWalletForSpecifiedUser
请求参数:
字段名称 | 字段类型 | 是否必填 | 说明 |
---|---|---|---|
SpecifiedUserID | string | 否 | 需要绑定的用户ID,非必填 |
接口请求示例:
{ "uid": "136994", "sign": "00bd24ca1fa29a333191235aad10621a", "timestamp": "1716700031", "data": "{\"SpecifiedUserID\":\"5\"}" }
接口返回:
字段名称 | 字段类型 | 是否必填 | 说明 |
---|---|---|---|
Balance | string | 是 | 账户余额 |
接口返回示例:
{ "Wallet": { "Address": "TASz7np3asoQiUi9eG8F9TXPyrXYmTJtqg", "SpecifiedUserID": "123", "Blockchain": "TRC20", }, "code": 0, "msg": "success" }
返回码 | 描述 |
---|---|
0 | 请求成功 |
403 | 认证失败或无权操作,具体信息见返回的msg字段 |
404 | 未找到相关信息,具体信息见返回的msg字段 |
-1 | 其他错误,具体信息见返回的msg字段 |
状态码 | 描述 |
---|---|
待付款 | 待付款 |
已完成 | 已完成 |
补单已完成 | 补单已完成(也视作完成) |
付款超时 | 付款超时 |
付款风险 | 付款风险 |
状态码 | 描述 |
---|---|
付款中 | 付款中 |
已完成 | 已完成 |
待付款 | 待付款 |