支付宝小程序-获取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文件

 

展开阅读全文

Git 实用技巧

11-24
这几年越来越多的开发团队使用了Git,掌握Git的使用已经越来越重要,已经是一个开发者必备的一项技能;但很多人在刚开始学习Git的时候会遇到很多疑问,比如之前使用过SVN的开发者想不通Git提交代码为什么需要先commit然后再去push,而不是一条命令一次性搞定; 更多的开发者对Git已经入门,不过在遇到一些代码冲突、需要恢复Git代码时候就不知所措,这个时候哪些对 Git掌握得比较好的少数人,就像团队中的神一样,在队友遇到 Git 相关的问题的时候用各种流利的操作来帮助队友于水火。 我去年刚加入新团队,发现一些同事对Git的常规操作没太大问题,但对Git的理解还是比较生疏,比如说分支和分支之间的关联关系、合并代码时候的冲突解决、提交代码前未拉取新代码导致冲突问题的处理等,我在协助处理这些问题的时候也记录各种问题的解决办法,希望整理后通过教程帮助到更多对Git操作进阶的开发者。 本期教程学习方法分为“掌握基础——稳步进阶——熟悉协作”三个层次。从掌握基础的 Git的推送和拉取开始,以案例进行演示,分析每一个步骤的操作方式和原理,从理解Git 工具的操作到学会代码存储结构、演示不同场景下Git遇到问题的不同处理方案。循序渐进让同学们掌握Git工具在团队协作中的整体协作流程。 在教程中会通过大量案例进行分析,案例会模拟在工作中遇到的问题,从最基础的代码提交和拉取、代码冲突解决、代码仓库的数据维护、Git服务端搭建等。为了让同学们容易理解,对Git简单易懂,文章中详细记录了详细的操作步骤,提供大量演示截图和解析。在教程的最后部分,会从提升团队整体效率的角度对Git工具进行讲解,包括规范操作、Gitlab的搭建、钩子事件的应用等。 为了让同学们可以利用碎片化时间来灵活学习,在教程文章中大程度降低了上下文的依赖,让大家可以在工作之余进行学习与实战,并同时掌握里面涉及的Git不常见操作的相关知识,理解Git工具在工作遇到的问题解决思路和方法,相信一定会对大家的前端技能进阶大有帮助。
©️2020 CSDN 皮肤主题: 编程工作室 设计师: CSDN官方博客 返回首页
实付0元
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值