支付宝小程序根据验签与解密处理解析获取手机号码
1.进入 小程序详情页 > 开发设置 > 内容加密方式,首次设置可以看到 设置 按钮(若已设置则为 查看 按钮),经过核身校验后可以查看 AES 设置页面(该密钥由蚂蚁开放平台生成,开发者仅需要将密钥配置到你的系统中即可) 注意:若已配置密钥,请谨慎重新重新生成密钥,否则若你的服务端密钥没有更新最新密钥会导致解密失败 如下图:
2.在 小程序详情页 > 设置 > 开发设置页面,按照下图操作查看支付宝 RSA2 公钥(若看不到 查看支付宝公钥 入口,请按照“设置应用公钥”文档设置应用的 RSA2 公钥) 如下图:
3.在涉及敏感数据的情况下,jsApi返回的结果是密文,同时会对报文进行签名,需要传递到开发者服务端进行报文解密,整体的交互流程如下图所示:
4.完整报文示例:涉及到开发者服务端处理的安全操作包括:解密和验签。由于是否加密取决于数据的安全的敏感程度,所以存在明文的情况。res.response为完整的报文数据,示例如下(为了展示方便,报文示例均作了json的美化处理) 如下:
{
"response": "hvDOnibG0DPcOFPNubK3DEfLQGL4=",
"sign": "OIwk7zfZMp5GX78Ow==",
"sign_type": "RSA2",
"encrypt_type": "AES",
"charset": "UTF-8"
}
5.验签与解密处理 无论是否涉及解密,Java后端处理逻辑都可以按照下述逻辑处理(以下代码仅作为代码示例,生产环境使用请注意异常处理逻辑;其它语言请参考常见问题中验签解密通用逻辑的说明) 代码如下:
public ResultsCode plainData(JSONObject jsonObject) throws Exception {JSONObject jsonStr = jsonObject.getJSONObject("jsonstr");String content = jsonStr.getString("encryptedData");//即前端传过来的response报文String sign = jsonStr.getString("sign");//对response报文的签名String signType = "RSA2";String charset = "UTF-8";String encryptType = "AES";//如果密文的boolean isDataEncrypted = !content.startsWith("{");boolean signCheckPass = false;//2. 验签String signContent = content;//你的小程序对应的支付宝公钥(为扩展考虑建议用appId+signType做密钥存储隔离)String signVeriKey = this.signVeriKey;//你的小程序对应的加解密密钥(为扩展考虑建议用appId+encryptType做密钥存储隔离)String decryptKey = this.decryptKey;//如果是加密的报文则需要在密文的前后添加双引号if (isDataEncrypted) {signContent = "\"" + signContent + "\"";}try {signCheckPass = AlipaySignature.rsaCheck(signContent, sign, signVeriKey, charset, signType);} catch (AlipayApiException e) {//验签异常, 日志}if (!signCheckPass) {//验签不通过(异常或者报文被篡改),终止流程(不需要做解密)return ResultsCode.failure(MsgCode.defaultNullPoint.getCode(), MsgCode.defaultNullPoint.getMsg());}//3. 解密String plainData = null;if (isDataEncrypted) {try {plainData = AlipayEncrypt.decryptContent(content, encryptType, decryptKey, charset);} catch (AlipayApiException e) {e.printStackTrace();//解密异常, 记录日志return ResultsCode.failure(MsgCode.defaultNullPoint.getCode(), MsgCode.defaultNullPoint.getMsg());}} else {plainData = content;}JSONObject object = JSONObject.parseObject(plainData);if (object != null && "10000".equals(object.getString("code"))) {return ResultsCode.success(object);}return ResultsCode.failure(MsgCode.governmentQueryField.getCode(), MsgCode.governmentQueryField.getMsg()); }
6.调用方法 解析数据如下:
支付宝小程序根据验签与解密处理解析获取手机号码相关推荐
- 支付宝小程序之蜻蜓设备刷脸核身获取手机号
支付宝小程序之蜻蜓设备刷脸核身获取手机号 view <button class="btn-item btn-print" open-type="getAuthori ...
- [另类方式破解]支付宝的小程序sign验签参数算法
前段时间想到支付宝的一个做任务领集分宝的小程序- 挺好的,想要做一个获取到所有任务,然后全自动做任务的工具,抓包发现有sign验签,于是有了本帖 抓完才发现,整个小程序是用https传输数据的. 另类 ...
- uniapp:微信小程序使用高德地图进行坐标反解析获取详细地址
开发过小程序的都了解,我们在调用 uni.getLocation Api的时候,在微信小程序端,只会返给我们一个坐标系,当前位置的经纬度,当我们需要去知道当前位置的详细地址时,我们就需要进行反解析来获 ...
- 支付宝小程序唤起独立签约
目录 获取签约字符串 唤起支付宝周期扣款签约页面 支付宝小程序唤起独立签约,需要通过alipay.user.agreement.page.sign接口获取签约字符串signStr,然后调用my.pay ...
- 【小程序demo】带你玩转支付宝小程序之获取会员信息
火速围观!支付宝近期推出了一系列小程序示例,不仅提供在线体验而且提供全部源代码,示例涵盖了:会员信息.小程序二维码.刷脸认证.小程序支付.模板消息.支付宝卡包和线下买单7个高频使用场景.直接下载源代码 ...
- 抖音小程序支付宝异步回调中验签php代码
抖音小程序支付宝异步回调中验签php代码 异步回调中验签中我遇到坑:openssl_verify()总是返回0:问了支付宝技术客服才解决.已测试.可用 代码php示例: f ...
- php 支付宝小程序授权登陆验签_星巴克“啡快”登陆支付宝小程序,让你“飞快”取到咖啡...
当代年轻人的生活方式是怎样的? 靠地铁通勤,靠咖啡续命 早上睁不开眼,咖啡来一杯 中午昏昏欲睡,咖啡来一杯 晚上熬夜加班,咖啡来一杯 喝完这杯,还有一杯 "宁可食无肉,不可早无星" ...
- 支付宝小程序获取手机号(证书方式解密)及生成小程序码代码示例
注意:部分功能依赖于第三方支付工具类:ijpay import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.TypeReference ...
- golang 获取支付宝小程序用户手机号、登录授权、AES解密
目前支付宝官方的api没有关于golang语言的sdk,最近在开发支付宝小程序登录,发现支付宝对于敏感信息会进行AES加密 ,例如获取用户手机号,会先由前端获取手机号密文.传给服务端,进行解密,从而获 ...
最新文章
- 从用户角度看,DBMS应当提供哪些功能?
- 解决VS2013调试ASP.NET中无法调试的问题:当前不会命中断点。在 XXXX.dll 中找到了 XXX.cs 的副本,但是当前源代码与 XXXX.dll 中内置的版本不同。...
- squirrelsql安装
- 结构型模式—享元模式
- OSSIM中配置网络资产监控
- android 打开免打扰模式_三星S10+免root也能完美使用Xp框架?这款神器你必须要知道...
- sqoop导数据出现问题
- python实现排列组合公式算法_朴素贝叶斯算法的Python实现
- Python基础(五)--函数
- hibernate中antlr对于hql生成抽象语法树源码解析
- 八、Java的可变参数例子
- C#中英文字符串固定长度换行
- 安装Office2007
- 2020电子设计竞赛G题 - 非接触物体尺寸形态测量
- 熵、联和熵与条件熵、交叉熵与相对熵是什么呢?来这里有详细解读!
- 日本瑞萨renesas MCU---汽车电子MCU的不二之选
- K8s安全管理:认证、授权、准入控制
- 南开大学张昊计算机,张昊-南开大学电子信息与光学工程学院
- 可免费下载的最新人民日报分词语料库(NEPD)发布(转载)
- STC32G库函数(五)——ADC检测反推电源电压