支付宝小程序获取 user_id(openid) ThinkPHP版
支付宝小程序获取 user_id(openid) ThinkPHP版
近期支付宝小程序个人公测了,就想着玩一下,没想到就获取用户唯一标识都这么麻烦,微信的openid的话Get请求一下就完事了,支付宝的user_id,需要对接SDK以及公钥私钥验签,而且支付宝的开发工具巨占内存,打开就至少占用2G内存,脑阔疼
- 首先注册一个小程序,附一些用得到的链接
支付宝小程序注册链接
开发工具下载链接
SDK下载地址
支付宝小程序开发文档
RSA 密钥生成工具下载地址 - 注册完成后将上边提供的软件都下载好,在开发中心—小程序应用—选择小程序—开发管理–功能列表(在底部)中添加 [ 获取会员基础信息 ] 功能。

- 使用RSA生成工具生成密钥,并且这个工具以后可以用来验签使用

生成应用私钥和应用公钥后,复制应用公钥,在 [ 开发中心—小程序应用—选择小程序-设置–开发设置–设置接口加密方式 ]

- 前端部分,我是使用的静默获取,不会弹出授权框,我只需user_id即可
my.getAuthCode({
scopes: 'auth_base',
success:(res) =>{
//在此处将res.authCode发送到后端
//可以参照https://blog.csdn.net/qq_40413670/article/details/103796680 五、部署类 dispose.js的9. APP启动事件
}
})
- ThinkPHP部分,首选下载SDK,SDK中有很多很多类,如果只需要获取user_id则只需要下面6个类
AopClient.php
AopEncrypt.php
EncryptParseItem.php
EncryptResponseData.php
SignData.php
request/AlipaySystemOauthTokenRequest.php
依照他的目录结构,那就将前五个类归属于同一个命名空间,第六个类在上层命名空间的request下
我将SDK放在根目录的extend目录下,列出这几个类更改的前几部分,后边与SDK相同,主要是标注namespace,并且由TP框架的自动加载机制,不需要再手动引入
// AopClient.php
<?php
namespace lib\alipay;
use think\Exception;
class AopClient
{
//应用ID
public $appId;
// ..................
}
// AopEncrypt.php
<?php
namespace lib\alipay;
/**
* 加密工具类
*
* User: jiehua
* Date: 16/3/30
* Time: 下午3:25
*/
/**
* 加密方法
* @param string $str
* @return string
*/
function encrypt($str, $screct_key)
{
// ..................
}
// EncryptParseItem.php
<?php
namespace lib\alipay;
/**
* TODO 补充说明
*
* User: jiehua
* Date: 16/3/30
* Time: 下午8:55
*/
class EncryptParseItem
{
// ..................
}
// EncryptResponseData.php
<?php
namespace lib\alipay;
/**
* TODO 补充说明
*
* User: jiehua
* Date: 16/3/30
* Time: 下午8:51
*/
class EncryptResponseData
{
public $realContent;
public $returnContent;
}
// SignData.php
<?php
namespace lib\alipay;
/**
* Created by PhpStorm.
* User: jiehua
* Date: 15/5/2
* Time: 下午6:21
*/
class SignData
{
public $signSourceData = null;
public $sign = null;
}
// AlipaySystemOauthTokenRequest.php
<?php
namespace lib\alipay\request;
/**
* ALIPAY API: alipay.system.oauth.token request
*
* @author auto create
* @since 1.0, 2019-07-03 12:05:01
*/
class AlipaySystemOauthTokenRequest
{
// ........................
}
调用类得到user_id
$c = new AopClient();
$c->appId = ""; // APPID
$c->rsaPrivateKey = ""; // 生成的RSA私钥
$c->alipayrsaPublicKey = ""; // 生成的RSA公钥
$c->signType= "RSA2";
$request= new AlipaySystemOauthTokenRequest();
$request -> setCode($_POST['code']); //前端传来的code
$request -> setGrantType("authorization_code");
$response= $c->execute($request);
$user_id =$response -> alipay_system_oauth_token_response -> user_id;
至此,获取user_id完成,如果有验签错误的话,可以使用上述RSA生成工具进行调试,此外返回值中还有token等数据,按需取用
支付宝小程序获取 user_id(openid) ThinkPHP版的更多相关文章
- 微信小程序 获取用户openid
1,可以在小程序app.js入口文件中放入登录代码 wx.login({ success: res => { // 登录注册接口 if (res.code) { // 调用服务端登录接口,发送 ...
- 微信小程序获取到Openid
前台代码片段 onLoad: function () { wx.login({ success(res) { console.log('code: '+res.code) if (res.code) ...
- 微信小程序获取用户openid,头像昵称信息,后台java代码
https://blog.csdn.net/qq_39851704/article/details/79025557
- 小程序获取openId
1.小程序获取微信openId wx.login({ success: res => { // 发送 res.code 到后台换取 openId, sessionKey, unionId / ...
- PHP实现支付宝小程序用户授权的工具类
背景 最近项目需要上线支付宝小程序,同时需要走用户的授权流程完成用户信息的存储,以前做过微信小程序的开发,本以为实现授权的过程是很简单的事情,但是再实现的过程中还是遇到了不少的坑,因此记录一下实现的过 ...
- 支付宝小程序与微信小程序开发功能和语法糖不同
最近开始负责公司webapp数据打通支付宝小程序,之前已经打通了微信小程序,现在根据支付宝小程序的开发文档在之前的模板上面做修改. 在修改模板的过程中,总结一下双方功能和语法糖的不同之处. 框架: a ...
- 支付宝小程序云开发serverless----获取用户的user_id
支付宝小程序云开发serverless----获取用户的user_id 博客说明 文章所涉及的资料来自互联网整理和个人总结,意在于个人学习和经验汇总,如有什么地方侵权,请联系本人删除,谢谢! 开通云调 ...
- 微信小程序获取微信的openid
通过登录接口获取登录凭证,然后通过request请求后台获取openid,需要把后台域名放到小程序后台的request 合法域名内: 1.wx.login 获取登录凭证 2.wx.request 发 ...
- 小程序获取微信用户的openid
小程序获取微信用户的openid //index.js //获取应用实例 const app = getApp() Page({ globalData: { appid: '11121221a89e0 ...
随机推荐
- [转载] 自定义标签,jsp调用java类
自己懒得做笔记,借用一下. 之前例子已经写好了,由于时间关系一直没有发布,这次带来的是关于taglib中的<tag>的基本功能已经介绍完毕了,在taglib中我们发现有一个标签叫做< ...
- 剑指offer-18-2. 删除链表中重复的结点
剑指offer-18-2. 删除链表中重复的结点 链表 在一个排序的链表中,存在重复的结点,请删除该链表中重复的结点,重复的结点不保留,返回链表头指针. 例如,链表1->2->3-> ...
- 系统分析与设计lesson6
| 分类 作业 | 1.用例建模 a. 阅读 Asg_RH 文档,绘制用例图. 按 Task1 要求,请使用工具 UMLet,截图格式务必是 png 并控制尺寸 b. 选择你熟悉的定旅馆在线服务系统 ...
- 5G将会是量变到质变的新科技时代
马斯洛需求分为5层,最底层的需求是温饱,过去几十年都无人反驳,但随着科技的发展,人类最基本最底层的需求已经不再是温饱,而是手机和WIFI,当然,这只是网友的调侃罢了,但也从侧面反映出了手机和WFI网 ...
- Android长按及拖动事件探究
Android中长按拖动还是比较常见的.比如Launcher中的图标拖动及屏幕切换,ListView中item顺序的改变,新闻类App中新闻类别的顺序改变等.下面就这个事件做一下分析. 就目前而言,A ...
- Android下的定时任务
Android中的定时任务一般有两种实现方式,一种是使用JavaAPI里的Timer类,另一种是使用android的Alarm机制. 这两种方式在多数情况下都能实现类似的效果,但Timer有一个明显的 ...
- python3自动安装脚本,python3.x与python2.x共存
1.前言: python3过程中,通过搜索一些文章参考安装过程发现比较麻烦,而且还出现一些不可预期的报错.python3环境需要升级openssl,所以为了部署到其他环境更方便,写自动安装脚本方式,且 ...
- PyQt5之俄罗斯方块
上个礼拜有个需求,对csv里的数据按条件进行拆分计算.一想到要做计算,少不了pandas.还有个要求最好是生成命令行工具或者带有界面. 于是尝试下,使用PyQt5做了个简单的UI界面给程序包个壳子,然 ...
- LeetCode 81.Search in Rotated Sorted Array II(M)
题目: Suppose an array sorted in ascending order is rotated at some pivot unknown to you beforehand. ( ...
- Yuchuan_Linux_C 编程之十一 进程间通信
一.整体大纲 二.进程间通信概念及方法 Linux环境下,进程地址空间相互独立,每个进程各自有不同的用户地址空间.任何一个进程的全局变量在另一个进程中都看不到,所以进程和进程之间不能相互访问,要交换 ...