接入说明
商户需通过联系dizpay支付平台申请app_id和app_key
签名规则
1.在你的入参加入app_id和app_key两个字段
例 POST 参数:
{
"number": "8eb9bc53-75ea-4142-8a91-af89d2246379",
"address": "1DLVkXuZrSVhw9Ymm72csp99A8wufe76F8",
"to_address": "1DLVkXuZrSVhw9Ymm72csp99A8wufe76F8",
"amount": "1",
"fee": "0.002"
}
加上app_id,app_key后。
{
"app_id": "dp9vC69mdA3QG2VPRe",
"app_key": "e145d582c31928ca103d262b200e882d",
"number": "8eb9bc53-75ea-4142-8a91-af89d2246379",
"address": "1DLVkXuZrSVhw9Ymm72csp99A8wufe76F8",
"to_address": "1DLVkXuZrSVhw9Ymm72csp99A8wufe76F8",
"amount": "1",
"fee": "0.002"
}
2.将这些参数按照字母顺序并按照k1=v1&k2=v2.... 这种方式排列起来,中文需要utf8编码。
生成列表:
address=1DLVkXuZrSVhw9Ymm72csp99A8wufe76F8&amount=1&app_id=dp9vC69mdA3QG2VPRe&app_key=e145d582c31928ca103d262b200e882d&fee=0.002&number=8eb9bc53-75ea-4142-8a91-af89d2246379&to_address=1DLVkXuZrSVhw9Ymm72csp99A8wufe76F8
3.计算MD5值(小写)
signature: f433acfea90730724f8261fdb0d502e1
通过跳转我们dizpay的收款台完成您的支付。
示例URL:
收款台URL说明
GET | http://cryptopay.icaipay.net/cn/cryptopay?crypto={crypto}&amount={amount}&app_id={app_id}&number={number}&erc20_token={erc20_token}¬ify_url={notify_url}&theme={theme}&is_rate={is_rate} |
---|
链接中的cn表示默认为中文。如果需要默认为英文,可以修改cn为en。
参数详解:
参数 | 是否必须参数 | 描述 |
---|---|---|
crypto | 必选 | 数字货币,如USDT (支持的数字货币:USDT, BTC, ETH, LTC, DASH, GUSD) |
amount | 必选 | 数字货币的数量 |
app_id | 必选 | 你的app_id |
number | 必选 | 订单号(全局唯一) |
erc20_token | 可选 | 可选(0或者1),默认为0,0:非token币,1:token币 |
notify_url | 可选 | 通知回调地址,需要带上http协议,url需要encode |
theme | 可选 | 可选值为'simple',简单版收款台 |
is_rate | 可选 | (0或者1,默认为1) 是否在收款台显示汇率,用于自定义汇率比例,保持数据同步 |
回调通知
-
通过你配置的notify_url回调你支付信息。方便告知您用户的支付结果。
-
回调规则如下: 商户后台接收到通知后先对报文进行验签,验签通过后执行相关的业务逻辑,最后需要给支付网关返回http状态 200 表示成功。如果支付网关 3s 内未能正常接收 200 成功,就认为商户后台没有正常接收到通知,支付网关将每隔 10 分钟下发一次通知。重试 1 天后,支付网关不再做任何处理。
-
回调数据为json格式,回调方式为POST, 回调数据示例
字段 | 类型 | 描述 |
---|---|---|
number | String | 订单号 |
currency_code | String | 数字货币 |
amount | String | 应付金额 |
paid_amount | String | 已付金额 |
delta_amount | String | 本次支付金额 |
extra | String | 备注信息 |
erc20_token | Int | 是否token币,0表示非token币,1表示token币 |
status | Int | 1表示进行中,2表示已完成,4表示已取消 |
signature | String | 签名 |
比对amount
和paid_amount
字段,我们认为当paid_amount ≥ amount
就表示支付成功。只有支付成功dizpay支付网关才会回调。收到回调信息后,需要你去验证您的签名。确认签名无误后。再去处理您的业务逻辑。
验签
将回调字段中的除signature字段所有参数加入app_id,app_key来参与签名(app_id和app_key需要替换成你自己的). 参与签名的参数
{
"app_id": "dp9vC69mdA3QG2VPRe",
"app_key": "e145d582c31928ca103d262b200e882d",
"number": "8eb9bc53-75ea-4142-8a91-af89d2246379",
"currency_code": "USDT",
"amount": "100.00000000",
"paid_amount": "100.00000000",
"delta_amount": "100.00000000",
"extra": "",
"erc20_token": 0,
"status": 2,
}
对签名参数进行排序(按字母表顺序(sort)) 排序后的参数:
{
"amount": "100.00000000",
"app_id": "dp9vC69mdA3QG2VPRe",
"app_key": "e145d582c31928ca103d262b200e882d",
"currency_code": "USDT",
"delta_amount": "100.00000000",
"erc20_token": 0,
"extra": "",
"number": "8eb9bc53-75ea-4142-8a91-af89d2246379",
"paid_amount": "100.00000000",
"status": 2,
}
将排序后的参数按照k1=v1&k2=v2.... 这种方式排列起来。 排列后的字符串:
'amount=100.00000000&app_id=dp9vC69mdA3QG2VPRe&app_key=e145d582c31928ca103d262b200e882d¤cy_code=USDT&delta_amount=100.00000000&erc20_token=0&extra=&number=8eb9bc53-75ea-4142-8a91-af89d2246379&paid_amount=100.00000000&status=2'
求上面字符串的md5值(即签名结果,注意MD5值为小写)
汇率
我们提供了美元兑换其他法币的汇率接口以及数字货币兑换美元的汇率接口。
更多接口详见官方文档。