ProductPayment

Query order

URL

domain + /order/thirdFacade/balancePay/queryPaymentByMerchantOrderNumber

REQUEST

PARAMETER TYPE REQUIRED MAX LENGTH DESCRIPTION EXAMPLE VALUE
merchantOrderNumber String true 64 Merchant order ID (it should be generated by merchants) 2212150922229pch66654234

RESPONSE

PARAMETER TYPE DESCRIPTION
transactionNumber String TENN Transaction Order ID
merchantOrderNumber String Merchant order ID
merchantId String Merchant Id
amount Long Payment Amount (Currency in Kobo, equivalent to cents)
tennAccount String TENN Account Number
status Integer 5: Success
6: Failed
7: Reversed
8: Closed
paymentCreateTime LocalDateTime Payment create time
paymentCompletionTime LocalDateTime Payment completion time
notifyUrl String Webhook URL (configured in TENN)
msg String Message

Implementation method

SDK

public static void main(String[] args) {
    // Create an instance of the PaymentBean with the DeepxinPayConfig implementation
    PaymentBean paymentBean = new PaymentBean(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";
        }
    });

    // Create a PaymentSimpleParam instance
    PaymentSimpleParam param = PaymentSimpleParam.builder()
            .merchantOrderNumber("11112023101909873")
            .build();

    // Make a request to obtain the URL of the payment page
    R<PaymentComplexModel> paymentComplexModel = paymentBean.queryPaymentByMerchantOrderNumber(param);

    // Get the transactionNumber from the response data
    String transactionNumber = paymentComplexModel.getData().getTransactionNumber();

    // Print the obtained URL
    System.out.println("Payment Complex transactionNumber: " + transactionNumber);
}

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/balancePay/queryPaymentByMerchantOrderNumber";
    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-20240722-1056");
    return paramMap;
}
Query order