与微信QQ等小程序不同,支付宝小程序登录授权稍微麻烦一点,主要每次请求都需要配置签名和私钥等,不过原理还是差不多的,官方也有专门的node.js的SDK,只要能够正确的使用这个SDK,接入也并不是特别困难。下面来看一下接入教程吧。

生成并配置密钥

首先我们需要配置小程序的接口加签方式,如下图所示:

配置上述加密方式需要用到官方的加密工具,现在推出了一个在线加密的程序,如下图所示,进入在线工具页面后,一定要选择PKCS1(非JAVA适用),因为我们使用的是node.js开发,所以不能选择java。然后点击生成密钥,下面两个框中就会出现应用的私钥和公钥,这两个都需要用到的。

将上图中的应用私钥复制出来,新建一个文件(名称为:private-key.pem),然后把私钥放进去。接着进入小程序开发设置页面,设置接口加签方式,将上图中的应用公钥输入到下图的输入框中,保存即可。

以上小程序的密钥就算配置成功了。

在云函数中配置SDK

sdk的安装在之前的云函数中提到过,就不具体详细讲解了,主要就是在云函数的命令窗口输入如下代码即可。

npm install alipay-sdk

安装成功后,将之前保存的private-key.pem文件放在云函数的根目录中,最后在云函数中进行引用就可以了,代码如下:

const AlipaySdk = require('alipay-sdk').default;
const fs = require('fs');
var path = require("path");const alipaySdk = new AlipaySdk({appId: '你的小程序id',privateKey: fs.readFileSync(path.resolve(__dirname, './private-key.pem'), 'ascii')
});

以上就完成了uniapp云函数的sdk配置。

获取用户的userId

这个userId其实就是微信小程序中的openid,因为不管是什么基于用户的操作都是需要通过这个userId来实现的,这里就直接贴代码了:

// 小程序前端代码
my.getAuthCode({scopes: ['auth_user'],success: (res) => {console.log(res.authCode)if (res.authCode) {a.callFunction({name:"login",data:{code:res.authCode}}).then(res=>{console.log(res)})}},
});

通过getAuthCode获取操作所需要的code,这个和微信小程序好像是一样的,然后在通过云函数获取到用户的userId,代码如下:

const auth = await alipaySdk.exec('alipay.system.oauth.token', {// 请求参数grantType: 'authorization_code',appId: '2021002184690186',code: event.code,charset: 'utf-8',sign_type: 'RSA2',version: '1.0'});let userId= auth.userId;

这样就成功获取到用户的userId了。

订阅消息的订阅与发送

这个基本上就和微信小程序的订阅消息一样,在前端订阅,然后后端记录之后定时发送消息就可以了。贴一下代码:

// 前端订阅消息
requestSubscribeMessage({entityIds: ['你的订阅消息id'],callback(res) {console.log('订阅回调', res);if (res.success) {// 订阅成功my.call('toast', {content: '模板订阅成功',type: 'success',});} else {switch (res.errorCode) {case 11: {my.call('toast', {content: '用户未订阅关闭弹窗',});break;}default: {my.call('toast', {content: `ErrorCode: ${res.errorCode}, ErrorMsg: ${res.errorMessage}`,});break;}}}},});

订阅成功后后端进行发送就可以了,代码如下:

const send = await alipaySdk.exec('alipay.open.app.mini.templatemessage.send', {appId: '你的小程序id',charset: 'utf-8',sign_type: 'RSA2',version: '1.0',timestamp: "yyyy-MM-dd HH:mm:ss", // 注意时间的格式bizContent: {to_user_id: "用户的userId",user_template_id: "订阅消息id",page: "pages/index/index",data: {   // 这是订阅消息的参数"keyword1": {"value": message.data},"keyword2": {"value": now_date}}}});

主要需要注意的就是订阅消息的用户参数必须写在bizContent中,参考上述代码就没啥问题。部分内容可以参考小程序添加订阅消息uniapp详细教程

以下是支付宝演示小程序:

以上就是本期的全部内容了,不过不懂的可以留言告诉我,或者你不想动手也可以联系我有偿添加该功能。对了最近支付宝活动领取大额通用红包,没领的可以扫码下方二维码领取一下,也算是支持本公众号了。

uniapp接入支付宝登录及订阅消息教程相关推荐

  1. 个人开发者的项目如何接入支付宝登录功能(保姆级教学)(Java的后台为例,其他语言类似)

    文章目录 前言 一.创建开发者账号和应用并配置 (1)创建应用 (2)接入产品并配置 (3)开发设置 二.接入SDK (1)下载SDK (2)写后台 代码解释 : getToken方法的code参数怎 ...

  2. uniapp接入支付宝支付详细申请流程2021.6.1

    关于接入支付宝这块的内容,网上找了一些总感觉不是已经过时了就是还存在很多问题,介绍的并不详细,所以打算自己写一下详细接入流程.仅介绍申请应用接入流程,不涉及后台sdk接口内容. 首先uniapp的支付 ...

  3. SpringBoot项目接入支付宝第三方登录

    今年大四毕业,由于新冠肺炎疫情的原因,开学和毕业答辩的时间都进行了推迟,因此有较多的时间对毕设项目做修改和调整,便在项目中接入微信和支付宝的第三方登录.在此需要说明,微信和支付宝的开发者平台大体一致, ...

  4. 重磅 | 小程序模板消息能力调整,长期性订阅消息终于来了

    原创: 冷思真 蒋鸿昌 首发:「知晓程序」公众号 - 最好的微信新商业媒体 尽管部分运营者还在传授如何运用模板消息召回用户的运营技巧,但对部分开发者而言,模板消息已经成了食之无味弃之可惜的存在.与其再 ...

  5. uni-app - 最详细 H5 网页接入微信登录功能,提供公众号配置与详细注释示例代码(移动端网页实现点击登录按钮后 调用微信公众号授权登录功能 详细讲解接入流程与详细示例代码)官方最新超级详细教程

    前言 关于 uni-app 项目中接入微信授权登录的文章鱼龙混杂,各种乱代码.过时.没注释.不讲流程原理,非常难用. 本文实现了 uni-app H5 移动端网页项目,实现微信授权登录功能,详细讲解接 ...

  6. MQTT.fx客户端MQTT接入阿里云物联网平台,登录、订阅、发布消息

    目录 1. 准备 2. MQTT.fx 设置登录名.密码 3. MQTT.fx 接入阿里云,订阅Topic 4. 阿里云下发数据给 MQTT.fx 5. MQTT.fx 发布消息给服务器 相关链接:M ...

  7. uni-app 小程序 微信订阅消息通知

    1.在小程序公众平台选择消息模板 2.uni-app前端调用代码 a.小程序登录代码 loginUser() {var me = this;if (!me.name) {uni.showToast({ ...

  8. uni-app微信小程序订阅消息功能开发(流程讲解篇)

    温馨提示 微信小程序中废弃了"模板消息",,微信小程序模板消息 使用场景 首先我们需要明白微信订阅消息使用场景,比如客户点了一份美团外卖客户需要知道当前订单商家是否接单,或订单是否 ...

  9. uni-app.开发微信小程序实现消息订阅

    使用场景 在我们开发的小程序中司机首次登录需要先认证从业资质和车辆.司机在小程序端提交资料后,后台需要审核相关资料.审核结束后需要向司机推送相关的审核结果,这里就需要实现微信小程序的消息订阅 订阅消息 ...

  10. Java接入支付宝支付超级详细教程——从入门到精通

    ​ Java接入支付宝支付教程 源码下载 源码获取:点击获取源码 本文介绍了"二维码付款"的代码.其他支付方式的代码都在源码中. 一.创建应用 1.登录支付宝开放平台 支付宝开放平 ...

最新文章

  1. [译]JavaScript中,{}+{}等于多少?
  2. MyEclipse-7.5.0版注册码破解及激活操作
  3. linux设备驱动模型之 kset原理与实例分析
  4. finally块_如何从finally块访问方法的结果值
  5. numcpp速度对比_PHP和C++性能对比.pdf
  6. 计算机中 amp 是什么符号,这里面的amp;amp;,||是什么意思,相当与数学里面的什么符号?...
  7. 微型计算机控制系统常用报警方式,微型计算机控制技术复习资料.docx
  8. “互联网+”时代,漫谈影响用户体验的X因素
  9. 基于单片机的GPS开发 (five) GPS数据获取解析思路
  10. linux加载dl580网卡驱动,HP DL580G5安装centos下的阵列卡驱动
  11. 如何使用patch命令打补丁
  12. 有关java的几个日期类的转换
  13. Android键盘灯亮度控制
  14. 【Python】个人所得税
  15. java 锯齿_java 生产文字图片边缘有锯齿状
  16. 美大联盟中国小将3年年薪翻60倍 从第7前锋到赢新合同
  17. Elyse Alexander - Unplanned Song WA47电子管麦克风
  18. glide 压缩图拍呢_Android图片压缩(二次采样)
  19. 嵌入式软件工程师必须了解的八大加密算法
  20. c语言循环计算分式加减乘除混合运算,计算()_分式的加减乘除混合运算及分式的化简_中学题库-沪江中学学科网...

热门文章

  1. 工业锅炉计算机控制系统框图,计算机控制系统实例..doc
  2. 断点回归matlab,【独家发布】差分断点回归设计(DIRD)及其在人口断点中的应用...
  3. win7中inter信息服务器,Win7系统Internet选项在哪里?
  4. QA与SQA到底有什么区别和联系?他们的职责和工作内容是什么?QC,QM又是什么?
  5. 11. Flash助手推荐的弹窗广告怎么删除
  6. matlab表格数据合并同类项,Excel合并同一列中的同类项原来这么简单,赶紧收藏!...
  7. malloc(): smallbin double linked list corrupted:
  8. JM8.5中的高精度象素运动估计
  9. 【转】家庭影院的音频线改如何布置
  10. 关于 Kubernetes中Pod健康检测和服务可用性检查的一些笔记(LivenessProbe+ReadinessProbe)