支付寶小程序獲取 user_id(openid) ThinkPHP版


支付寶小程序獲取 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
{
    //應用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等數據,按需取用


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM