小程序开发模板消息的时候 出现 errcode: 41028, errmsg: "invalid form id hint:
我是使用的微信支付发送模板消息,提示的formid无效的
大家知道获取到的prepay id 还非常的诡异 他不是直接一个参数 而是还带了字符串 比如 prepay_id=wx2017xx 这样格式的
那传递到微信模板消息这里的formid上要怎么传值呢?
最后检验是需要去除掉prepay id 这个字符串的 然后传递过去就可以了
然后,还会有提示无效的,就是没有支付成功
这就是微信最克制的一点,必需支付成功了,才能给这个用户推送消息,而且还只能推送三次。超过三次就推送不了。
所以如果你确定你的prepayid 没有获取错误,还是提示form id无效,那就是你没支付,你可以支付一分钱,然后在支付成功后再发起模板消息推送,就没问题了。
步骤二:页面的 <form/> 组件,属性report-submit为true时,可以声明为需发模板消息,此时点击按钮提交表单可以获取formId,用于发送模板消息。或者当用户完成支付行为,可以获取prepay_id用于发送模板消息。
下发条件说明
*支付
当用户在小程序内完成过支付行为,可允许开发者向用户在7天内推送有限条数的模板消息(1次支付可下发3条,多次支付下发条数独立,互相不影响)
*提交表单
当用户在小程序内发生过提交表单行为且该表单声明为要发模板消息的,开发者需要向用户提供服务时,可允许开发者向用户在7天内推送有限条数的模板消息(1次提交表单可下发1条,多次提交下发条数独立,相互不影响)
你看上面这几点就是微信的克制,支付成功只能发送三次模板消息提醒,如果只是提交表单,则只能发送一次模板消息提醒。
后来在网上搜了下 发现其他同学也遇到类似这样的问题:
在开发小程序支付成功后,
发送模板消息过程中,
提交好多次数据,
微信都提示 form id invalid,
说我们的 form id 无效
于是不停的更换 form_id 的填写方式,
包括下面的都使用过,
form_id=”wx2017xxxxxx”
form_id=”prepay_id=wx2017xxxxxx”
prepay_id=”wx2017xxxxxx”
prepay_id=”prepay_id=wx2017xxxxxx”
最后还是发现使用
form_id=”wx2017xxxxxx”
模板消息能发送成功。
以上就是我在开发的时候遇到的一些坑
其他如果还有不明白的地方 可以加我微信 qiufeng2999
我们自己目前主要在开发小程序这块,以后技术上遇到问题,大家相互指教。
后续补充的: 有网友遇到的问题,也是提示无效的,让我在这里补充下的
嗯 也就是在调试里 生成的二维码 支付 是不行的
必需是真实环境 在小程序里 发起支付 然后发送消息才行