API Call Description

I. Interface Request:

Interface parameters

Sequence NumberDomain NameVariable NameRequiredTypeRemarks
1Version NumberversionMString(6)1.0.0
2Merchant NumberuserNoMNumberUnique number provided to merchants
3TypedataTypeMString(8)Business Type
4DatagramdataContentMString(2048)Data Content
  1. Convert dataContent to a JSON string
  2. Base64 encode a JSON string
  3. Use RSA 1024 to asymmetrically encrypt the Base64-encoded string into a byte array
  4. Convert a byte array to a hexadecimal string

II. Interface Return:

Sequence NumberDomain NameVariable NameRequiredTypeRemarks
1Success IdentifiersuccessMbooleanReturn true (success) or false
2Error CodeerrorCodeOString(6)success is false, errorCode has a value. For details, see the error code description.
3Error DescriptionerrorMsgOString(256)Error description, not empty when success is false
4Return result informationresultOString(1024)SUCCESS is empty when it is false, and not empty otherwise
5Merchant NumberuserNoMString(11)Unique number provided to merchants
6Is it asynchronousasyncMBooleanTrue indicates that the callback notification result will be called in business processing, false indicates synchronous processing, and result

1、The returned data format is the same as that of the merchant's JSON. After decrypting with the public key, and then decoding Base64, you can obtain it.

Encryption code:

public void encryptByPfxTest(){
  String path = this.getClass().getClassLoader().getResource("test_pri.pfx").getPath();
  Map<String,String> req = new HashMap<>();
  req.put("dataType","json");
  req.put("version","1.0.0");
  req.put("userNo","***");
  OpenapiDptPaymentBillTransactionReq data = new OpenapiDptPaymentBillTransactionReq();
  data.setAmount(new BigDecimal(5));
  data.setCurrency("USDT");
  data.setChain("TRON");
  data.setSerialNumber("TEST_BILL" + System.currentTimeMillis());
  System.out.println("before encrypt request param: " + JSON.toJSONString(data));
  String encryptData = FormatUtil.byte2Hex(RsaUtil.encryptToBytes(Base64.encode(JSON.toJSONString(data)), RsaUtil.initPrivateKey(path,"123456")));
  System.out.println("encrypt data: " + encryptData);
  req.put("dataContent", encryptData);
  System.out.println("request body: " + JSON.toJSONString(req));
}

Decryption code (decrypt using public key):

private static final String PLATFORM_PUB_KEY = "***";

public void decryptByStringPublicKeyTest(){
  String str = "{\"result\":\"3b81435c887afa484ffcbe98c2ccbe2c3972b9ad3a71861acd8e9ebe0816e7704b3b8280fa136698ea5a5c07b7082de7ee8758d67f73596898a4f0be9d80c7d3ce90886f7396da9d2ed0e4af5e4de7d66663fce3c78f5ce8394d7f76ee0d6680577ee5cb4a54fc367d95de08bce134ba208f9da21379e50dfb35d5da9c922d5047f03ded1618e59196550709531fae27a0dc82fa75c81077af6a7d0ef7945bccb55f7958774148c4446c8222a4c37e9c74edfbf0834244c7715d67c1d341a04ec89cb60ddd32c1055b7c0df7ca8c66c793a1a80ebd357c5f663851665b8ad56c3caffc6800e0490f2de4c33cf5ea4320c32bbbeb00472309507f32a7838210c854ccf2e99c179abd66fdd5b7fa48fb0bad3d4c8c2db80f0b990d00237c2f1e896772ebe5f83cfd33a89012a1596333fc9dbbde6b8f58939d20ba2a7a02c2c1d95281448e663ff2669efd112a150b0018cf023a2d7d1fe6e2d9e3232445a18b158a75687526ef180d85b6ec4fe0fdd564ac8bd17a76a999a7df71677a552d9dc6\",\"async\":false,\"success\":true,\"userNo\":\"***\"}";
  JSONObject jsonObject = JSON.parseObject(str);
  String result = RsaUtil.decryptToString(jsonObject.getString("result"), RsaUtil.getPublicKey(PLATFORM_PUB_KEY));
  System.out.println("decrypt response: " + result);
}

Decryption code (using certificate decryption):

public void decryptByCerTest(){
  String path = this.getClass().getClassLoader().getResource("test_pub.cer").getPath();
  String str = "{\"result\":\"d8de0d888eeec6a5e7560be786b076467604227a96a409295fbd294a5f14b4a9da63d42c528ac4f58b88db736f0e5ffc1a5d73eae256a38bcd47b9e58ed908532bfc0a245e0ae6cb753f96a1129dab62557c7b9394463ce3b476b250526e48f51a0b3492593b390e73463d0e1cc4b1bebc2bb990d6e078a2fc1e1cdb1740a78f5578766d5161391f1e5c8fcd8e6a29c6585220d6482646077af1226bf3e84f668c9e4066a1baa1d98e862a334b15e8233fcdbb029e53c963f4f22d51799d6513acc64523d94b0fda847fbb40394698183614b01b8e4d16fbaed120102417f4929922b4851e10013e7b776700b80eb3a8e616b59a3ac629d9f22755363533ba042b746e5714ccda18e51765306fadac6ccffe61f45e2b43d839cafdfb883cc43075a7fcc6b510805808caea88d7d675d4fcf896ae01be0227ae2d16b0f57fce67eb63225d0eaa87914d80d58b6e96b74be81d47b860b7a8f9b03aabeb092a4f29b951e5f5fea888d9050281f69b0431d214dfffc264d6bba575efdc178c462f7a4c13ab93c7dfc5db81cf963cccdafce469bb41f61f77cb75d8b9ab8f33f3eb848d499133d7918af7462b57ef7dc7307de4d55b6e5ea301a4e0908b9acfe51ddf9c1f5916257deacebc250c1a08b5c07cb4b37dd378dd7267080d3fe794159ab2e9497f63c2b83b8ac3dec0fcb5b18cb4b2ae7009b92e3f2aacc9b9d79154cefe\",\"async\":false,\"success\":true,\"userNo\":\"***\"}";
  JSONObject jsonObject = JSON.parseObject(str);
  String result = RsaUtil.decryptToString(jsonObject.getString("result"), RsaUtil.initPublicKey(path));
  System.out.println("decrypt response: " + result);
}