实名校验和微信实名信息是否一致(PHP对接小程序城市服务实名信息校验接口)

详情链接
https://developers.weixin.qq.com/community/business/doc/000e06614ac74068f3d9237eb5440d?page=3#comment-list
1、接口介绍
接入微信城市服务,开发者小程序可以使用实名信息校验接口。主要实现的功能是,在用户同意情况下,通过微信城市服务去校验用户(或业务方)输入的实名信息,是否正确且与用户在“开通微信支付”时,预留的实名信息一致。

2、接入必读
1、本接口暂只支持校验基于大陆身份证 “姓名与身份证开通微信支付”的用户实名信息;
2、由于信息较为敏感,使用此接口校验用户(或业务方)输入的实名信息时,需要在页面前端征得用户的同意。因此调用此接口后,会跳转至微信官方的“用户同意”界面。用户点击同意按钮后方可继续后续调用。
3、请根据开放范围、场景所需及信息校验必要性申请本接口,并请谨慎使用。若后期使用过程中,用户举报较多或被发现在不合理使用,微信有权永久回收该小程序的该接口的权限。

3、接口开放范围
接口的开放的场景及必要性,参考国家法规、政策规定的需要“实名办理”的相关业务。具体的开放主体类目范围如下:

政务(*和事业单位)
公立医疗(含公立医疗机构的互联网医院)
公立教育机构
交通行业的官方企业或单位(含:航空公司、机场、客运、交通市民卡、铁路、公交、地铁、轮渡)
基础运营商 合规的保险公司官方;
水、电、燃、暖等官方生活缴费机构;

点击查看官方城市服务实名信息校验接口说明

4、后台校验实名信息的API
(1)请求方式:POST
(2)请求地址:

https://api.weixin.qq.com/intp/realname/checkrealnameinfo?access_token=ACCESSTOKEN
(3)请求格式:JSON
(4)请求参数:

字段 类型 说明 备注
openid string 用户在业务方下的openid 与申请权限时提供的业务方的小程序appid保持一致
real_name string 姓名 需要校验的姓名
cred_id string 证件号 需要校验的证件号
cred_type string 默认为1,即身份证 目前暂只支持身份证
code string 回调获取的code 通过小程序回跳获取的code参数
(5)返回字段

字段 类型 说明 备注
errcode int 0为接口调用成功 错误码
errmsg string 失败时的错误提示 错误原因
verify_openid string V_OP_NA:用户暂未实名认证;V_OP_NM_MA:用户与姓名匹配;V_OP_NM_UM:用户与姓名不匹配。 有多个结果时用分号”;”连接;
verify_real_name string 当verify_openid 为V_OP_NM_MA 时返回:V_NM_ID_MA:姓名与证件号匹配;V_NM_ID_UM:姓名与证件号不匹配。 校验结果
5、小程序获取 code 参数
(1)请求方式

跳转至微信城市服务提供的 appid 和 path
appid:wx308bd2aeb83d3345 path:subPages/city/wxpay-auth/main

(2)应答方式:

用户完成确认同意后,会跳回至业务方小程序,并在 extraData 字段中带上调用后台接口所需的 code,即 extraData 中的 code 字段。

6、代码示例
此处的 access_token 获取方式:点击查看详细说明

$access_token = ‘’;
u r l = " h t t p s : / / a p i . w e i x i n . q q . c o m / i n t p / r e a l n a m e / c h e c k r e a l n a m e i n f o ? a c c e s s t o k e n = url = "https://api.weixin.qq.com/intp/realname/checkrealnameinfo?access_token= url="https://api.weixin.qq.com/intp/realname/checkrealnameinfo?accesst​oken=access_token";
$params = [
‘openid’ => ‘’, // 用户 openid
‘real_name’ => ‘’, // 用户姓名
‘cred_id’ => ,’’ // 身份证号
‘cred_type’ => 1,
‘code’ => ‘’ // 小程序获取到的 code
];
r e s u l t = c u r l R e q u e s t ( result = curlRequest( result=curlRequest(url, p a r a m s ) ; i f ( params); if ( params);if(result[‘errcode’] == 0) {
switch (KaTeX parse error: Expected '}', got 'EOF' at end of input: … if (result[‘verify_real_name’] == ‘V_NM_ID_MA’) {
return ‘姓名与证件号匹配’;
}
if ($result[‘verify_real_name’] == ‘V_NM_ID_UM’) {
return ‘姓名与证件号不匹配’;
}
break;
case ‘V_OP_NM_UM’:
return ‘用户与姓名不匹配’;
break;
}
} else {
return KaTeX parse error: Expected 'EOF', got '}' at position 19: …ult['errmsg']; }̲ // 发送 CURL 请求 …url, $data = [])
{
s t r i n g d a t a = j s o n e n c o d e ( string_data = json_encode( stringd​ata=jsone​ncode(data, JSON_UNESCAPED_UNICODE);
c h = c u r l i n i t ( ) ; c u r l s e t o p t ( ch = curl_init(); curl_setopt( ch=curli​nit();curls​etopt(ch, CURLOPT_URL, u r l ) ; c u r l s e t o p t ( url); curl_setopt( url);curls​etopt(ch, CURLOPT_HTTPHEADER, array(
‘Content-Type: application/json; charset=utf-8’,
'Content-Length: ’ . strlen( s t r i n g d a t a ) ) ) ; / / 设 置 请 求 头 c u r l s e t o p t ( string_data))); // 设置请求头 curl_setopt( stringd​ata)));//设置请求头curls​etopt(ch, CURLOPT_POSTFIELDS, s t r i n g d a t a ) ; / / 设 置 请 求 体 c u r l s e t o p t ( string_data); // 设置请求体 curl_setopt( stringd​ata);//设置请求体curls​etopt(ch, CURLOPT_CUSTOMREQUEST, “POST”); // 定义请求类型
curl_setopt( c h , C U R L O P T P O S T , 1 ) ; c u r l s e t o p t ( ch, CURLOPT_POST, 1); curl_setopt( ch,CURLOPTP​OST,1);curls​etopt(ch, CURLOPT_SSL_VERIFYPEER, 1);
curl_setopt( c h , C U R L O P T E N C O D I N G , " " ) ; c u r l s e t o p t ( ch, CURLOPT_ENCODING, ""); curl_setopt( ch,CURLOPTE​NCODING,"");curls​etopt(ch, CURLOPT_SSL_VERIFYHOST, false);
curl_setopt( c h , C U R L O P T R E T U R N T R A N S F E R , 1 ) ; c u r l s e t o p t ( ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt( ch,CURLOPTR​ETURNTRANSFER,1);curls​etopt(ch, CURLOPT_HTTP_VERSION, ‘CURL_HTTP_VERSION_1_1’);
o u t p u t = c u r l e x e c ( output = curl_exec( output=curle​xec(ch);
curl_close($ch);
a r r = j s o n d e c o d e ( arr = json_decode( arr=jsond​ecode(output, true);
return $arr;
}

上一篇:使用libcurl库实现C++程序发送邮件的功能


下一篇:微信企业付款到银行卡RSA公钥获取生成的步骤