小程序模板网

微信小程序模板消息填坑

前段时间研究了下微信模板消息:服务通知(开发api:https://mp.weixin.qq.com/debug/wxadoc/dev/api/notice.html)我在过程中遇到的keng,就是post传的 form_id(前提就是在微 ...

 
 
 

一:模板消息

前段时间研究了下微信模板消息:服务通知(开发api:https://mp.weixin.qq.com/debug/wxadoc/dev/api/notice.html)

我在过程中遇到的keng,就是post传的 form_id(前提就是在微信后台已经添加了消息模板)

form_id 表单提交场景下,为 submit 事件带上的 formId; 
支付场景下,为本次支付的 prepay_id

1.表单提交场景下(需在真机上运行)

 

		
  1. <form bindsubmit="formSubmit" report-submit = 'true'></form>

js:里面获取e.detail.

 

		
  1. Page({
  2.  
  3.   formSubmit: function(e) {
  4.  
  5.     console.log('form发生了submit事件,携带数据为:', e.detail.value)
  6.  
  7. }
  8.  
  9. })

当小伙伴看到,上面的 formId:"the formId is a mock one ",这是因为你在微信开发器上面运行的,那就是要在真机上运行

2.支付场景下

 

		
  1. a.$prepay_id = str_replace('prepay_id=', '', $data['package']);

需要后端同学在调微信支付接口的时候,获取package 里面的 prepay_id,我是存储起来了,然后我放在notify 支付成功里面的,OK 完成

 

二:跳坑说明

分享者:苏桃子,原文地址  一开始的时候下发模板消息是在微信吊起支付成功后触发,此时发现模板消息有时好用,偶尔不好用,不好用的还是报错是 41028,form_id不正确,或者过期。问询了一些前辈才知道是存在网络延迟,导致不起作用,采用定时器这种发现,循环调用模板消息,在

调用成功后停止定时器。

给一个具体的例子:

 

		
  1. var time = setInterval(function () {
  2. tem();//定时发起模板消息请求,校验
  3. }, 5000)
  4.  
  5. function tem(){
  6.   var l = 'https://api.weixin.qq.com/cgi-bin/message/wxopen/template/send?access_token=ACCESS_TOKEN;
  7.   var g = {   
  8. touser: openId,   
  9.   template_id: '申请的模板id', 
  10.    page: '模板入口页面', 
  11.    form_id: 本次支付的prepay_id, //只有在支付成功时 form_id 才有值
  12.      data: {
  13.  
  14. "keyword1": {
  15. "value":key1,
  16. "color": "#4a4a4a"
  17. },
  18. "keyword2": {
  19. "value": key2,
  20. "color": "#9b9b9b"
  21. },
  22. "keyword3": {
  23. "value": key3,
  24. "color": "#9b9b9b"
  25. },
  26. "keyword4": {
  27. "value": key4,
  28. "color": "#9b9b9b"
  29. },
  30. "keyword5": {
  31. "value": key5,
  32. "color": "#172177"
  33. },
  34. },
  35. emphasis_keyword: 'keyword1.DATA' //模板需要放大的关键词
  36. }
  37.  
  38. wx.request({
  39. url: l,  //
  40. data: g, //模板数据
  41. method: 'POST',
  42. success: function (res) {
  43.  
  44. if (res.data.errcode == 0) {
  45. console.log("sucess");
  46. clearInterval(time);
  47. }
  48. console.log(res);
  49. // wx.showToast({
  50. // title: '订单支付成功',
  51. // icon: 'success',
  52. // duration: 1000
  53. // })
  54. },
  55. fail: function (err) {
  56. // fail
  57. console.log("push err")
  58. console.log(err);
  59. // 测试
  60. wx.showToast({
  61. title: err.errmsg,//'系统繁忙'
  62. icon: 'success',
  63. duration: 1000
  64. })
  65. },
  66. complete: function (res) {
  67. console.log("tem-complete")
  68. }
  69. });
  70. };
  71. }

另外有一个问题是 在微信吊起支付,支付完成后点击完成才会发送模板消息 这一点问了很多人 不知道怎么解决 ,如果有方案欢饮沟通。



易优小程序(企业版)+灵活api+前后代码开源 码云仓库:starfork
本文地址:https://www.eyoucms.com/wxmini/doc/course/18050.html 复制链接 如需定制请联系易优客服咨询:800182392 点击咨询
QQ在线咨询