微信小程序 調用模板消息提示 data format error hint


在使用微信小程序調用模板消息時,感覺自己的數據格式應該沒錯,但一直提示 data format error hint (數據格式錯誤)

然后仔細看了下 官方手冊 ,找到 請求示例

{
  "touser": "OPENID",
  "template_id": "TEMPLATE_ID",
  "page": "index",
  "form_id": "FORMID",
  "data": {
    "keyword1": {
      "value": "339208499"
    },
    "keyword2": {
      "value": "2015年01月05日 12:30"
    },
    "keyword3": {
      "value": "騰訊微信總部"
    },
    "keyword4": {
      "value": "廣州市海珠區新港中路397號"
    }
  },
  "emphasis_keyword": "keyword1.DATA"
}

再看看自己寫的請求數據跟代碼發現了幾個問題

一、代碼提交格式

官方給的示例中,提交的代碼格式是 json 格式的,而我卻用了 http_build_query 函數格式了數據,所以提交 post 前要把代碼格式改成 json 類型

$data = [
  'touser'        => $openId,
  'template_id'   => $tempId,
  'page'          => '/pages/index/index?param=XXX',
  'form_id'       => $formId,
  'data'          => [
    'keyword1'  => $voucher['items']['name'],
    'keyword2'  => $this->code,
    'keyword3'  => 1,
    'keyword4'  => date('Y年m月d日 H:i:s', $now),
  ]
];

$data = json_encode($data, JSON_UNESCAPED_UNICODE); // json_encode 第二個參數需要 php5.4 以后的版本

轉完格式后再次提交數據,發現小程序還是報錯 data format error hint,打印出上面的 $data 后比較官方示例,發現了第二個問題

二、傳輸數據字段中的 data 是二維數組

官方的示例節選

{
  "data": {
    "keyword1": {
      "value": "339208499"
    }
}

data 下的 keyword1 字段並不是直接復制,而是一個一維數組,所以修改數據

$data = [
  'touser'        => $openId,
  'template_id'   => $tempId,
  'page'          => '/pages/index/index?param=XXX',
  'form_id'       => $formId,
  'data'          => [
    'keyword1'  => ['value' => $voucher['items']['name']],
    'keyword2'  => ['value' => $this->code],
    'keyword3'  => ['value' => 1],
    'keyword4'  => ['value' => date('Y年m月d日 H:i:s', $now)],
  ]
];

$data = json_encode($data, JSON_UNESCAPED_UNICODE);

這樣格式提交的參數就可以正常通過消息模板驗證了


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM