代码示例
- 代收下单支持法币与数字货币(USDT/BTC/ETH/TRX)交易
- 如果您想使用数字货币交易,请设置orderType=1;
- 通过商户用户ID来区分不同用户的交易
- 我们的数字代收订单分两个模式:有单模式和无单模式
- Ex: 收银台版本(v1.0和v3.0属于有单模式版本;v2.0和v4.0属于无单模式)
- Ex: v1.0、v2.0-只展示支付地址
- Ex: v3.0、v4.0-展示二维码和支付地址两种方式
- 您需要告诉我们您想使用何种数字货币和链网络进行交易(TRC20/BEP20/OMNI/ERC20/TRX)
- 我们后续会推出其他币种和网络的交易,敬请期待
# 代码示例
- 代码示例仅供参考
import com.google.gson.Gson;
import com.google.gson.JsonObject;
import cn.hutool.json.JSONUtil;
import java.io.IOException;
import java.security.NoSuchAlgorithmException;
import java.security.spec.InvalidKeySpecException;
import java.util.Map;
import java.util.TreeMap;
public class TopDigitPayDemo {
// 测试账号
private static final String MCH_NO = "PHOT000012"; // 商户号
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 payUrl = "https://ph-openapi.toppayment.com/crypto/pay/prePay";
private static final String payNotify = "your notify url";
private static final String cashNotify = "your notify url";
public static void main(String[] args) throws Exception {
// 代收
pay("USDT", "50.01", payUrl, MCH_NO, MCH_PRIVATE_KEY);
}
public static void pay(String method,String amount, String url, String mchNo, String privateKey) throws Exception {
Map<String, Object> requestParams = new TreeMap<>();
requestParams.put("mchNo", mchNo);
requestParams.put("timestamp", Long.valueOf(System.currentTimeMillis()));
requestParams.put("currency", method); // 支付渠道
requestParams.put("orderNum", "T" + System.currentTimeMillis()); // 商户订单号
requestParams.put("payMoney", amount); // 订单金额
requestParams.put("name", "JackMa");// 客户名称
requestParams.put("mchUserId", "0821229655121"); // 手机号
requestParams.put("orderVersion", "v1.0"); // 手机号/
requestParams.put("phone", "123456789"); // 手机号
requestParams.put("email", "[email protected]");// 客户邮箱
requestParams.put("downNotifyUrl", payNotify);// 回调地址
requestParams.put("redirectUrl", payNotify);// 回调地址
requestParams.put("expiryPeriod", "1440"); // 过期时间 单位(分)
requestParams.put("netWork", "TRC20");// 订单详情
StringBuilder stringBuilder = new StringBuilder();
for (String key : requestParams.keySet()) {
stringBuilder.append(requestParams.get(key)); // 拼接参数
}
String keyStr = stringBuilder.toString(); // 得到待加密的字符串
System.out.println("toSignatureString:\n" + keyStr);
String signedStr = TopPayRequestUtil.privateEncrypt(keyStr, TopPayRequestUtil.getPrivateKey(privateKey)); // 私钥加密
requestParams.put("sign", signedStr);
String postJson = new Gson().toJson(requestParams);
System.out.println("Post Json Params:\n" + JSONUtil.toJsonPrettyStr(postJson));
String responseJson = TopPayRequestUtil.doPost(url, postJson); // 发送 post json请求
System.out.println("Response Msg:" + responseJson );
System.out.println(JSONUtil.toJsonPrettyStr(responseJson));
}
}