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
}