Blogger Information
Blog 7
fans 0
comment 0
visits 10759
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
PHP对接小程序城市服务实名信息校验接口
布丁
Original
1364 people have browsed it

1、接口介绍

接入微信城市服务,开发者小程序可以使用实名信息校验接口。主要实现的功能是,在用户同意情况下,通过微信城市服务去校验用户(或业务方)输入的实名信息,是否正确且与用户在“开通微信支付”时,预留的实名信息一致。

2、接入必读

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

3、接口开放范围

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

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

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

4、后台校验实名信息的API

(1)请求方式:POST
(2)请求地址:

  1. 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 获取方式:点击查看详细说明

  1. $access_token = '';
  2. $url = "https://api.weixin.qq.com/intp/realname/checkrealnameinfo?access_token=$access_token";
  3. $params = [
  4. 'openid' => '', // 用户 openid
  5. 'real_name' => '', // 用户姓名
  6. 'cred_id' => ,'' // 身份证号
  7. 'cred_type' => 1,
  8. 'code' => '' // 小程序获取到的 code
  9. ];
  10. $result = curlRequest($url, $params);
  11. if ($result['errcode'] == 0) {
  12. switch ($result['verify_openid']) {
  13. case 'V_OP_NA':
  14. return '您还没有实名认证,请先进行微信实名认证';
  15. break;
  16. case 'V_OP_NM_MA':
  17. if ($result['verify_real_name'] == 'V_NM_ID_MA') {
  18. return '姓名与证件号匹配';
  19. }
  20. if ($result['verify_real_name'] == 'V_NM_ID_UM') {
  21. return '姓名与证件号不匹配';
  22. }
  23. break;
  24. case 'V_OP_NM_UM':
  25. return '用户与姓名不匹配';
  26. break;
  27. }
  28. } else {
  29. return $result['errmsg'];
  30. }
  31. // 发送 CURL 请求
  32. function curlRequest($url, $data = [])
  33. {
  34. $string_data = json_encode($data, JSON_UNESCAPED_UNICODE);
  35. $ch = curl_init();
  36. curl_setopt($ch, CURLOPT_URL, $url);
  37. curl_setopt($ch, CURLOPT_HTTPHEADER, array(
  38. 'Content-Type: application/json; charset=utf-8',
  39. 'Content-Length: ' . strlen($string_data))); // 设置请求头
  40. curl_setopt($ch, CURLOPT_POSTFIELDS, $string_data); // 设置请求体
  41. curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST"); // 定义请求类型
  42. curl_setopt($ch, CURLOPT_POST, 1);
  43. curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 1);
  44. curl_setopt($ch, CURLOPT_ENCODING, "");
  45. curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
  46. curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
  47. curl_setopt($ch, CURLOPT_HTTP_VERSION, 'CURL_HTTP_VERSION_1_1');
  48. $output = curl_exec($ch);
  49. curl_close($ch);
  50. $arr = json_decode($output, true);
  51. return $arr;
  52. }

7、注意事项

在将请求数据进行 json_encode 的时候,一定要加第二个参数 JSON_UNESCAPED_UNICODE 以字面编码多字节 Unicode 字符(默认是编码成 \uXXXX)。 自 PHP 5.4.0 起生效。否则不会校验成功!

Statement of this Website
The copyright of this blog article belongs to the blogger. Please specify the address when reprinting! If there is any infringement or violation of the law, please contact admin@php.cn Report processing!
All comments Speak rationally on civilized internet, please comply with News Comment Service Agreement
0 comments
Author's latest blog post