前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >支付宝小程序获取 user_id(openid) ThinkPHP版

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

作者头像
WindrunnerMax
发布2020-08-27 10:51:22
1.9K0
发布2020-08-27 10:51:22
举报
文章被收录于专栏:Czy‘s BlogCzy‘s Blog

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

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

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

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

在这里插入图片描述
在这里插入图片描述
  1. 前端部分,我是使用的静默获取,不会弹出授权框,我只需user_id即可
代码语言:javascript
复制
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个类
代码语言:javascript
复制
AopClient.php
AopEncrypt.php
EncryptParseItem.php
EncryptResponseData.php
SignData.php
request/AlipaySystemOauthTokenRequest.php

依照他的目录结构,那就将前五个类归属于同一个命名空间,第六个类在上层命名空间的request下 我将SDK放在根目录的extend目录下,列出这几个类更改的前几部分,后边与SDK相同,主要是标注namespace,并且由TP框架的自动加载机制,不需要再手动引入

代码语言:javascript
复制
// AopClient.php
<?php
namespace lib\alipay;

use think\Exception;

class AopClient
{
    //应用ID
    public $appId;
    // ..................
}
代码语言:javascript
复制
// 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)
{
	// ..................
}
代码语言:javascript
复制
// EncryptParseItem.php
<?php
namespace lib\alipay;
/**
 *  TODO 补充说明
 *
 * User: jiehua
 * Date: 16/3/30
 * Time: 下午8:55
 */

class EncryptParseItem
{
	// ..................
}
代码语言:javascript
复制
// EncryptResponseData.php
<?php
namespace lib\alipay;
/**
 *  TODO 补充说明
 *
 * User: jiehua
 * Date: 16/3/30
 * Time: 下午8:51
 */

class EncryptResponseData
{

    public $realContent;
    public $returnContent;
} 
代码语言:javascript
复制
// 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;
} 
代码语言:javascript
复制
// 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

代码语言:javascript
复制
$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等数据,按需取用

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2020-03-24 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 支付宝小程序获取 user_id(openid) ThinkPHP版
相关产品与服务
云开发 CloudBase
云开发(Tencent CloudBase,TCB)是腾讯云提供的云原生一体化开发环境和工具平台,为200万+企业和开发者提供高可用、自动弹性扩缩的后端云服务,可用于云端一体化开发多种端应用(小程序、公众号、Web 应用等),避免了应用开发过程中繁琐的服务器搭建及运维,开发者可以专注于业务逻辑的实现,开发门槛更低,效率更高。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档