ホームページ  >  記事  >  バックエンド開発  >  WeChat アプレットと PHP はテンプレート メッセージ通知を送信します

WeChat アプレットと PHP はテンプレート メッセージ通知を送信します

不言
不言オリジナル
2018-06-02 09:19:072225ブラウズ

この記事では、テンプレート メッセージ通知を送信するための WeChat アプレットと PHP を主に紹介します。これには、必要な友達が参照できるように共有します

まず、テンプレート メッセージ インターフェイスを記述する必要があります。バックエンドサーバー上で。 【追加!現在、WeChat アプレット テンプレート メッセージは によってのみトリガーされ、私に送信できます。 】2018.4.9に変更: 1回のフォーム送信で発行できるアイテムは1つで、複数の送信で送信されたアイテムの数は独立しており、互いに影響しません。

アプレット

のテンプレート情報に従って、対応する値がバックグラウンドに出力されるほか、通知者のopenidであるformidやprepay_idも出力されます。 .wxml ファイル
formid または prepay_id でなければならないため、以前追加するのを忘れていました。したがって、取得をトリガーするボタンが必要です。手動トリガーを必要としない方法があれば、お気軽に教えてください。 ! ! !私はこの質問について長い間考えてきました! !

  <form bindsubmit="tiXian" report-submit=&#39;true&#39;>
    <button class=&#39;btn&#39; form-type="submit" disabled="{{lock}}">提现</button>
  </form>

.js ファイル

  /**
   * 触发微信提醒
   */
  remindMessage: function (formid){
    var that = this
    wx.request({
      method: &#39;POST&#39;,
      url: &#39;https://www.**********************_message.php&#39;,//后台接口
      data: {
        o_id: that.data.allthing.openid,
        u_name: that.data.allthing.userInfo.nickName,
        money: that.data.money,
        formid: formid
      },
      header: {
        &#39;content-type&#39;: &#39;application/x-www-form-urlencoded&#39;
      },
      success: function (res) {
        console.log(res.data)
      },
    })
  }
バックエンドインターフェイス

*****.php

<?php
include_once(&#39;/o**********************c/function.php&#39;);
include_once(&#39;/o*************************on/config.php&#39;);
$ms = new Mysqls();
$o_id = intval($_POST[&#39;o_id&#39;]);
$u_name = addslashes($_POST[&#39;u_name&#39;]);
$money  = floatval($_POST[&#39;money&#39;]);
$formid = addslashes($_POST[&#39;formid&#39;]);
$dated = date("Y-m-d H:i:s");
$to_place = "微信钱包";
$remark = "余额约 0-5 个工作日返回您的充值账户,请等待余额到账通知";
$template_id = "zAW*******************4DY";      //模板id
$access_token=M::Get(&#39;q******_&#39;.$appid);//需要使用token。放在缓存中!!
if(!$access_token){
        $url_access_token = &#39;https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=&#39;.$appid.&#39;&secret=&#39;.$secret;
        $json_access_token = sendCmd($url_access_token,array());
        //access_token加缓存
        $arr_access_token = json_decode($json_access_token,true);
        $access_token = $arr_access_token[&#39;access_token&#39;];
        M::Set(&#39;qub*************_&#39;.$appid,$access_token,3600);
}
if(!$o_id || !$u_name || !$money || !$formid){
	$arr = array(
		&#39;ret&#39;=>0,
		&#39;msg&#39;=>&#39;参数错误!&#39;
	);
	echo json_encode($arr);
	die();
}
if(!empty($access_token)) {
	$url = &#39;https://api.weixin.qq.com/cgi-bin/message/wxopen/template/send?access_token=&#39;.$access_token;  //此处变量插入字符串不能使用{}!!!  
 	$data = &#39;{
		  "touser":"&#39;.$o_id.&#39;",  
		  "template_id":"&#39;.$template_id.&#39;",
		  "form_id":"&#39;.$formid.&#39;",   
		  "data": {
			  "keyword1": {
				  "value":"&#39;.$u_name.&#39;"
			  }, 
			  "keyword2": {
				  "value":"&#39;.$money.&#39;" 
			  }, 
			  "keyword3": {
				  "value":"&#39;.$to_place.&#39;"
			  } , 
			  "keyword4": {
				  "value":"&#39;.$dated.&#39;" 
			  } ,
			   "keyword5": {
				  "value":"&#39;.$remark.&#39;" 
			  } 
		  }
		}&#39;;
    $result = sendCmd($url,$data);
	$arr = array(&#39;ret&#39;=>1,
		&#39;msg&#39;=>&#39;success&#39;,
		&#39;data&#39;=>array(&#39;result&#39;=>$result),	
		);
} else {
	$arr = array(&#39;ret&#39;=>0,&#39;msg&#39;=>&#39;ACCESS TOKEN为空!&#39;);
}
	echo json_encode($arr);


/**
 * 发起请求
 * @param  string $url  请求地址
 * @param  string $data 请求数据包
 * @return   string      请求返回数据
 */
function sendCmd($url,$data)
{
    $curl = curl_init(); // 启动一个CURL会话      
    curl_setopt($curl, CURLOPT_URL, $url); // 要访问的地址                  
    curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, 0); // 对认证证书来源的检测    
    curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, 2); // 从证书中检查SSL加密算法是否存在      
    curl_setopt($curl, CURLOPT_HTTPHEADER, array(&#39;Expect:&#39;)); //解决数据包大不能提交     
    curl_setopt($curl, CURLOPT_FOLLOWLOCATION, 1); // 使用自动跳转      
    curl_setopt($curl, CURLOPT_AUTOREFERER, 1); // 自动设置Referer      
    curl_setopt($curl, CURLOPT_POST, 1); // 发送一个常规的Post请求      
    curl_setopt($curl, CURLOPT_POSTFIELDS, $data); // Post提交的数据包      
    curl_setopt($curl, CURLOPT_TIMEOUT, 30); // 设置超时限制防止死循     
    curl_setopt($curl, CURLOPT_HEADER, 0); // 显示返回的Header区域内容      
    curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); // 获取的信息以文件流的形式返回 
           
    $tmpInfo = curl_exec($curl); // 执行操作      
    if (curl_errno($curl)) {      
       echo &#39;Errno&#39;.curl_error($curl);      
    }      
    curl_close($curl); // 关键CURL会话      
    return $tmpInfo; // 返回数据      
}
?>

関連する推奨事項: PHP でメールを送信するための詳細な知識ポイント

PHP Send テキストメッセージや電子メールなど、多くの実用的な PHP コードを共有します

以上がWeChat アプレットと PHP はテンプレート メッセージ通知を送信しますの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。