Fiat Currency Payout
# Request URL
POST https://test2-openapi.91fafafa.com/api/payout/thailand/order/create/v1
# Request parameters
Parameter | Type | Required | Description | Example |
---|---|---|---|---|
appId | string | Y | Merchant appId | B2iwKFIM4tvo |
merchantId | string | Y | Merchant ID | CH10001165 |
mchOrderNo | string | Y | Merchant order number(Length is limited to 32 digits) | 20240123180907 |
paymentMethod | string | Y | Payment method BANK_TH | BANK_TH |
amount | string | Y | Amount | 200 |
name | string | Y | Customer name | CheezeePayTest |
phone | string | N | Customer phone number | 9123456789 |
string | N | Email The more accurate the information provided, the higher the success rate, and the lower the risk coefficient triggered | [email protected] | |
notifyUrl | string | Y | Notification URL | https://yourdomain/notifyUrl |
payeeAccountInfos | string | Y | Receiving account information in JSON format | {"bankCode":"001", "accountNumber":"1708099097"} |
timestamp | long | Y | Submission time (timestamp: milliseconds) | 1706004547079 |
sign | string | Y | Signature | bH0XwhTJIO7S0UA+XuynP8qGhz89muuL ImYYn6BfFV22CwTU6BgMAKtzKxwRRCB Ju4m4wr9OqOxkANF9hBd/PX/qR5arjev3o DyRvNmMgOIMdlLPoJhrpwXNBP2q0HiW F8Ni4lsaIq5O9zZoNilIjP7BW6uujv57T5GJ KZSxSSVBRQbXw/0SwvqdyoM5Dn6LOe Q0C1nZ/jlG/9wEfrtK8E6B7hlZNYixXRcZT 8qVIGZhFgTJoWIxNm8pTRUCflP313sKx 5QVKUgvi8Sf5NpjanmVjAG/+FkUQvZzZF QnkOu+dawU628diE9mTmfSP82lEGpO4V zrFj8ZbVnFEAc3KQ== |
# Explanation of payeeAccountInfos
parameter when paymentMethod
is BANK_TH
Parameter | Type | Required | Description |
---|---|---|---|
bankCode | string | Y | Bank code |
accountNumber | string | Y | Customer bank account number |
# Request Message Example
{
"appId":"B2iwKFIM4tvo",
"merchantId":"CH10001165",
"mchOrderNo":"20240123180907",
"paymentMethod":"BANK_TH",
"amount":"200",
"payeeAccountInfos":"{\"bankCode\":\"001\",\"accountNumber\":\"1708099097\"}",
"name":"CheezeePayTest",
"phone":"9123456789",
"email":"[email protected]",
"notifyUrl":"https://yourdomain/notifyUrl",
"timestamp":1706004547079,
"sign":"LsER+DoJ+oj3oQBtLYRhwHIm0Qj3otJRVDymCNOomIYrABR6Pe214xV9uthMwfv0/xVkt6gVJnOyxpA4PVcdN3diInfPkMcVG3vocLolCvb5/CgysJbjk2LPCHwQMt6GUbV0SnZe/j1l8a36nGU2HJfpp/UDP1qDfdyapUOeTAhnzDL4h8UTPMVWXCjFGJXXC+ACeSAv5i58DbD0d6DQ4Z5FE/EnNdY8eC+2ZSM1Yb6eWrogJttVIqCCNnlJ4sRQXLaf2aDiU4e8ZGQG770b282pqclIa0LnNi1PHpJODOaUR8LLjalZDqDhWO6+ZCo/li62Vkm0xe4NSmgUMECafA\u003d\u003d"
}
# Response parameters
Parameter | Type | Required | Description | Example |
---|---|---|---|---|
code | String | Y | Response Code 000000 indicates success, others indicate failure. | 000000 |
msg | String | Y | Response Description success: Successful | success |
tradeNo | String | Y | Platform Order Number | 1746108644859187200 |
sign | String | Y | Signature | HcMyGbT+yHStKP/axYRPmWtYku2 TPr1zyxA2Uv+iVt+5LPgIARTJuZ/Db ndC9wUEaFZT0cm7OV8yfHFipniN2 dSwnTc3TI93tnrtXGkZ9I6WYhNpZh 6H2dwpaaKSzUul/8BB4Q441ZS9Nk 9Kz8oIg8ztOvWzzoMLdOqnDOlG8H b6iIudDZWi4t5Ut5SzUIX+LcEGe7lIN 3i1WFflgRw2Zm1CfZ+N7Xw5/Ox/Jx GjaBqW1CZInaN66uGWd3qlKxPen5 GkTY2zRqm0PbzoaXuouOKOyAvrk Ocgp07sxfVWukZ9H7Gcs9iyK8vtz4I CIXGlzUVNwjalC8rPEXr8J3U7FQ== |
# Payout Response Message Example
- Successful Order Submission Response Message Example
{
"code": "000000",
"msg": "success",
"tradeNo": "1746108644859187200",
"sign": "HcMyGbT+yHStKP/axYRPmWtYku2TPr1zyxA2Uv+iVt+5LPgIARTJuZ/DbndC9wUEaFZT0cm7OV8yfHFipniN2dSwnTc3TI93tnrtXGkZ9I6WYhNpZh6H2dwpaaKSzUul/8BB4Q441ZS9Nk9Kz8oIg8ztOvWzzoMLdOqnDOlG8Hb6iIudDZWi4t5Ut5SzUIX+LcEGe7lIN3i1WFflgRw2Zm1CfZ+N7Xw5/Ox/JxGjaBqW1CZInaN66uGWd3qlKxPen5GkTY2zRqm0PbzoaXuouOKOyAvrkOcgp07sxfVWukZ9H7Gcs9iyK8vtz4ICIXGlzUVNwjalC8rPEXr8J3U7FQ=="
}
- Failed Order Submission Response Message Example
{
"msg": "Payment method closed ",
"code": "C3765",
"sign": "uG0H/WSAwDT55BQSKz1Mqy8g+KTYMjezers0pQbHizg2fqBumjXpJfre4EXTGX1cxkWBXgdjHjBlo2BbpUQavdTNfKYeZXqZKR61H3VDcLyhRNcY9DXt4BgP3T+uuvYDYXM0Xr6T4+jSjJ2+EL+RcEWGostcUW1lkLZwD7jZmsRzGmIRhi0UXs1sq7NDq9oGugb5//6UnUcJeVxv2GQyob6TC11dEQPSCAJQoi4hUra9yP/yVOaeTES6wMUShBpSZKqkd9bx65CYArnK2bqF6NaLLpuWoolXpNG3E7PxYXavhz0dTJIOm8wGXPjeTCeZaqZO0gde2Vhxw57oca2e+w=="
}
# Code Implementation Demo
- The code example is for reference only, please refer to the request parameter description for specific parameter explanations.
package com.cheesepay;
import com.google.gson.Gson;
import com.cheesepay.CheeseTradeRSAUtil;
import okhttp3.*;
import java.lang.reflect.Type;
import java.util.HashMap;
import java.util.Map;
public class PayoutDemo {
// 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==";
// Payment interface URL
private static final String apiUrl = "https://test2-openapi.91fafafa.com/api/payout/india/order/create/v1";
// Callback URL
private static final String cashNotify = "https://yourdomain/notifyUrl";
public static void main(String[] args) throws Exception {
payout();
}
private static void payout() throws Exception {
Map<String, Object> requestParams = new HashMap<>();
requestParams.put("appId", "B2iwKFIM4tvo");
requestParams.put("merchantId", "CH10001165");
// Order number cannot be duplicated
String currentTime = getCurrentTime();
requestParams.put("mchOrderNo", currentTime);
requestParams.put("paymentMethod", "BANK_TH");
requestParams.put("amount", "200");
requestParams.put("name", "CheezeePayTest");
requestParams.put("phone", "9123456789");
requestParams.put("email", "[email protected]");
requestParams.put("notifyUrl", cashNotify);
requestParams.put("payeeAccountInfos", "{\"bankCode\":\"001\",\"accountNumber\":\"1708099097\"}");
Long timestamp = System.currentTimeMillis();
requestParams.put("timestamp", timestamp);
// Private key encryption
String platSign = CheeseTradeRSAUtil.getSign(requestParams, MCH_PRIVATE_KEY);
requestParams.put("sign", platSign);
System.out.println("requestParams Msg:" + requestParams);
// Interface request
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(apiUrl)
.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) {
// ... If signature verification is successful, process normal business logic.
} else {
// ... Signature verification error
}
response.close();
}
}