ProductTransfer
Transfer Query
PayInfo
URL
domain + /order/thirdFacade/transfer/payInfo
REQUEST
| PARAMETER | TYPE | REQUIRED | MAX LENGTH | DESCRIPTION | EXAMPLE VALUE |
|---|---|---|---|---|---|
| id | String | true | 64 | The TENN transfer ID | 04ae304b5a2f4da2bf21190f0cf367f7 |
| merchantOrderNumber | String | true | 64 | Merchant order number | 2389656826 |
RESPONSE
| PARAMETER | TYPE | DESCRIPTION |
|---|---|---|
| id | String | TENN transfer id |
| merchantId | Integer | merchant id |
| merchantType | Integer | merchant type |
| merchantName | String | merchant name |
| merchantOrderNumber | String | merchant order number |
| amount | Long | transfer amount (Kobo) |
| status | Integer | 30001:Initiate 30003:Pending 30004:Successful 30005:Failed 30007:Closed |
| originatorAccountNumber | String | Originator account number |
| beneficiaryAccountNumber | String | Beneficiary account number |
| beneficiaryAccountName | String | Beneficiary account name |
| beneficiaryFirstName | String | Beneficiary first name |
| beneficiaryMiddleName | String | Beneficiary middle name |
| beneficiaryLastName | String | Beneficiary last name |
| beneficiaryPhone | String | Beneficiary phone |
| beneficiaryUserId | String | Beneficiary user id |
| beneficiaryBvn | String | Beneficiary bvn |
| beneficiaryLevel | Integer | Beneficiary level |
| currency | String | Currency |
| createdTime | LocalDateTime | Create time |
| expireTime | LocalDateTime | ExpireTime |
| transferTime | LocalDateTime | Transfer time |
| updateTime | LocalDateTime | Update time |
| notifyUrl | String | Webhook url |
| msg | String | Msg |
| splitFlag | Boolean | If the transfer amount is too large, the order will be split. |
| batchNumber | String | The batch number of order splitting. |
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";
}
});
MerchantTransferSingleQO param = new MerchantTransferSingleQO();
param.setId("04ae304b5a2f4da2bf21190f0cf367f7");
param.setMerchantOrderNumber("9801304b5a2f4da2bf21190f0cf367f7");
MerchantTransferComplexModel merchantTransferComplexModel = transferBean.payInfo(param);
System.out.println(JacksonUtil.toJsonString(merchantTransferComplexModel));
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/payInfo";
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("id", "04ae304b5a2f4da2bf21190f0cf367f7");
paramMap.put("merchantOrderNumber","9801304b5a2f4da2bf21190f0cf367f7");
return paramMap;
}
PayInfo List
URL
domain + /order/thirdFacade/transfer/payInfoList
REQUEST
| PARAMETER | TYPE | REQUIRED | MAX LENGTH | DESCRIPTION | EXAMPLE VALUE |
|---|---|---|---|---|---|
| id | String | false | 64 | The TENN transfer ID | 04ae304b5a2f4da2bf21190f0cf367f7 |
| idList | List |
false | - | List of TENN transfer ids | |
| productNumber | Integer | false | 10 | TENN product number | 10 |
| status | Integer | false | 10 | 30001:Initiate 30003:Pending 30004:Successful 30005:Failed 30007:Closed |
|
| merchantOrderNumber | String | false | 64 | Merchant order number | 2389656826 |
| merchantOrderNumberList | List |
false | - | List of merchant order number | |
| createTimeBegin | String | false | 255 | The start range of the order creation time | 2020-01-0100:11:22 |
| createTimeEnd | String | false | 255 | The end range of the order creation time | 2026-01-0100:11:22 |
| transferTimeBegin | String | false | 255 | The start range of the order completed time | 2022-01-02 11:00:25 |
| transferTimeEnd | String | false | 255 | The start range of the order completed time | 2025-12-31 11:00:25 |
RESPONSE
| PARAMETER | TYPE | DESCRIPTION |
|---|---|---|
| id | String | TENN transfer id |
| merchantId | Integer | merchant id |
| merchantType | Integer | merchant type |
| merchantName | String | merchant name |
| merchantOrderNumber | String | merchant order number |
| amount | Long | transfer amount (Kobo) |
| status | Integer | 30001:Initiate 30003:Pending 30004:Successful 30005:Failed 30007:Closed |
| originatorAccountNumber | String | Originator account number |
| beneficiaryAccountNumber | String | Beneficiary account number |
| beneficiaryAccountName | String | Beneficiary account name |
| beneficiaryFirstName | String | Beneficiary first name |
| beneficiaryMiddleName | String | Beneficiary middle name |
| beneficiaryLastName | String | Beneficiary last name |
| beneficiaryPhone | String | Beneficiary phone |
| beneficiaryUserId | String | Beneficiary user id |
| beneficiaryBvn | String | Beneficiary bvn |
| beneficiaryLevel | Integer | Beneficiary level |
| currency | String | Currency |
| createdTime | LocalDateTime | Create time |
| expireTime | LocalDateTime | ExpireTime |
| transferTime | LocalDateTime | Transfer time |
| updateTime | LocalDateTime | Update time |
| notifyUrl | String | Webhook url |
| msg | String | Msg |
| splitFlag | Boolean | If the transfer amount is too large, the order will be split. |
| batchNumber | String | The batch number of order splitting. |
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";
}
});
MerchantTransferMultiQO param = new MerchantTransferMultiQO();
param.setTransferTimeBegin("2025-01-01 00:00:00");
param.setTransferTimeEnd("2025-01-10 23:59:59");
List<MerchantTransferComplexModel> list = transferBean.payInfoList(param);
System.out.println(JacksonUtil.toJsonString(list));
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/payInfoList";
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("transferTimeBegin", "2025-01-01 00:00:00");
paramMap.put("transferTimeEnd","2025-01-10 23:59:59");
return paramMap;
}
{
"code": 100000,
"msg": null,
"data": [{
"id": "202411290806020983915135",
"merchantId": 5,
"merchantType": 0,
"merchantName": "Test2",
"merchantOrderNumber": "b787c809ef6749e59bf15feb67bca4f0",
"amount": 20600,
"status": 30004,
"originatorAccountNumber": "464853244842102867",
"beneficiaryAccountNumber": "1841010515",
"beneficiaryAccountName": "zhang yy jj",
"beneficiaryFirstName": "zhang",
"beneficiaryMiddleName": "yy",
"beneficiaryLastName": "jj",
"beneficiaryPhone": "1841010515",
"beneficiaryUserId": "202406060812140102624493",
"beneficiaryBvn": "88988989898",
"beneficiaryLevel": 3,
"currency": "NGN",
"createdTime": "2024-11-29 08:06:04.000",
"expireTime": "2024-11-29 09:06:04.000",
"transferTime": "2024-11-29 08:06:06.000",
"updateTime": "2024-11-29 08:06:07.000",
"notifyUrl": "www.baidu.com",
"msg": "Transfer was successful",
"splitFlag": null,
"batchNumber": null
}, {
"id": "202411290742530983870264",
"merchantId": 5,
"merchantType": 0,
"merchantName": "Test2",
"merchantOrderNumber": "04ae304b5a2f4da2bf21190f0cf367f7",
"amount": 20000,
"status": 30004,
"originatorAccountNumber": "464853244842102867",
"beneficiaryAccountNumber": "1841010515",
"beneficiaryAccountName": "zhang yy jj",
"beneficiaryFirstName": "zhang",
"beneficiaryMiddleName": "yy",
"beneficiaryLastName": "jj",
"beneficiaryPhone": "1841010515",
"beneficiaryUserId": "202406060812140102624493",
"beneficiaryBvn": "88988989898",
"beneficiaryLevel": 3,
"currency": "NGN",
"createdTime": "2024-11-29 07:42:54.000",
"expireTime": "2024-11-29 08:42:54.000",
"transferTime": "2024-11-29 07:42:57.000",
"updateTime": "2024-11-29 07:42:58.000",
"notifyUrl": "www.baidu.com",
"msg": "Transfer was successful",
"splitFlag": null,
"batchNumber": null
}],
"sign": "nzjE1ioib6q3s2xfGxwZn6jiD+GkRXsyF6rzmx0Irskc65kYHCyErjby1+Y5oGV+KSmwhYrDvukQq4l9nLyQO+LU10Q85p+fnylKDGOZyXcUKHKl9QnBYmPdPhxDvpqjAOka6+GAp1OUAm41b1FXEPspYzZ8BvscXE5iv215upo=",
"success": true
}