提交表单后发模板消息

想要让用户提交表单后发送一条模板消息给用户,首先需要在小程序表单标签里加上report-submit参数,如:

  1. <form bindsubmit="formSubmit" report-submit="true">
  2. <view class="btn-area">
  3. <button formType="submit">发个模板消息</button>
  4. </view>
  5. </form>

然后在表单提交后端服务器时带上参数formId和openid

  1. formSubmit: function (e) {
  2. var formId = e.detail.formId
  3. wx.request({
  4. url: app.url + 'weiapp/Api/send_message&PHPSESSID=' + wx.getStorageSync('PHPSESSID'),
  5. data: { formId: formId, openid: wx.getStorageSync('openid') },
  6. success: function (res) {
  7. // success
  8. console.log(res)
  9. }
  10. })
  11. },

最后在后端PHP服务器发起一个模板消息请求。其中模板ID参数(template_id)就是我们上一节消息模板配置里增加的模板ID,而data里的keyword参数个数需要与您配置的模板里的参数一一对应。

  1. function send_message() {
  2. // 发送模板消息给用户
  3. $openid = I ( 'openid' );
  4. $formId = I ( 'formId' );
  5. $url = 'https://api.weixin.qq.com/cgi-bin/message/wxopen/template/send?access_token=' . get_access_token ();
  6. $param ['touser'] = $openid;
  7. $param ['template_id'] = '-ekG5kJ-8x7OkTxd1shG-5-y90q8El5vj0DKVGwTZ9o';
  8. $param ['form_id'] = $formId;
  9. $param ['data'] = [
  10. 'keyword1' => [
  11. 'value' => '1706261498468955374',
  12. 'color' => '#173177'
  13. ],
  14. 'keyword2' => [
  15. 'value' => '1.00元',
  16. 'color' => '#173177'
  17. ],
  18. 'keyword3' => [
  19. 'value' => '2017-05-25 14:30',
  20. 'color' => '#173177'
  21. ],
  22. 'keyword4' => [
  23. 'value' => '梦云商城-服务购买',
  24. 'color' => '#173177'
  25. ],
  26. 'keyword5' => [
  27. 'value' => '已完成支付',
  28. 'color' => '#173177'
  29. ],
  30. 'keyword6' => [
  31. 'value' => '微信支付',
  32. 'color' => '#173177'
  33. ]
  34. ];
  35. $res = post_data ( $url, $param );
  36. echo json_url ( $res );
  37. }

小程序端发送模板消息请查看 /weiapp_demo/pages/message/message.js文件

注意:由于开发者工具里的formId只是一个模拟值,不正确的,因此在开发者工具里无法发起消息模板,必须要使用手机预览里只能正常