在做服务类小程序时,通常会遇到客户在客户端下单后,接单商家需要有新订单消息提醒的功能。由于小程序模板消息已下线无法使用,而小程序中的订阅消息需要手动订阅后才能触发,并且每次订阅只能触发一次(不管有没有勾选一直允许订阅消息,及时一直允许,也只有一次,只是不弹出授权框而已),再者客户点击下单,商家小程序无法获得订阅授权!因此最终选择的方案为统一服务消息uniformMessage.send。

注意:公众号模板消息,向认证后的服务号开放。所有服务号都可以在功能->添加功能插件处看到申请模板消息功能的入口,但只有认证后的服务号才可以申请模板消息的使用权限并获得该权限。同时,这公众号和小程序要相互关联了,且必须是同主体才行。接收公众号模板消息需要接收人关注此公众号!

由于是使用的微信自己的云函数调用,因此不需要先把小程序的openId转成unionid,再根据unionid得到公众号中对应用户的openId,直接在参数中传入需要接收订单通知的小程序的openId就可以了。

注意的坑,按照官方的示例无法成功发送消息,一直反馈{"errcode":40165,"errmsg":"invalid weapp pagepath hint: 经过测试后发现官方文档有误,此处参数应为page,而不是pagepath。即:page:"pages/index"

云函数代码:


const cloud = require('wx-server-sdk')
cloud.init()
exports.main = async (event, context) => {const wxContext = cloud.getWXContext()const openId = wxContext.OPENID//此处获取本小程序openId,如何获取商家openId看下文try {const result = await cloud.openapi.uniformMessage.send({touser: openId,//公众号appid,要求与小程序有绑定且同主体mpTemplateMsg: {appid: 'wx338663359e69861d',miniprogram: {//公众号模板消息所要跳转的小程序,小程序的必须与公众号具有绑定关系appid: 'wxc297xxxxxxx8754f',//小程序appidpage:"pages/index"//跳转的小程序的路径,注意此处文档中有误},data: {//公众号模板消息的数据first: {value: '恭喜你购买成功!',color: '#173177'},keyword1: {value: '巧克力',color: '#173177'},keyword2: {value: '39.8元',color: '#173177'},remark: {value: '欢迎再次购买!',color: '#173177'}},templateId: 'SuNIuh3Fmz4DmXnExxxxxxxI8qxxxxxxrF5qhX8''//公众号模板id}})return result} catch (err) {return err}
}

以上代码实现了给自己小程序发送,那客户端和商家端两个小程序不同,云开发环境不同,即使同一个微信登录openId也不同,怎么办呢?如果是客户端需要给商家端发送消息,可以使用商家微信登录客户端,获取在客户端云环境中商家微信的openId,云函数中发送统一消息时接收openId使用该openId即可。

那么如果是无法获取商家在客户端云环境中的openId时怎么办呢?最早我使用不同云环境调用云函数,但发现调用uniformMessage.send统一模板消息时,只能将当前触发云函数的云环境中的openId转换为对应的公众号unionid,也就是A小程序使用A的云函数调用B小程序的发送模板消息的云函数时,发送目标openId只能是A小程序对应的openId,被调用的云函数的运行环境与调用它的环境保持一致!!因此,只能使用HTTP API调用的方式发送模板消息。

微信小程序使用云函数实现客户下单后商家小程序接收订单状态通知(通过发送统一服务消息uniformMessage.send实现)相关推荐

  1. 【微信小程序】云函数使用excel-export导出excel

    1.安装nodejs环境 到官网下载安装包(node-v12.14.1-x64.msi),点击下一步一直安装到底 2.使用命令行模式进入小程序项目云函数文件夹,执行安装excel-export命令,安 ...

  2. 小程序统一服务消息实现

    总体思路:运营后台处理某个任务时,推送相关消息到绑定了小程序的微信账户的服务通知里.需要用到用户的openid和用户在小程序中有交互动作产生的formId. 后台表结构设计: 小程序中的代码(taro ...

  3. 微信小程序云函数中的数据处理后返回

    微信小程序云函数中的数据处理后返回 本文主要演示的是,在微信云函数中调用数据库后,如何对获取的内容在云函数内处理后返回. 主函数 exports.main = async (event, contex ...

  4. 微信小程序使用云函数进行mysql操作

    微信小程序使用云函数进行mysql操作 其他操纵数据库方式的一些问题 准备工作 云函数代码 调用云函数时候的代码 最后还需要注意的一些小事情: 其他操纵数据库方式的一些问题 现在使用小程序,对数据库的 ...

  5. uniapp实现微信小程序调用云函数及问题解决

    uniapp实现微信小程序调用云函数及问题解决 使用工具 HBuilder X 微信开发者工具 实现步骤 1.在项目根目录下创建functions文件夹(此为wxcloudfunctions文件夹,可 ...

  6. 微信小程序通过云函数进行微信支付

    转自:http://www.wxapp-union.com/article-5407-1.html 微信小程序微信支付官方流程图链接我简化的流程:本地发起下单请求调用云函数并传送数据云函数处理数据并返 ...

  7. 微信小程序使用云函数发送邮件

    看完本文你将学到: 微信小程序云函数的部署与使用 nodemailer插件的使用 背景故事: hello,大家好这里是小曹同学.上个星期因为原来开发学校课程表的学长毕业了课程表小程序不能用了. 在受了 ...

  8. 微信小程序 调取云函数 信息推送失败response out of time limit or subscription is canceled hint的具体解决方法

    微信小程序 调云函数 信息推送失败,提示errcode":45015,"errmsg":"response out of time limit or subsc ...

  9. 【微信小程序】云开发篇(一)——申请小程序

    [微信小程序]云开发篇(一)--申请小程序 [微信小程序]云开发篇(二)--初始化云开发(微信开发者工具) [微信小程序]云开发篇(三)--代码管理 [微信小程序]云开发篇(四)--开通云开发 [微信 ...

  10. 小程序利用云函数发送电子邮件功能详解

    今天分享一个小功能代码,小程序通过云函数发送电子邮件的功能,上学那会觉得邮箱没啥用了,都快淘汰了的东西,但是现在发现还是有点用处的,印象比较深的就是有一个程序,可以给十年后的自己写邮件,如果大家掌握了 ...

最新文章

  1. JS将日期转换为yyyy-MM-dd HH:mm:ss
  2. Python教程:如何将list嵌套的list的[]去掉
  3. C语言程序设计的常用算法
  4. 眉骨高者为大贵之相_什么样才算富贵相?曾国藩的识人秘诀(组图)
  5. ann人工神经网络_深度学习-人工神经网络(ANN)
  6. 6.安装使用vue-quill-editor
  7. 读书笔记_量化交易如何建立自己的算法交易03
  8. 利用WebHook实现自动部署Git代码
  9. Blender相关的一些链接(持续更新)
  10. 一个崭新的华为交换机配置
  11. word图片另存为变黑色_五种方法可将Word文档转换成图片文件
  12. 在CATIA中实现道路缓和曲线的方法
  13. 怎么利用企业微信营销 企业微信如何营销 企业微信如何维护好友 企业微信如何开通
  14. 令人期待的大戏:千亿百度
  15. CRM八面体:客户关系管理成功案例2 Yorkshire Water
  16. SpringBoot: 启动Banner在线生成工具
  17. 测试IP和端口是否通
  18. win11开机声音如何关闭 windows11关闭开机声音的步骤方法
  19. 需要类型转换时请为模板定义非成员函数——条款46
  20. 【Java多线程并发编程】面试知识点总结

热门文章

  1. 虚拟机连接摄像头程序报错
  2. R 回归分析 非线性回归模型
  3. 云端架构下的手机浏览器内核演进
  4. html中页面目录虚线怎么做,html中文本下面怎么有虚线
  5. 微软服务器2016各版本区别,Win10系统有几个版本?Windows10各版本区别详细介绍
  6. 国庆马上到了,用python实现国旗头像
  7. PHP解决抢购、秒杀、抢楼、抽奖等阻塞式高并发库存防控超量的思路方法
  8. 逆函数求导公式_反函数求导公式
  9. 华北电力计算机类哪个专业好,华北电力大学哪个专业好就业
  10. REDO和UNDO详解