支付寶實名認證
透過支付寶比對使用者姓名與身份證字號是否一致,支援手機號、登入帳號可選驗證。此介面需要使用者跳轉支付寶授權,分為兩步:先發起認證取得授權連結,再憑授權碼查詢結果。買斷制,購買後按授權範圍長期使用。
介面資訊
| 項目 | 說明 |
|---|
| 介面位址 | POST /api/v3/alipaysm |
| 計費方式 | 買斷制 |
呼叫流程
呼叫 action=start,輸入使用者資訊,取得 auth_url 授權連結
引導使用者在瀏覽器開啟 auth_url,完成支付寶授權
支付寶回呼時攜帶授權碼,或使用者回到您的頁面後,用授權碼呼叫 action=result 查詢認證結果
請求參數(action=start)
| 參數 | 類型 | 必填 | 說明 |
|---|
action | string | 是 | 固定值 start |
user_name | string | 是 | 真實姓名 |
cert_no | string | 是 | 身份證字號 |
mobile | string | 否 | 支付寶綁定手機號 |
logon_id | string | 否 | 支付寶登入帳號 |
請求參數(action=result)
| 參數 | 類型 | 必填 | 說明 |
|---|
action | string | 是 | 固定值 result |
auth_code | string | 是 | 使用者授權後取得的授權碼 |
請求範例
PHP
<?php
$app_id = 'YOUR_APP_ID';
$app_key = 'YOUR_APP_KEY';
$base = 'https://yunsapi.com/api/v3/alipaysm';
$params = [
'action' => 'start',
'user_name' => '张三',
'cert_no' => '110101198806052133',
];
$ch = curl_init($base);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($params));
curl_setopt($ch, CURLOPT_HTTPHEADER, [
'Content-Type: application/json',
'X-APP-ID: ' . $app_id,
'X-APP-KEY: ' . $app_key,
]);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
$resp = curl_exec($ch);
curl_close($ch);
echo $resp;
$params2 = [
'action' => 'result',
'auth_code' => 'USER_AUTH_CODE',
];
Java
import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
public class AlipayDemo {
static final String APP_ID = "YOUR_APP_ID";
static final String APP_KEY = "YOUR_APP_KEY";
static final String URL = "https://yunsapi.com/api/v3/alipaysm";
public static void main(String[] args) throws Exception {
String body = "{\"action\":\"start\",\"user_name\":\"张三\",\"cert_no\":\"110101198806052133\"}";
String resp = post(body);
System.out.println(resp);
}
static String post(String body) throws Exception {
HttpClient client = HttpClient.newHttpClient();
HttpRequest req = HttpRequest.newBuilder()
.uri(URI.create(URL))
.header("Content-Type", "application/json")
.header("X-APP-ID", APP_ID)
.header("X-APP-KEY", APP_KEY)
.POST(HttpRequest.BodyPublishers.ofString(body))
.build();
HttpResponse<String> resp = client.send(req, HttpResponse.BodyHandlers.ofString());
return resp.body();
}
}
回應範例(start)
{
"code": 0,
"msg": "發起成功",
"data": {
"token": "a1b2c3d4e5f67890",
"verify_id": "671ffcda5447bc87e9ed2f669eb143d4",
"auth_url": "https://openauth.alipay.com/oauth2/publicAppAuthorize.htm?app_id=xxx&scope=id_verify"
},
"request_id": "req_xxx"
}
回應範例(result)
{
"code": 0,
"msg": "success",
"data": {
"verify": "1",
"user_name": "张三",
"cert_no": "110101198806052133"
},
"request_id": "req_xxx"
}
回應參數
| 參數 | 類型 | 說明 |
|---|
data.token | string | 本次認證權杖(start 回傳) |
data.verify_id | string | 認證記錄 ID,可用於對帳(start 回傳) |
data.auth_url | string | 支付寶授權連結,引導使用者開啟(start 回傳) |
data.verify | string | 認證結果,1 一致,0 不一致(result 回傳) |
data.user_name | string | 查驗姓名(result 回傳) |
data.cert_no | string | 查驗身份證字號(result 回傳) |
說明:授權連結有時效,發起後請盡快引導使用者完成授權;認證失敗時介面回傳業務錯誤碼 1200 / 1201。