支付寶小程序-獲取accessToken、用戶信息 - 後端爲nodejs

相對於微信小程序,支付寶小程序獲取用戶信息步驟感覺更麻煩,也許是支付寶對安全非常看重吧。

下面是:支付寶小程序-獲取accessToken、用戶信息 - 後端爲nodejs的詳細步驟,有不懂的請留言。

先貼下官方詳細文檔:https://docs.alipay.com/mini/introduce/auth

SDK下載:https://docs.open.alipay.com/54/103419

一、添加獲取會員信息功能

進入應用列表:https://open.alipay.com/platform/miniIndex.htm#/

選擇需要獲取會員信息的小程序,拉到底部,添加功能,選擇獲取會員信息。

二、設置祕鑰

說明文檔:https://docs.alipay.com/mini/introduce/rsa2

下載官方的祕鑰生成工具分爲windows和mac版本。

按照說明生成公鑰和祕鑰,存放在工具文件夾根目錄的 RSA密鑰 文件夾下。

在之前選擇的小程序裏 找到【設置】-【開發設置】-【接口加簽方式】

上傳應用公鑰,或者複製公鑰文件裏的數據,私鑰是後端請求接口的時候需要的,準備工作基本完成,下面是代碼

三、小程序端獲取authcode

my.getAuthCode接口,scopes值爲 "auth_user",傳到後端接口。

四、服務器端獲取acctoken、userid等(nodejs版)

使用官網提供的sdk,npm i alipay-sdk 下載模塊。

appid在小程序後臺獲取;

privateKey爲第二步的應用祕鑰,也可以寫成 

privateKey: fs.readFileSync('./private-key.pem', 'ascii')

完整封裝代碼:minialiplay.js

let AlipaySdk = require("alipay-sdk").default;
const AlipaySdkConfig = {
  "appId": "20190xxxxxxxxxxxxx",
  "privateKey": `第二步生成的私鑰`,
};
const alipaySdk = new AlipaySdk(AlipaySdkConfig);

class aliplayApi {
  /**
   * 獲取accToken
   * @param {obj} param0 
   */
  static async accToken({ code }) {
    console.log("code", code);
    try {
      let params = {
        grantType: 'authorization_code',
        code,
      };
      let options = {};
      let r1 = await alipaySdk.exec("alipay.system.oauth.token", params, options);
      return r1;
    }
    catch (e) {
      console.log(e);
    }
  }
  /**
   * 獲取用戶信息
   * @param {obj} param0 
   */
  static async userInfo({ accessToken }) {
    try {
      let params = {
        auth_token: accessToken
      };
      let options = {};
      let r1 = await alipaySdk.exec("alipay.user.info.share", params, options);
      return r1;
    }
    catch (e) {
      console.log(e);
    }
  }
};

module.exports = aliplayApi;

後端路由代碼:使用的express框架

let express = require('express');
let router = express.Router();
let aliApi = require("./minialiplay");
router.post("/userinfo", async (req, res) => {
  try {
    let r1 = await aliApi.accToken(req.body);
    let r2 = await aliApi.userInfo(r1);
    res.json(r2);
  }
  catch (e) {
    console.log(e);
  }
});

五、小程序端代碼

完整小程序端代碼下載地址:http://nodejs999.com/userinfo.rar

github地址:https://github.com/zzwwjjdj319/alipayMiniUserInfo

由於是從微信小程序代碼直接改過來的,所以有些命名還是wechat,不過不影響。

在使用了wx的js頂部加了let wx = my;代碼把接口封裝成了promise,同時支持async/await 寫法。

重要代碼:

async getUserInfo() {
    try {
      let r1 = await apis.api("getAuthCode", { scopes: "auth_user" });
      console.log(r1);
      let { authCode: code } = r1;
      let r2 = await ajax.postApiData("userinfo", { code });
      console.log(r2);
    }
    catch (e) {
      console.log(e);
    }
  }

支付寶小程序端控制檯輸出結果:

六、小程序端代碼需要修改的地方

appconfig.js文件

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章