雲尚API

支付寶實名認證

透過支付寶比對使用者姓名與身份證字號是否一致,支援手機號、登入帳號可選驗證。此介面需要使用者跳轉支付寶授權,分為兩步:先發起認證取得授權連結,再憑授權碼查詢結果。買斷制,購買後按授權範圍長期使用。

介面資訊

項目說明
介面位址POST /api/v3/alipaysm
計費方式買斷制

呼叫流程

  • 呼叫 action=start,輸入使用者資訊,取得 auth_url 授權連結
  • 引導使用者在瀏覽器開啟 auth_url,完成支付寶授權
  • 支付寶回呼時攜帶授權碼,或使用者回到您的頁面後,用授權碼呼叫 action=result 查詢認證結果
  • 請求參數(action=start)

    參數類型必填說明
    actionstring固定值 start
    user_namestring真實姓名
    cert_nostring身份證字號
    mobilestring支付寶綁定手機號
    logon_idstring支付寶登入帳號

    請求參數(action=result)

    參數類型必填說明
    actionstring固定值 result
    auth_codestring使用者授權後取得的授權碼

    請求範例

    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',
    ];
    // 以同樣方式 POST $params2,程式碼略

    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);
    
            // 第二步:使用者授權後,用授權碼查詢結果
            // String body2 = "{\"action\":\"result\",\"auth_code\":\"USER_AUTH_CODE\"}";
            // System.out.println(post(body2));
        }
    
        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.tokenstring本次認證權杖(start 回傳)
    data.verify_idstring認證記錄 ID,可用於對帳(start 回傳)
    data.auth_urlstring支付寶授權連結,引導使用者開啟(start 回傳)
    data.verifystring認證結果,1 一致,0 不一致(result 回傳)
    data.user_namestring查驗姓名(result 回傳)
    data.cert_nostring查驗身份證字號(result 回傳)

    說明:授權連結有時效,發起後請盡快引導使用者完成授權;認證失敗時介面回傳業務錯誤碼 1200 / 1201