Fiat currency payment order inquiry
# Request URL
- POST https://test2-openapi.91fafafa.com/api/payment/india/order/query
# Request parameters
| Parameter | Type | Required | Description | Example |
|---|---|---|---|---|
| appId | string | Y | MerchantappId | B2iwKFIM4tvo |
| merchantId | string | Y | MerchantId | CH10001165 |
| orderNo | string | Y | orderNo | 1768261003399663616 |
| orderNoType | string | Y | Ordernumbertype merchant-merchantordernumber platform-platformordernumber | merchant |
| timestamp | long | Y | Timestamp(milliseconds) | 1710385869989 |
| sign | string | Y | sign | KDvgD7z+ER5uNnR/IiiShowSaGXkYxaBXxRtg+25Q1at UUcu/zikMfSDUJxBXIdNo9Bdk7QbjWFjHe/l4j6mR3wY Jit0NRmeql7VW1VB4GUEpRE/zijX2JLhag0bvhBYZr3V rlGvIlJUA+Dms0PmliUJBrAFqGtR/SOYM6wSRaNgtg9z NPZKuSf4PT1qxWh7Bd5Kxs06crExm4Iw/+2aJiGwprdU vo8veJkHlnoMeG7KWila8J/Fjot+TSN+37VXwfUYzC4s Nysm4SLoXLnQsqF7GBNAXImkokeRfPcFCCxVDlPbizMZ t35mVBh7u5bAoY4cZYZV5eMPw8ocyiEMZw== |
# Example of request message
{
"appId": "B2iwKFIM4tvo",
"merchantId": "CH10001165",
"orderNo": "1768261003399663616",
"orderNoType": "platform",
"timestamp": "1710385869989",
"sign": "KDvgD7z+ER5uNnR/IiiShowSaGXkYxaBXxRtg+25Q1atUUcu/zikMfSDUJxBXIdNo9Bdk7QbjWFjHe/l4j6mR3wYJit0NRmeql7VW1VB4GUEpRE/zijX2JLhag0bvhBYZr3VrlGvIlJUA+Dms0PmliUJBrAFqGtR/SOYM6wSRaNgtg9zNPZKuSf4PT1qxWh7Bd5Kxs06crExm4Iw/+2aJiGwprdUvo8veJkHlnoMeG7KWila8J/Fjot+TSN+37VXwfUYzC4sNysm4SLoXLnQsqF7GBNAXImkokeRfPcFCCxVDlPbizMZt35mVBh7u5bAoY4cZYZV5eMPw8ocyiEMZw=="
}
# Response parameters
| Parameter | Type | Required | Description | Example |
|---|---|---|---|---|
| code | String | Y | Response code 000000 for success, others for failure | 000000 |
| msg | String | Y | Response description success: successful | success |
| amount | String | Y | Order amount | 1550 |
| fee | String | N | Handling fee | 170.5 |
| feeCurrency | String | N | Fee currency | INR |
| payAmount | String | Y | Actual payment amount | 1550 |
| paymentMethod | String | Y | Payment method | LOCAL_PAY |
| currency | String | Y | Transaction currency | INR |
| settleStatus | Integer | Y | Settlement status 0-Unsettled; 1-Settled; 2-Refunded | 1 |
| settleFinishTime | Long | N | Settlement completion time (epoch milliseconds) | 1710385869989 |
| paymentStatus | Integer | Y | Payment status 0-In progress; 1-Successful; 2-Refunded; 3-Partial payment(There is no status 3 at the moment); 4-Failed | 1 |
| paymentFinishTime | Long | N | Payment completion time (epoch milliseconds) | 1710385869989 |
| payerUpiId | String | N | Payer UPI Id; null if not applicable or absent | null |
| utr | String | N | UTR (bank transaction reference) | 407429451910 |
| paymentInfo | Object | N | Payment / collection vehicle and related details; shaped by paymentMethodType; see paymentInfo below. May be omitted. | See below |
| callBackStatus | Integer | Y | Callback status 0-Not notified; 1-Notification successful; 2-Notification failed | 2 |
| kycPass | Boolean | N | Whether KYC verification passed; may be absent or null | true |
| kycInfo | String | N | KYC verification info; may be absent or null | KYC name verification passed |
| sign | String | Y | Signature | hqvrXjE6ntfZ2Xp7VDG/aZ fJ4QRjSN6mCmETd+fvn7uE yLfp9qCPhWFnmXAiC2EdmN UXluEXBcRel2k9yGk552nY 00fSjueNzMPo6rBxwIfVf5 Pcsnqjkg4p3dFluKWevc5u rayuhwdJ2CBw/UiupdGhuA NGvTep2aeHRM0KvfwIf823 wVba9u05zjU1zknlfEXShN egLzU7Wm3JXb0ETNUAj8Tb /Bdnds9+u1eUZQoPojqfxP cZf0oieKxIRM/ID9bS3tF1 EeWeLP5rs/zp3dtKBZAvrk yGjIzH83Optw1uzdoyhHC0 CMeo+2J1BWo4KtV06Vbj7z pXd5h19nlleg== |
# paymentInfo fields
paymentInfo carries the payment or collection instrument type plus the fields merchants need for display or settlement. paymentMethodType usually labels the rail (Current payment method types include: [UPI], [PhonePe], [Paytm], [IMPS], [Bank Transfer(India)]—use the literal returned by the platform). Merchants who do not need this data will not receive paymentInfo; it is not mandatory.
# UPI-Example parameters of payment method
| Field | Type | Required | Meaning |
|---|---|---|---|
| paymentMethodType | String | N | example literals include [UPI] |
| name | String | N | Name |
| upiId | String | N | UPI Id (often exposed as upiId—follow the live field name) |
# PhonePe-Example parameters of payment method
| Field | Type | Required | Meaning |
|---|---|---|---|
| paymentMethodType | String | N | example literals include [PhonePe] |
| name | String | N | Name |
| phoneNumber | String | N | Phone Number |
# Paytm-Example parameters of payment method
| Field | Type | Required | Meaning |
|---|---|---|---|
| paymentMethodType | String | N | example literals include [Paytm] |
| name | String | N | Name |
| phoneNumber | String | N | Phone Number |
# IMPS-Example parameters of payment method
| Field | Type | Required | Meaning |
|---|---|---|---|
| paymentMethodType | String | N | example literals include [IMPS] |
| name | String | N | Name |
| accountNumber | String | N | Account Number / Card Number |
| ifscCode | String | N | IFSC code |
| bankName | String | N | Bank name |
| accountType | String | N | Account Type (optional) |
| branchName | String | N | Branch name |
# Bank Transfer (India)-Example parameters of payment method
| Field | Type | Required | Meaning |
|---|---|---|---|
| paymentMethodType | String | N | example literals include [Bank Transfer(India)] |
| name | String | N | Name |
| accountNumber | String | N | Account Number / Card Number |
| ifscCode | String | N | IFSC code |
| bankName | String | N | Bank name |
| accountType | String | N | Account Type (optional) |
| branchName | String | N | Branch name |
# Successful response message example
- Order successful response message example
{
"msg": "success",
"callBackStatus": 3,
"amount": "1000.1",
"code": "000000",
"settleStatus": 1,
"fee": "0.5377",
"feeCurrency": "USDT",
"payerUpiId": null,
"paymentFinishTime": 1779266333000,
"utr": "213123123212",
"payAmount": "1000.1",
"paymentMethod": "P2P",
"currency": "INR",
"settleFinishTime": 1779266335000,
"paymentStatus": 1,
"paymentInfo": {
"paymentMethodType": "[Bank Transfer(India)]",
"name": "cindy wu",
"accountNumber": "987654321",
"ifscCode": "123",
"bankName": "aa",
"accountType": "1",
"branchName": "aaa"
},
"kycPass": true,
"kycInfo": "KYC name verification passed",
"sign": "Cyp6PVnnG+cKGWGUw3HMCk1DZWhAL9vmvVbC0NjzuQLFeJ+XU/NiWaRqA/DoI/z0xjKNIsk3Nrkw6R8T+l1dTY0Xj2CQjjzrFeVn2jZ8XxdA9ScecfT7OQ4i+CxAQGemHAre21OlU+cJnvvlIy4xUSl7Tw5vuTsH2jF7G/mk2RFdbdfdo+iwgZ6qSFz9bLsCep3hPR25zgs2PnY97X0QUGqIZ0/HszwolELGhrZRkF1ZWe2wpVD6v07FHg7XShaHof2/XR81h5uyS264E7p1YYpU0jjgmJdn4EzB4p0IkCnVRzKoe9vTrRKj7+cKnbf7JGBiTfEIc4aa/7D+iMRKyQ=="
}
- Order failed response message example
{
"code": "A0340",
"msg": "sign error! (A0340)",
"data": null
}
# Code implementation demo
- Code examples are for reference only, please refer to the request parameter description for specific parameters.
import com.google.gson.Gson;
import okhttp3.*;
import java.lang.reflect.Type;
import java.util.HashMap;
import java.util.Map;
public class PaymentMerchantOrderDemo {
/**
* Platform public key
*/
private static final String PLAT_PUBLIC_KEY ="MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA1dad35S74jfLPbHJh8P0jDHiTvkxwrtITK97ovVu19B24UdiHyHoEZgtNlS6alFQj1ULQ71d6EPh2rWCNkS2b5HGQXwDYBtwvesVQ8h4Sf3eVPTTLGw3BS7Os4vtDEN6BezMdv3sUG2N5i6JF+5H4CQTq3MD2Cx6u/Cv7oFOdFqeDT0AH+TR7uyZxn69OtkJaHHr834EUcdShJKKMQtbC11WCcut7ilDUgdvZnThiVTq7cfl8mcC9FDKcQ9bMWamScWIB5cJQdUW23Kr0c1NvZlpgPS8U5VODM4Uc4muHJPD2cJmquuJ+4AGP36rEk27lUB3h7B6JI1QGiuh1yyPDwIDAQAB";
/**
* Merchant's private key
*/
private static final String MCH_PRIVATE_KEY ="MIIEvAIBADANBgkqhkiG9w0BAQEFAASCBKYwggSiAgEAAoIBAQC/wgJqa2WHUTrJwdrtOig8lwuKPaL462/1rF45p+xi25uoGUEyiOtB0OC6HLePUfkGYzPULPH/O0yF5GmWkhSuz3lKK/XtXSeRdQIwAQ7lYlhfdJjTLVC7mwkDRZeFePwbnAX5pC0h6Yxf0ibjAglkW2d45AscouZt91xIxgf0VLNZ9dHe8R7j8hPKOGpNi+709ThmRZQVHQLN+6w+mrID7JyWBSbbf2bVWc7UBlHCkudwjEiW/r96CefTukb0SigaS0XpqWEKYHeNWS0DP/a5OUDzXMi6fqHEzMPa6uNYbLpOW1rxMhMhU97W8pLYBba0T9BI7F/xusozxVDVeQbDAgMBAAECggEAdZ4EaU3yemuCiZoUNIoFgBSNiX+A5PlUNPZC3U54mbJl6VeEPADre/Uowj82//uhqR9T/QKMdKbkqwONGEQF16t+k9YfBDatPHTuoI8lmeEWn4Ye7vjOmiPgBVe8NqwcxrqOl67x1+kupt955qerJxlBgE8v2aK5gB3HRwPggSYZgSZJ3X2zQMJ+XN4qe49Un+utqFuGtVRwPQvs/Kazp5GL7WlR0OnpQ2KZ+ur9T58VfTKmIeqBckey7nIrb/fdodJ7IqcykWjSLmy8p84W78iiRDfPn81Ujb231EWW+AbuV399aXBZ4oaR4q8wwkhe9xHUADWLvcfCnMrB40LkEQKBgQD2TEeBEB5Gwj/zpriq23xKJyzfo0hOxzGY/Ol2EykGeEYhny/YiTlMYtOMy37RiGKr4lN7G/pKl2fI5kRjgQM1QXgx6dxd11D0rORXj+SAy6+zAq3NVY4c3zDKmrQQ8x3f2QFffo+TmLtw/BH0Frp+a2lzKzIcXtZ4/akJdVIihwKBgQDHT7xvOaNyAPnnYwpROMI9eUVgFc9pMRAmQ18at8ggZ8M+Ww1nhr00loufzkovCb9MvGR4HSedWHfgmtDu1hUFtl7PItNItsB347yWPxR/lVLs44NVXt7jkFisoBoEBXaNVVt6uOSvBiqINmX3gm4FoisI2SRZsH7nMr07OXO85QKBgCkXdN6Nh9+aTP0jla+7yrK8cnolTc0G4rl5iKHQdInFyz2Ux3DDBDJAUrcsxE3FCWFP80mY01tag1A7SrGnNpfOAnWhZMirQbBwn/AT67WpRfkBu2mEmp8qhYNn6B7j0Nol5FrATMf9NViWVZB5skehOAik7klZcULiXy9ayYdFAoGAA+0bLim5gYZpZdh6nIz8ro9UAYeMdWsFAWv0VKdoJtNEclcC1ZY+5elNSNGcfn63qQBRDlisrhnPCrqiAQJwmZM1HOl3tgf7lKEE1wTZF4ZOguIcdTMQOvVd+dCRkqC07CXRToKT5qq9bb98lLqaBjxikqMMZ0PlzBIgzijckc0CgYAH16CziStEZVvKbiR8b0ftF9mf6V8I0KHianMgV8X6Y51aE0Ig1eQhIvqSjqtBac7gEppiu3OQVrp39uLdgyvDSVta1Hq9QYYTDNt8crt69aD/Th1h5esYvApYyZIhHbFDR5meE4Y3nHpfY7J8zhmfyaVW/6cuwPaToTtrEjQmWQ==";
/**
* apiUrl
*/
private static final String API_URL = "https://test2-openapi.91fafafa.com/api/payment/india/order/query";
public static void main(String[] args) throws Exception {
utrSupplementaryOrder();
}
private static void utrSupplementaryOrder() throws Exception {
Map<String, Object> requestParams = new HashMap<>();
requestParams.put("appId", "B2iwKFIM4tvo");
requestParams.put("merchantId", "CH10001165");
requestParams.put("orderNo", "20240407170755");
requestParams.put("orderNoType", "merchant");
Long timestamp = System.currentTimeMillis();
requestParams.put("timestamp", timestamp);
// Private key encryption
String sign = CheeseTradeRSAUtil.getSign(requestParams, MCH_PRIVATE_KEY);
requestParams.put("sign", sign);
Gson gson = new Gson();
String requestBody = gson.toJson(requestParams);
System.out.println("Post Json Params:" + requestBody);
// Send a request and get a response
OkHttpClient client = new OkHttpClient();
MediaType mediaType = MediaType.parse("application/json; charset=utf-8");
RequestBody body = RequestBody.create(mediaType, requestBody);
Request request = new Request.Builder()
.url(API_URL)
.post(body)
.addHeader("User-Agent", "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/93.0.4577.63 Safari/537.36")
.build();
Response response = client.newCall(request).execute();
if (!response.isSuccessful()) {
// Failure handling...
System.out.println("Request failed: " + response.code() + " - " + response.message());
}
// Signature verification processing
String responseBody = response.body().string();
System.out.println("Response: " + responseBody);
Type type = new com.google.gson.reflect.TypeToken<Map<String, Object>>() {}.getType();
Map<String, Object> map = gson.fromJson(responseBody, type);
boolean verifyResult = CheeseTradeRSAUtil.verifySign(map, PLAT_PUBLIC_KEY);
if (verifyResult) {
Object kycPass = map.get("kycPass");
Object kycInfo = map.get("kycInfo");
// ... If signature verification is successful, process normal business logic.
Object paymentInfoObj = map.get("paymentInfo");
if (paymentInfoObj instanceof Map) {
@SuppressWarnings("unchecked")
Map<String, Object> paymentInfo = (Map<String, Object>) paymentInfoObj;
System.out.println("paymentMethodType: " + paymentInfo.get("paymentMethodType"));
System.out.println("name: " + paymentInfo.get("name"));
System.out.println("accountNumber: " + paymentInfo.get("accountNumber"));
System.out.println("ifscCode: " + paymentInfo.get("ifscCode"));
System.out.println("bankName: " + paymentInfo.get("bankName"));
System.out.println("accountType: " + paymentInfo.get("accountType"));
System.out.println("branchName: " + paymentInfo.get("branchName"));
}
} else {
// ... Signature verification error
}
response.close();
}
}