支付宝小程序获取 user_id(openid) ThinkPHP版

近期支付宝小程序个人公测了,就想着玩一下,没想到就获取用户唯一标识都这么麻烦,微信的openid的话Get请求一下就完事了,支付宝的user_id,需要对接SDK以及公钥私钥验签,而且支付宝的开发工具巨占内存,打开就至少占用2G内存,脑阔疼

  1. 首先注册一个小程序,附一些用得到的链接
    支付宝小程序注册链接
    开发工具下载链接
    SDK下载地址
    支付宝小程序开发文档
    RSA 密钥生成工具下载地址
  2. 注册完成后将上边提供的软件都下载好,在开发中心—小程序应用—选择小程序—开发管理–功能列表(在底部)中添加 [ 获取会员基础信息 ] 功能。
  3. 使用RSA生成工具生成密钥,并且这个工具以后可以用来验签使用

    生成应用私钥和应用公钥后,复制应用公钥,在 [ 开发中心—小程序应用—选择小程序-设置–开发设置–设置接口加密方式 ]
  4. 前端部分,我是使用的静默获取,不会弹出授权框,我只需user_id即可
my.getAuthCode({scopes: 'auth_base', success:(res) =>{//在此处将res.authCode发送到后端//可以参照https://blog.csdn.net/qq_40413670/article/details/103796680 五、部署类 dispose.js的9. APP启动事件}
})
  1. 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
{//应用IDpublic $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版相关推荐

  1. 支付宝小程序获取用户授权并进行认证登录流程(前端)

    1.支付宝小程序获取用户授权并进行认证登录流程 1.1申请获取用户信息能力     登录功能做之前要先沟通好客户的需求,支付宝小程序获取用户授权调用相应的接口之前要先获得对应的能力.如果需要获取身份证 ...

  2. 支付宝小程序获取用户信息及手机号

    支付宝小程序获取用户信息及手机号 众所周知,微信小程序是可以通过微信本身授权后再登录,平台可以拿到微信用的的账号相关信息,然后保存到数据库中,那么同理在支付宝小程序开发过程中,登录功能的设计也可以如此 ...

  3. 支付宝小程序获取复选框选中值id,使其显示且可编辑

    问题概述 在做支付宝小程序编辑表单时,需要将用户之前填.选的信息显示出来后再编辑.这里针对复选框选中值的获取显示,通过服务端发送请求后拿到的选中id,显示选中值并且可编辑. axml代码片段 < ...

  4. 支付宝小程序获取php用户id,02支付宝小程序(基于知晓云)~如何获取用户ID

    一.引入SDK 初始化成功后 二.支付宝小程序管理平台,增加[获取会员信息功能] 否则如下错误 三.获取用户ID 1.在app.js增加用户注册功能并缓存用户信息 // 注册用户~到知晓云平台 fun ...

  5. 支付宝小程序获取手机号(证书方式解密)及生成小程序码代码示例

    注意:部分功能依赖于第三方支付工具类:ijpay import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.TypeReference ...

  6. uniapp - [最新] 超详细实现支付宝小程序获取手机号、个人信息,支付宝弹框授权拿到用户手机号与昵称头像等信息完整流程(详细示例源码与注释,一键复制快速应用到项目中)

    效果图 网上的文章乱七八糟的都不行,新手小白很难看懂,本篇文章通俗易懂. 本博客实现了在uniapp 支付宝小程序项目中,从 0-1 描述了如何授权获取用户的手机号和头像昵称信息,一看就能懂 你可以跟 ...

  7. 支付宝小程序获取位置API没有城市区号的最佳处理方案

    前言: 需要对城市区号进行判断,但是支付宝小程序提供的my.getLocation() API返回的数据中只有6位的城市行政代码,诸如:深圳(440300),并没有区号(0755),那么怎么办呢? 需 ...

  8. 支付宝小程序获取用户的user_id案例

    官方文档:https://docs.alipay.com/mini/introduce/auth 一.首先获取authcode 官方文档:https://docs.alipay.com/mini/ap ...

  9. uniapp授权登录微信支付宝小程序获取code和基础信息

    项目背景:采用uniapp框架开发微信和支付宝两端小程序,前端授权基础信息和code传给后端获取openid(微信)和user_id(支付宝)建立用户体系. 项目描述:之前分开用原生框架开发的时候,都 ...

最新文章

  1. angular react_Angular 2 vs React:将会有鲜血
  2. linux rpc.statd服务 获取系统性能统计 简介
  3. mysql查询建表SQL语句
  4. 关于python_关于 Python
  5. C#获取文件(磁盘驱动器)的关联图标(使用API SHGetFileInfo)
  6. BlogEngine.NET 1.5的BlogProvider、DbBlogProvider
  7. 每周个人进度总结02
  8. pytorch def __init__(self, num_classes, bkg_label, top_k, conf_thresh, nms_thresh):
  9. 基于PHP的留言板毕业论文,网络留言板
  10. windows server 2012 R2密码恢复
  11. SQL Server 负载均衡集群方案之Moebius
  12. 关于计算机网考教学研讨,【计算机教学论文】计算机教学质量的研讨2篇(共4479字)...
  13. 【有利可图网】多图如何排版?分享几个方案
  14. php sapi全拼,php sapi type
  15. 大龄Android 开发们最担忧的事儿,太难了~
  16. kubernetes Affinity亲和性
  17. 攻防演练 第三方供应商梳理
  18. 为久别重逢的同学,朋友,和心中的人
  19. 【区块链】简单理解区块链是什么
  20. 不要闷声发大财,要懂内存分析……

热门文章

  1. FFmpeg入门详解之19:音视频封装原理简介
  2. 启动运行.launch报错[robot_launch.launch] is neither a launch file in package nor is a launch file name
  3. 大数据 端到端_端到端数据分析性能
  4. JavaScript的原型与原型链理解
  5. oracle数据库创建新用户
  6. #Android笔记# 超级足球app 开发总结(二)—— SpannableString根据标记插入文字实现图文混排
  7. 如何用ChatGPT协助做内容分发?(文本变成直播/音频/视频脚本)
  8. windows10安装kali-linux指南(wsl),含kali桌面、中文
  9. matlab slice 斜切,MATLAB插值与拟合
  10. Android studio 出现错误Run with --stacktrace option to get the stack trace. Run with --info or --debug o