小程序模板消息报错41028。解决方法

小程序模板消息报错41028

最近在写小程序支付回调的时候,想要去触发小程序模板消息,然而过程却很不顺利。一切参数正确的情况下,尽然返回报错41028

41028报错解释

官方:form_id不正确,或者过期

form_id是什么

wxml文件里面的form表单提交后产生的ID,我这里使用的是支付回调所以这个解释比较的次要。 如果在支付环境里面,form_id就换成你的prepay_id当然如果你已经做过微信支付了那你应该就知道这个东西

模板消息

模板消息数据组装

官方文档:https://developers.weixin.qq....


    $data = [
        'touser'=>"$input[openid]",//你本人的openid,即触发者的openid,也就是谁支付的用谁的openid
        'template_id'=>"VXmrDVo3wM5vD9FdiI9wBty8dBW3X5Id-GrlaS48FDg",// 模板id
        'form_id'=>"xxxxx",//这里我填写的是prepay_id
        'data'=>array(
            'keyword1'=>array(
                'value'=>''
            ),
            'keyword2'=>array(
                'value'=>''
            ),
            'keyword3'=>array(
                'value'=>date('Y/m/d H:i',time())
            ),
            'keyword4'=>array(
                'value'=>''
            )
        ),
        'emphasis_keyword'=>'keyword2.DATA'
    ];

    $data = json_encode($data,JSON_UNESCAPED_UNICODE);//这里的数据就算封装好了,就可以直接post。

当然代码其次,很简单,基本会没有什么错。特别注意的是 如果是支付回调的话form_id一定是prepay_id,格式基本上是wx090917302323478124d14b090925007374这种,不用像支付里面的那样,不用加prepay_id=XXXXXX

问题解决

其实看到这里一般都知道了,这个其实很简单,但是我遇到的报错41028问题,这个问题拖了我一天。那怎么去解决

问题解决必备的几个要素
  1. 确认当前小程序已经发布,而不是在开发版里面做着模板消息。
  2. prepay_id确定只是一串字符,而不是prepay_id=xxxxxx这种格式
  3. openid 一定是触发者的openid,而不是说你想给谁发就给谁发,这点不像微信的模板消息
  4. 前期测试,keyword请尽量保持手写状态,免得程序有误,数据调用出错

终极备选方案

如果综上所述都还不行,直接去小程序社区,抛上你的form_id与openid。相信我,半天解决。

原文地址:https://segmentfault.com/a/1190000015965003

原文地址:https://www.cnblogs.com/lalalagq/p/9975245.html

时间: 2024-11-10 04:48:02

小程序模板消息报错41028。解决方法的相关文章

微信小程序模板消息群发解决思路

基于微信的通知渠道,微信为开发者提供了可以高效触达用户的模板消息能力,以便实现服务的闭环并提供更佳的体验.(微信6.5.2及以上版本支持模板功能.低于该版本将无法收到模板消息.) 模板推送位置:服务通知(点击查看详情还能跳转到下发消息的小程序的指定页面) 模板下发条件:用户本人在微信体系内与页面有交互行为后触发 微信小程序模板消息使用说明(官方文档):https://mp.weixin.qq.com/debug/wxadoc/dev/api/notice.html 为了防止对模板消息的滥用,带来

【第一个项目】MySQL第二天早上第一次连接超时报错,解决方法com.mysql.jdbc.exceptions.jdbc4.CommunicationsException:

MySQL第二天早上第一次连接超时报错,解决方法com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications link failure com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications link failure Last packet sent to the server was 0 ms ago 最近碰到一个mysql5

使用Spring Mvc 转发 带着模板 父页面 之解决方法 decorators.xml

周末了,周一布置的任务还没完成,卡在了页面跳转上,接手了一个半截的项目要进行开发,之前没有人给培训,全靠自己爬代码,所以进度比较慢,而且加上之前没有用过 Spring Mvc 开发项目,所以有点吃力,不过接触了Spring Mvc近一个月的时间感觉 开发速度确实比 SSH快不少,不用一个一个的Bean去配置,直接扫描就OK了,可就是这样还是有些地方容易搞上一天也没搞多少进度,这不,被我新写的一个 Controller 的转发搞晕了,我本来要实现一个列表的分页查询,哪里想到点下一页的时候,除了我要

ArcGIS API for Silverlight 调用WebService出现跨域访问报错的解决方法

原文:ArcGIS API for Silverlight 调用WebService出现跨域访问报错的解决方法 群里好几个朋友都提到过这样的问题,说他们在Silverlight中调用了WebService方法,总报这个错误,贴图如下: 解决办法: 1.确定你的Silverlight项目及承载Silverlight的Web程序根目录下都包含2个跨域文件,分别是crossdomain.xml和clientaccesspolicy.xml: crossdomain.xml文件,如下: <?xml ve

Python安装xlrd和xlwt的步骤以及使用报错的解决方法

一.安装xlrd和xlwt功能模块步骤 1.使用python -V查看python的版本号,并查看python安装环境,是否安装成功: 2.可以通过官网(python官网:https://pypi.python.org/pypi)或者其他手段获取到功能模块的安装程序包: 3.将程序包解压,并放在python->Lib文件下   4.在cmd命令窗口中,进入E:\Python\Python36\Lib目录下,分别进入xlrd和xlwt的目录下,执行python setup.py install命令

svn“Previous operation has not finished; run &#39;cleanup&#39; if it was interrupted“报错的解决方法

今天碰到了个郁闷的问题,svn执行clean up命令时报错“Previous operation has not finished; run 'cleanup' if it was interrupted”.无论你到那个父层次的目录执行“clean up “,都是报一样的错.执行cleanup时候,提示要cleanup.看来是进入死循环了. 可能是频繁做了一些改名,文件打开的时候更新或者提交操作,导致svn罢工了.这个也该算是svn的bug吧.类似的情况,其实之前也碰到过.之前都是图省事,把整

Chrome浏览器扩展程序强制停用的解决方法

http://blog.csdn.net/pipisorry/article/details/37728839 一.加载正在开发的扩展程序 这里以加载一个已有的Chrome扩展程序为例: 把已有的扩展程序(.crx文件)后缀改为.zip,就可以把它解压缩到某个目录,比如将lingoes_chrome_2.1.crx改成lingoes_chrome_2.1.zip并解压到D:\Downloads\Editor\lingoes_chrome_2.1.zip 打开谷歌浏览器 - 工具 - 扩展程序 -

Linux安装ElasticSearch启动报错的解决方法

Linux安装ElasticSearch后,ElasticSearch是不能用root用户启动的,以root用户启动会报错Refer to the log for complete error details,出现这种情况该如何解决呢?下面小编就为大家带来Linux安装ElasticSearch启动报错的解决方法,一起去看看吧 今天就出现的异常问题专门解决一下.你安装好ElasticSearch以后,在启动的时候需要注意的问题是,ElasticSearch是不能用root用户启动的(这是根据el

wepy开发小程序eslint报错error &#39;getApp&#39; is not defined no-undef

wepy开发小程序使用getApp().globalData保存全局数据很方便,但是会在控制台看到很多报错:"error 'getApp' is not defined no-undef",这是eslint报错. 解决办法:在.eslintrc.js文件中加入   globals: { getApp: true } wepy开发小程序eslint报错error 'getApp' is not defined no-undef 原文地址:https://www.cnblogs.com/s