API Call Description
I. Interface Request:
Interface parameters
| Sequence Number | Domain Name | Variable Name | Required | Type | Remarks |
|---|---|---|---|---|---|
| 1 | Version Number | version | M | String(6) | 1.0.0 |
| 2 | Merchant Number | userNo | M | Number | Unique number provided to merchants |
| 3 | Type | dataType | M | String(8) | Business Type |
| 4 | Datagram | dataContent | M | String(2048) | Data Content |
- Convert dataContent to a JSON string
- Base64 encode a JSON string
- Use RSA 1024 to asymmetrically encrypt the Base64-encoded string into a byte array
- Convert a byte array to a hexadecimal string
II. Interface Return:
| Sequence Number | Domain Name | Variable Name | Required | Type | Remarks |
|---|---|---|---|---|---|
| 1 | Success Identifier | success | M | boolean | Return true (success) or false |
| 2 | Error Code | errorCode | O | String(6) | success is false, errorCode has a value. For details, see the error code description. |
| 3 | Error Description | errorMsg | O | String(256) | Error description, not empty when success is false |
| 4 | Return result information | result | O | String(1024) | SUCCESS is empty when it is false, and not empty otherwise |
| 5 | Merchant Number | userNo | M | String(11) | Unique number provided to merchants |
| 6 | Is it asynchronous | async | M | Boolean | True 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);
}
Updated 5 months ago