Merchant User Real-name Authentication Sync
# Note: This API does not perform actual KYC identity verification. It only stores data for record-keeping. Please confirm the information is correct before calling this API.When connecting, please note that the signature method of this interface has changed. Please refer to the following code example (only for this interface).
# Request URL
- POST https://test2-openapi.91fafafa.com/api/customerAccount/addCustomerRealInfo
# Request parameters
| Parameter | Type | Required | Description | Example |
|---|---|---|---|---|
| customerMerchantsId | string | Y | Unique merchant user identifier (user id on merchant side.The maximum length cannot exceed 64 characters.) | 28398190 |
| merchantsId | string | Y | MerchantId | CH10001165 |
| name | string | Y | User KYC name | Pual KaYa |
| idCardType | Integer | Y | ID type 1. ID card 2. Passport | 1 |
| idCard | string | Y | ID number | 1092923790210293 |
| platSign | string | Y | sign | wKiDE42Ed/osErh1GrVtCTtwqBfjO6TJmbN7fWo1nK GF0M7QEwoEGsZzNCF20Ks6q7MTpL2TwaQrYfjwxQ4n zvYNHG8GfjkUMon15ouVddEL8G2Ajq77NfZ8Vm/SXw ore02kU9wMoJKucU7MBERm2RIfy1vc2gkHwlGBftLR /fuf4ucdmYKWl5ATdH44w5vUxq5L8tfEf6pVBEDOS5 ragisBODABHRrxkRg++i14rMc+9SgEa80UmzdQi6YT tCLIWUKm5PjtkxGZbXYbST0EWo5NqrGPYwZHhyFST7 7Ze0vSRvVy9C7UWnihrqNgTMrFin/94qYnam2lYYRa eSwkEg== |
# Example of request message
{
"customerMerchantsId": "28398190",
"merchantsId": "CH10001165",
"name": "Pual KaYa",
"idCardType": 1,
"idCard": "1092923790210293",
"platSign": "wKiDE42Ed/osErh1GrVtCTtwqBfjO6TJmbN7fWo1nKGF0M7QEwoEGsZzNCF20Ks6q7MTpL2TwaQrYfjwxQ4nzvYNHG8GfjkUMon15ouVddEL8G2Ajq77NfZ8Vm/SXwore02kU9wMoJKucU7MBERm2RIfy1vc2gkHwlGBftLR/fuf4ucdmYKWl5ATdH44w5vUxq5L8tfEf6pVBEDOS5ragisBODABHRrxkRg++i14rMc+9SgEa80UmzdQi6YTtCLIWUKm5PjtkxGZbXYbST0EWo5NqrGPYwZHhyFST77Ze0vSRvVy9C7UWnihrqNgTMrFin/94qYnam2lYYRaeSwkEg=="
}
# Response parameters
| Parameter | Type | Required | Description | Example |
|---|---|---|---|---|
| success | Boolean | Y | Whether successful | true |
| code | String | Y | ResponseCode 000000 indicates success, others indicate failure. | 000000 |
| msg | String | Y | ResponseDescription success: Successful | success |
| data | Object | Y | Defaults to null | null |
| platSign | String | Y | sign | GfpNwHrHeTYnidB9bHgdT gvsnbN8GIoo1NgYHmBpNi ucCSAKdjSKRnPs8bcnP/R cQZ8RZPuvh8ayBRBZOtgJ o4pxG89hT7MaXGUAhjMU+ gkns6EvN+RsNF+WKuqyWD rhXYVCZzDud7sKFeEqmyC SFNsViuBPCG5660z+euTi 35Q5O0J046FlMJi0+fn1f Cb+mHgauq7jkyuzXtAkRg IW1gKxa9YoBUYxdV26izI W4bgnCLF3b2w8ksXbs6F7 Bu7PjPGHRvZK9SjrrrYOm mIfCt8cwQFyaY3cWAuD8M /3yl5+iSQQxD9rN+Y/Bdm ps4v8zdTuniHy3gIzn2t8 o9saFQ== |
# Successful response message example
- Successful response message example
{
"success": true,
"code": "000000",
"msg": "success",
"data": null,
"platSign": "GfpNwHrHeTYnidB9bHgdTgvsnbN8GIoo1NgYHmBpNiucCSAKdjSKRnPs8bcnP/RcQZ8RZPuvh8ayBRBZOtgJo4pxG89hT7MaXGUAhjMU+gkns6EvN+RsNF+WKuqyWDrhXYVCZzDud7sKFeEqmyCSFNsViuBPCG5660z+euTi35Q5O0J046FlMJi0+fn1fCb+mHgauq7jkyuzXtAkRgIW1gKxa9YoBUYxdV26izIW4bgnCLF3b2w8ksXbs6F7Bu7PjPGHRvZK9SjrrrYOmmIfCt8cwQFyaY3cWAuD8M/3yl5+iSQQxD9rN+Y/Bdmps4v8zdTuniHy3gIzn2t8o9saFQ=="
}
- Failed response message example
{
"success": false,
"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 MerchantUserRealInfoSyncDemo {
/**
* 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/customerAccount/addCustomerRealInfo";
public static void main(String[] args) throws Exception {
syncCustomerRealInfo();
}
private static void syncCustomerRealInfo() throws Exception {
Map<String, Object> requestParams = new HashMap<>();
requestParams.put("customerMerchantsId", "28398190");
requestParams.put("merchantsId", "CH10001165");
requestParams.put("name", "Pual KaYa");
requestParams.put("idCardType", 1);
requestParams.put("idCard", "1092923790210293");
// Private key encryption
String platSign = CheeseTradeRSAUtil.getRealNameSign(requestParams, MCH_PRIVATE_KEY);
requestParams.put("platSign", platSign);
// 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(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()) {
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.verifyRealNameSign(map, PLAT_PUBLIC_KEY);
if (verifyResult) {
System.out.println("Successful signature verification");
} else {
System.out.println("Signature verification failed");
}
response.close();
}
}