收藏
评论

微信支付实名信息小程序授权接口能力【监管原因,暂停开放】官方

备注说明:接口因为监管原因,2019年11月10日起停止开放。

一、能力背景

互联网+国家战略发布以来,各行业紧锣密鼓推进改革。其中,众多政府民生服务,例如社保查询、公积金查询提取、医疗机构挂号、公用事业缴费等均需要用户提供实名信息。此外,手机卡实名办理、火车客运实名购票、酒店实名入住等行业实名制都在推行。

基于此,为了让用户有更好的体验,让各行业的互联网+服务更顺畅,基于微信支付实名用户基础,提供微信支付实名支付账户信息授权接口。即经过用户的授权,小程序的服务提供者可以获得用户在微信支付认证的姓名以及身份证信息。

二、接入必读

名称:
getRealnameAuthInfo

功能:
经过用户授权,可获得用户在微信支付认证的姓名以及身份证信息(非身份证的其他证件信息暂不提供授权)

验证方式:
因为需要用户主动触发才能发起获取实名信息接口,所以该功能不由 API 来调用,需用 <button> 组件的点击来触发。且需要用户输入微信支付密码验证后,方可算授权。

兼容的微信版本:
iOS6.5.22及Android6.5.22 及以上版本

调用必备条件:
(1)小程序appid获得内测邀请后提交资质经平台审核通过;
(2)小程序开通了微信支付账号;
(3)向微信支付工作人员申请证书

开放范围:
现为内测邀请阶段,白名单开通。务必需按下述内容,及第三节指引,申请开通权限后再按照接口文档开发,否则无效。

开放说明:
针对小程序的业务方,小程序的主体以及类目,需要在限定的类目范围内。开展的业务也需要是国家相关法规、政策规定的需要“实名办理”的相关业务。

现阶段微信支付实名信息授权接口能力开通的主体类目限定包含:

  • 政务:政府机构或事业单位
  • 医疗:公立医疗机构
  • 教育:公立教育机构
  • 轨道交通:铁路官方,地铁官方

三、接口申请

满足第二节中描述的开放类目的小程序,可申请微信支付实名授权接口。请按照如下描述,进行接口申请。

必须完成以下两步的描述才算申请成功:

第一步. 邮件申请,开通小程序后台接口能力入口:

申请邮件请发送至腾讯工作邮箱wx_city@tencent.com。腾讯工作人员会邮件回复资料是否准确无误,并说明是否已开通小程序后台入口。

可通过通过以下路径查看是否已开通入口:通过mp.weixin.qq.com登录小程序,在设置->接口设置中,查看是否有“实名授权”的能力卡片。

邮件申请入口的资料内容如下:

微信支付实名信息授权接口内测申请表

第二步. 线上入口申请权限:

接收到已开通线上入口的邮件回复后。可登录小程序后台,(登录mp.weixin.qq.com的小程序账号,在设置-接口能力中)完成接口权限的申请。

包括:使用类目的配置、填写相关的申请信息等。然后等待线上审核通过。

完成以上两步工作,且线上审核通过后,即可按照后续的接口文档进行开发调用。

备注:此接口一直处于内测邀请阶段。但由于近期申请流程和方式,需要根据合规监管及用户敏感隐私信息加强审核的要求,进行修改调整。因此申请流程修改调整期间,此接口暂不接受新的小程序申请;已经在使用此接口的小程序,暂不受影响。(建议正在使用的小程序,限于自身业务使用,并加强用户隐私信息保护); 正在申请中的小程序,近期请留意wx_city@tencent.com官方邮件的回复,以进一步增加说明材料。

四、接口文档

4.1使用方法及参数

使用方法为:
需要将 <button> 组件 open-type 的值设置为 getRealnameAuthInfo,当用户点击并同意之后,可以通过 bindgetRealnameAuthInfo事件回调获取到微信服务器返回的auth_token,再用auth_token调用API来获取用户加密过后的实名信息

示例:
<button open-type=“getRealnameAuthInfo” bindgetRealnameAuthInfo=“authinfo” category-id="{{[99, 904]}}">实名授权</button>
调用参数为:

错误码说明:
errCode:40003
errMsg:category id not exist
错误说明:添加的类目ID有误(需检查类目ID是否准确。仅需使用一级和二级类目ID即可)

4.2获取小程序类目

本节主要描述如何获取授权小程序账号的可选类目。

(1)请求方式: get(请使用https协议)
https://api.weixin.qq.com/wxa/get_category?access_token=TOKEN

(2)参数说明
access_token

(3)返回说明(正常时返回的json示例):
{
“errcode”:0,
“errmsg”: “ok”,
“category_list” : [
{
“first_class”:“工具”,
“second_class”:“备忘录”,
“first_id”:1,
“second_id”:2,
}
{
“first_class”:“教育”,
“second_class”:“学历教育”,
“third_class”:“高等”
“first_id”:3,
“second_id”:4,
“third_id”:5,
}
]
}

(4)返回参数说明:
参数 说明
category_list 可填选的类目列表
first_class 一级类目名称
second_class 二级类目名称
third_class 三级类目名称
first_id
一级类目的ID编号
second_id 二级类目的ID编号
third_id 三级类目的ID编号

(5)错误码说明:
返回码 说明
-1 系统繁忙

4.3获取实名信息

  1. 说明
    根据小程序返回的auth_token获取用户加密过后的实名消息

  2. 使用方法
    通过https POST请求,数据为json格式

  3. 请求url
    https://api.weixin.qq.com/cgi-bin/wxopen/getrealnameinfo?access_token={access_token}
    access_token说明 详见公众号开发文档, api使用的appid必须和小程序的appid保持一致

  4. 请求参数

  1. 返回参数

示例:
#!/bin/bash

TOKEN=‘xxxxxxxxxxxx’
URL=‘https://api.weixin.qq.com/cgi-bin/wxopen/getrealnameinfo
JSON=’{ “auth_token”: “xxx”, “mch_id”: “xxx”, “cert_serialno”: “xxx”, “timestamp”: 1234444, “sign”: “xxx” }’

curl “${URL}?access_token=${TOKEN}” -d ${JSON}

  1. 返回码
    返回码说明:

4.4数据加密文档说明

  1. 说明
    由于实名信息属于敏感数据,不能以明文数据传输,所以开发者需要用私钥对请求进行签名(sha256后base64编码).

微信支付会对用户的姓名和身份证信息用开发者的公钥加密 ,开发者可以使用私钥解密出明文. 加密的padding算法为RSA_PKCS1_PADDING

商户号、证书序列号和私钥文件的获取详见第五部分微信支付证书指引

  1. 签名原串
    cert_serialno={cert_serialno}&timestamp={timestamp}

签名示例
#!/bin/bash
cert_serialno='1234567890’
timestamp=date +%s
private_key_file=“1900006511_rsa_private_key.pem”

ori_content="cert_serialno=${cert_serialno}&timestamp=${timestamp}"
echo $ori_content

sign=echo -n $ori_content | openssl dgst -sha256 -binary -sign $private_key_file | base64 -w 0
echo “sign: $sign”

解密示例
#!/bin/sh

encryted_real_name="BtqSM3KOyt+mDhJhyLCS9vsEoo3gTBupZHwS3i8daCyrUGxlEv+k7cE6U+9eiTo2DPNMouZnPSqv5vRERvwvm//JwkKdrV/xvSB4Ak7mJB+/t4Y4lV6gfeyggzN4xtdWoJfkgm0wa4V7oZGrpnexdwYuwyJYTMoz+87qJRwUfWAgF7U7trJ+b5DvCk9Y6KwT0N4j6PtDAk23k0zg06rTANzU3Mq1IWF7LVBcvSvR9nkNAPzcv06LQ70kxqQqVj5z+H+ERuILwBjuIQozCh6pO37Q3slz8UNnl7r48vw7uZe6be1fSDyf0hYE43n2DMpljnATQOMeJxp7nBrsvwDdPQ=="
private_key_file=“1900006511_rsa_private_key.pem”

echo -n $encryted_real_name | base64 -d | openssl rsautl -decrypt -ssl -inkey $private_key_file | iconv -f gbk -t utf-8

4.5微信支付商户申请指引

敏感数据需要使用权威CA颁发的API证书来加密。 如果已经获取到了权威CA颁发的API证书,可直接使用。 未获取到的话, 可按下面的方法操作:

  1. 证书申请或升级:
    登录商户平台申请或者升级到权威CA颁发的证书。
    申请指引
    升级指引

  2. 查看证书序列号:
    登录微信支付商户平台:pay.weixin.qq.com,进入【账户中心】->【账户设置】->【API安全】,点击“查看证书”文字按钮。

点击查看证书,即可看到证书序列号。

五、案例展示

案例:粤省事小程序,实名信息登录。

粤省事小程序是广东省政务一站式服务小程序,为了给用户便捷的体验,使用了微信支付实名授权功能。一方面校验使用者的身份,一方面便捷的获取用户信息,以便为用户提供个性化的政务服务。

具体实现的效果截图如下:

最后一次编辑于  2022-11-22
赞 0
收藏

19 个评论

  • 无聊的小伙子
    无聊的小伙子
    2021-05-14

    这个功能现在还可以开通吗

    2021-05-14
    赞同
    回复 1
    • 星遇
      星遇
      2021-11-05
      请问现在有合适的解决方案么?
      2021-11-05
      回复
  • xp
    xp
    2020-07-28

    政府项目可以申请开通该功能吗

    2020-07-28
    赞同
    回复 1
    • xp
      xp
      2020-07-28
      第三方开发的政府项目
      2020-07-28
      回复
  • mr.song
    mr.song
    2020-04-03

    我居然不知道有这个接口。😂

    2020-04-03
    赞同
    回复
  • 白筱汐
    白筱汐
    2020-04-02

    问一些各位大佬,这个和getUserInfo 没有关系吧,只获取用户昵称和微信头像的

    2020-04-02
    赞同
    回复
  • 茅十八
    茅十八
    2020-01-13

    啥时候开放申请?能给个时间吗

    2020-01-13
    赞同
    回复
  • 42🌍
    42🌍
    2019-10-22

    <button form-type='submit' class="btn btn-primary" hover-class="btn-primary_hover" open-type="getRealnameAuthInfo" bindgetrealnameauthinfo="realNameAuthInfo" category-id="{{[110, 119]}}">一键添加本人信息</button>

    errMsg"openRealnameAuth:fail not support" 这个是为什么

    2019-10-22
    赞同
    回复 2
    • 大叔
      大叔
      2019-10-22
      这个接口是要走微信申请开白名单,你才能调用呀
      2019-10-22
      1
      回复
    • 42🌍
      42🌍
      2019-10-23回复大叔
      已经申请过啦 是因为在ide里面无法唤起 在真机上就可以了
      2019-10-23
      回复
  • 大叔
    大叔
    2019-09-30

    wxml里就是:

    <button open-type="getRealnameAuthInfo" bindgetRealnameAuthInfo="authinfo" category-id="{{[110, 116]}}">实名授权</button>


    JS里就是:

    authinfo:function (e){

        console.log("实名授权信息:",e);

    },


    结果死活触发不到 authinfo 函数,这是什么问题呢,亲!

    2019-09-30
    赞同
    回复 3
    • 大叔
      大叔
      2019-10-01
      把bindgetRealnameAuthInfo 全部改成小写 bindgetrealnameauthinfo
      2019-10-01
      回复
    • 42🌍
      42🌍
      2019-10-22回复大叔
      为什么我在ide里面一直都是errMsg: "openRealnameAuth:fail not support"
      2019-10-22
      回复
    • 橘猫
      橘猫
      2020-04-01
      这个只能在真机中才能调用
      2020-04-01
      回复
  • Marcus.
    Marcus.
    2019-07-08

    您好,这个组件支持wx.canIUse可用性判断吗?

    2019-07-08
    赞同
    回复
  • 哔哩哔哩
    哔哩哔哩
    2019-06-25

        "errcode": 94008,

        "errmsg": "invalid timestamp hint: [xxxxx]"

    一直提示时间错错误

    2019-06-25
    赞同
    回复 1
    • 大叔
      大叔
      2019-10-22
      八成你是传过去的参数不对哈,时间参数没被正确解析出来,得把你最终传过去的信息串贴来看下
      2019-10-22
      回复

正在加载...

登录 后发表内容

医疗行业小程序实践

课程标签