数字货币代付下单

  • 数字货币交易支持币种:(USDT/BTC/ETH/TRX),如果您想使用数字货币交易,请设置 orderType=1,并传入对应的货币币种 Currenecy 和网络 netWork。
  • 使用数字货币进行交易时,币种和链网络是必传项,您需要告诉我们您想使用何种数字货币和链网络 (TRC20/BEP20/OMNI/ERC20/TRX) 进行交易。
  • 使用数字货币进行交易时,您需要传入您的 inAddress 用以收取数字货币。

# 代码示例

  • 代码示例仅供参考,具体参数说明请参考请求参数说明
import com.google.gson.Gson;
import com.google.gson.JsonObject;
import java.util.Map;
import java.util.TreeMap;
public class TopPayDemo {
  private static final String MCH_ID = "S820211021094748000001"; // 商户号
  private static final String PLAT_PUBLIC_KEY = "MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC2JoMfFqLsSJjAiCahEnlP3aRj8yCT+WHzR+VvPBTw9S1i7iYWb+MY09CG/HYuHF4+IxshXDJygmndxKf/esuwPybS8mAd//yubHpmZsmBqg1FffT8VH1APa6ZRWASUp4U01ZrbCCp35QA8FuWrJGMJxGx4xk7KUtV2yujxC8noQIDAQAB"; // 平台公钥
  private static final String MCH_PRIVATE_KEY = "MIICeAIBADANBgkqhkiG9w0BAQEFAASCAmIwggJeAgEAAoGBAJU8gKFKD0luIYx7X8+JRdCIE0UDBctS6LjXxWLEv/EO7jDBTid6zYP1KmNgpd2DAWWtBFBSQ+gcNwVZZSBHJiSDqVvvJVs2FEbeBvfdv4X93+IYRAXksBasSW5Tpdshbo82pVL4V7wuKCuFLk9UxBHbpQjWAbfyF66RmwIbZD71AgMBAAECgYBjPe7UU2nDDSfmQg0++CyjNjqKRC5QPfxhH6w1uF1kMueXKJWOj42n2RutJpJmsj31nY8m0u4xpsG4HvCu/GGSFhhKZCHLvzp41oY2ubYj9nuFNU//81LycQjulWo2y0UUBY0k2piEt+SwPaiUNbT6nMxNMjlnjRe2okp/3rw+KQJBANG3YlZWoVbCEqzy64bJJLxiPsCA5ErGB0NzRGitq44xkhqGtR8ZZQyVz40pruNa58d73O2xyJSy5+fmZGn4E+sCQQC2LBnguj0CSCKub0mPDcunTTz9V79VXBBZdlB1/YGmRUx2s4sQrJNZS7rL4EqBQ3maIRnG+s+AXCSTfsYrV6CfAkEAxugnVfpelhoGepEAgNuggyivmgfl/2Gpm/jk5l/qOjib+ZrQiQmeBPzGWX4yiSM8eMDrP2sC8r5pJFMp5DRONwJBAJ4n4XuSFJ9jgwCPy3vvzSv9SYLk6E6yM9uHdUlKgoGYzk6Lh6M9QFuY/J49plFdBDiEnj16yCU3WeXXfTJpzB8CQQDMNMR/rIOTE9xGybS3mlQbt22AUnO6XhupWcckEKW4nPGxATwYBQzCY3i/9FTGN0vA+9ZPC2cwHtNxI2kXf3Vp"; // 商户私钥
  private static final String cashUrl = "https://id-openapi.toppay.asia/gateway/cash";
  private static final String cashNotify = "http://host:port/notify";

  public static void main(String[] args) throws Exception {
    cash();
  }
  private static void cash() throws Exception {
    Map<String, String> requestParams = new TreeMap<>();
    requestParams.put("merchantCode", MCH_ID);
    requestParams.put("orderNum", "186888188666"); // 商户订单号
    requestParams.put("method", "USDT"); // 收款方式(USDT/BTC/ETH/TRX)
    requestParams.put("orderType", "1"); // 订单类型(1-数字货币交易)
    requestParams.put("money", "1.000001"); // 订单金额,最大支持6位小数
    requestParams.put("feeType", "1");  // 手续费类型(0:代付金额内扣除,1:手续费另计)
    requestParams.put("dateTime", "20200101235959"); // 时间戳 格式 yyyyMMddHHmmss
    requestParams.put("name", "test cash name"); // 客户名称
    requestParams.put("mobile", "082122965511"); // 客户手机号
    requestParams.put("email", "[email protected]"); // 客户邮箱
    requestParams.put("description", "test cash"); // 描述
    requestParams.put("notifyUrl", cashNotify); // 回调地址
    requestParams.put("currency", "USDT"); // 数字货币币种(必填项,否则会无法完成交易)
    requestParams.put("netWork", "TRC20"); // 链网络(必填项,否则无法完成交易)
    requestParams.put("inAddress", "zkif74bhvkf8934rgg6"); // 入账地址(必填项,否则无法完成交易)

    StringBuilder stringBuilder = new StringBuilder();
    for (String key : requestParams.keySet()) {
      stringBuilder.append(requestParams.get(key)); // 拼接参数
    }

    String keyStr = stringBuilder.toString(); // 得到待加密的字符串
    System.out.println("keyStr:" + keyStr);
    String signedStr = TopPayRequestUtil.privateEncrypt(keyStr, TopPayRequestUtil.getPrivateKey(MCH_PRIVATE_KEY)); // 私钥加密
    requestParams.put("sign", signedStr);

    String postJson = new Gson().toJson(requestParams);
    System.out.println("Post Json Params:" + postJson);

    String responseJson = TopPayRequestUtil.doPost(cashUrl, postJson); // 发送 post json请求
    System.out.println("Response Msg:" + responseJson);

    boolean pass = TopPayRequestUtil.verifySign(new Gson().fromJson(responseJson, JsonObject.class), PLAT_PUBLIC_KEY); // 签名验证
    if (pass) {
      // ... 签名验证通过,执行正常的业务逻辑
    } else {
      // ... 签名验证错误
    }
  }
}
暂无示例
暂无示例
暂无示例
暂无示例
暂无示例

# 请求地址

  • 请求方式 : POST
  • 请求地址 : https://id-openapi.toppay.asia/gateway/cash

# 请求参数

注:所有的参数中,不要填写中文!!!

参数 类型 必填 描述 示例
merchantCode String Y 商户ID,在商户平台-个人中心-个人信息中获取 S820211021094748000001
orderType string(10) Y 订单类型 1-数字货币交易
method string(10) Y 收款方式 USDT
BTC
ETH
TRX
orderNum String Y 商户订单号 186888188666
money String Y 代付金额 (最大支持6位小数)
如果feeType选择0的话,因为涉及到手续费,所以麻烦您先以3位小数的金额进行代付下单
1.000001
feeType String Y 手续费类型
0:代付金额内扣除
1:手续费另计
0
name String Y 客户名称 Jack
mobile String Y 用户手机号码 081234567890
email String Y 用户邮箱 [email protected]
notifyUrl String Y 回调地址 https://***.com
dateTime String Y 时间戳 (格式:yyyyMMddHHmmss) 20200101235959
currency string(14) Y 数字货币币种 USDT
netWork string(30) Y 链网络 TRC20
inAddress String Y 入账地址 vboj3457vbiae5y35y

# 请求报文示例

{
  "merchantCode": "S820211021094748000001",
  "orderType": "1",
  "method": "USDT",
  "orderNum": "186888188666",
  "money": "1.00000001",
  "feeType": "1",
  "name": "test cash name",
  "mobile": "082122965511",
  "email": "[email protected]",
  "notifyUrl": "your notify url",
  "dateTime": "2021-07-12 09:41:00",
  "currency": "USDT",
  "netWork": "TRC20",
  "inAddress": "vboj3457vbiae5y35y",
  "sign": "Yg+ePvTFhiRrARcZKBcRG0l89rqisPIuZQStYqBIwSMPaqwH77qRXI1J+jElOBpa"
}

# 响应参数

参数 类型 描述 示例
platRespCode String 请求业务是否成功 FAIL:失败\SUCCESS:成功
platRespMessage String 接口响应信息提示 请求成功
platOrderNum String 平台订单号 PI1453242857400963072
status String 订单状态 查看订单状态描述
statusMsg String 订单状态信息 Apply
orderNum String 商户订单号 23645782
money String 代付金额 1.00000001
fee String 手续费金额 12.25
feeType String 手续费类型
0:代付金额内扣除
1:手续费另计
0
name String 客户名称 Jack
currency String 数字货币币种 USDT
netWork String 链网络 TRC20
platSign String 签名 PI1453242857400963072

# 响应报文示例

{
  "platRespCode": "SUCCESS",
  "platRespMessage": "Request success",
  "platOrderNum": "W0620220119174331000001",
  "orderNum": "186888188666",
  "status": "0",
  "statusMsg": "Apply",
  "money": "50000",
  "fee": "7",
  "feeType": "1",
  "currency": "USDT",
  "netWork": "TRC20",
  "platSign": "E5uNF7B9NXyhtlRo2I7/KVHN4Sbz0c3VbwCLpH3vjUpv6Cai+bmJA/Q8dVE2RJRe1+dsbzg=="
}

# 代付异步通知

  • 进行验签时,要用 商户后台-收付款配置-API配置 中提供的平台公钥进行解密!!!
  • 进行验签时,以实际回调的参数为准,不要验签固定的参数。
  • 订单的最终状态以通知的 status 为准!!!
  • 接收到结果异步通知后,需响应 SUCCESS 字符串,不包含引号,不是 Json 格式。否则 TopPay 将继续向下游发起5次通知。

# 通知参数

参数 描述 示例
platOrderNum 平台订单号 BK_1563278763273
orderNum 商户订单号 T1231511321515
money 代付金额 1.00000001
feeType 手续费类型
0:代付金额内扣除
1:手续费另计
1
fee 手续费 500
name 客户名称 Neo
status 订单状态 查看订单状态描述
statusMsg 订单状态描述 Payout Success
hashCode 交易哈希 5e5c356af0ewrhgnf3d757h8a6a5506cc66354620
inAddress 接收地址 TDBbbeAB32WE576DVGE82GEC5BhsZs4
sendAddress 发送地址 TDBbbeAB32WE576DVGE82GEC5BhsZs4
platSign 平台签名 ja6R8eukQY9jc8...

# 异步通知报文示例

{
  "platOrderNum": "W0620220119174331000001",
  "orderNum": "186888188666",
  "money": "1.00000001",
  "fee": "0.0001",
  "feeType": "1",
  "currency": "USDT",
  "netWork": "TRC20",
  "name": "test cash name",
  "status": "2",
  "statusMsg": "SUCCESS",
  "hashCode": "5e5c356af0ewrhgnf3d757h8a6a5506cc66354620",
  "inAddress": "Twrgtehsd576gsdre876d2545C5Br23324",
  "sendAddress": "TDBbbeAB32WE576DVGE82GEC5BhsZs4",
  "platSign": "LGEpz2LjbZ6Iyvn+zLc/+t26AaH0aEhHVD62lSCdo6XIkAg86AUncCvmym62wVoE3r2+dHnv27qi/01UQDcqFK8DYioRCcydYSjB4QRVezG3fcZlhWrACmWGacnXkE7p5zChL7pK5h0HuBhbo1zKt4FunQR6QMmcBVfv7YfB3W0"
}