ProductTransfer
Transfer Init With Temporary H5
URL
domain + /order/thirdFacade/transfer/initWithTemporaryH5
REQUEST
| PARAMETER | TYPE | REQUIRED | MAX LENGTH | DESCRIPTION | EXAMPLE VALUE |
|---|---|---|---|---|---|
| merchantOrderNumber | String | true | 64 | The merchant order number you send,ensure unique in your merchant, max length is 64 | 04ae304b5a2f4da2bf21190f0cf367f7 |
| merchantUserReference | String | true | 64 | TENN account number (The TENN account of the transfer beneficiary.) | 2389656826 |
| amount | Long | true | 64 | The transfer amount (Kobo) | 20000 |
| merchantUserPhone | String | true | 11 | Merchant user phone number | 51232132112 |
| returnUrl | String | false | 1024 | Return URL | https://xxx.com/return |
| failTransactionReturnUrl | String | false | 1024 | Return URL | https://xxx.com/return |
RESPONSE
| PARAMETER | TYPE | DESCRIPTION |
|---|---|---|
| id | String | TENN transfer id |
| merchantOrderNumber | String | merchant order number |
| url | String | The url of tranfer page. |
Implementation method
SDK
TransferBean transferBean = new TransferBean(new DeepxinPayConfig() {
@Override
public String getMerchantCode() {
return "Your merchant code";
}
@Override
public String getPublicKey() {
return "Your public key";
}
@Override
public String getPrivateKey() {
return "Your private key";
}
@Override
public String getServerAddress() {
return "https://tenn.deepxin.com";
}
});
MerchantTemporaryTransferInitParam param = new MerchantTemporaryTransferInitParam();
param.setAmount(20600L);
param.setMerchantUserReference("asds712321321gg12321j");
param.setMerchantUserPhone("51232132112");
param.setMerchantOrderNumber("04ae304b5a2f4da2bf21190f0cf367f7");
param.setReturnUrl("https://xxx.com/return");
MerchantTransferComplexModel merchantTransferComplexModel = transferBean.initWithTemporaryH5(param);
System.out.println(JacksonUtil.toJsonString(init));
HTTP
public static void main(String[] args) {
// Replace with the merchant's public key for either the testing environment or the production environment
String merchantPublicKey = "your public key";
// Replace with the merchant's private key for either the testing environment or the production environment
String merchantPrivateKey = "your private key";
// MerchantCode
String merchantCode = "your merchant code";
// Parameters
Map<String, Object> paramMap = getParamMap();
// Encrypt the parameters using the merchant's public key.
String encryptStr = encryptWithPublicKey(paramMap, merchantPublicKey);
// Sign the encrypted parameters using the merchant's public key.
String sign = sign(encryptStr, merchantPublicKey);
// Get Request parameters
Map<String, Object> requestMap = getRequestMap(encryptStr, merchantCode, sign);
String requestStr = JSONUtil.toJsonStr(requestMap);
String tennServerUrl = "https://tenn.deepxin.com/order/thirdFacade/transfer/initWithTemporaryH5";
try {
String result = HttpUtil.post(tennServerUrl, requestStr);
if (!JSONUtil.isTypeJSON(result)) {
System.out.println("Result is not a JSON type.");
return;
}
JSONObject entries = JSONUtil.parseObj(result);
String toDecryptStr = entries.getStr("data");
String responseSign = entries.getStr("sign");
if (SUCCESS_CODE == entries.getInt("code")) {
boolean verifySign = verify(responseSign, toDecryptStr, merchantPublicKey);
if (verifySign) {
String decryptStr = decryptWithPrivateKey(toDecryptStr, merchantPrivateKey);
System.out.println(decryptStr);
} else {
System.out.println("Signature verification failed.");
}
}else{
System.out.println(result);
}
} catch (Exception e) {
System.out.println(e.getMessage());
}
}
public static Map<String, Object> getParamMap() {
Map<String, Object> paramMap = new HashMap<>();
paramMap.put("merchantOrderNumber", "test-20241129-01");
paramMap.put("merchantUserReference","a1asad84qwe1010qwe515");
paramMap.put("merchantUserPhone","1841010515");
paramMap.put("amount","30000");
paramMap.put("returnUrl","https://xxx.com/return");
return paramMap;
}