WeChatプラットフォームは、アクティブメッセージとパッシブメッセージに分けられます。アクティブメッセージは、メッセージをWeChatプラットフォームにアクティブにプッシュする本番サーバーであり、パッシブメッセージは、WeChatプラットフォームが本番サーバーにメッセージをプッシュするユーザーの動作です。
- プロアクティブなメッセージには以下が必要です。
- 1.本番サーバーのIPをIPホワイトリストに追加します
- 2.次に、appidとsecretに従ってトークンを取得します
- 3.アクティブにプッシュするたびにトークン&をURLに配置します
- パッシブメッセージ:
- 1.公式アカウント構成で本番サーバーのURLパスを入力します
- 2.トークンバインディングを取得します
1.メッセージテンプレート
-
1. WeChatメッセージテンプレートAPIインターフェイスリンクを取得します(Jukeng、WeChat公式アカウントドキュメントのメッセージテンプレートAPIリンクに問題があります。正しいものは、WeChat公式アカウント、メッセージテンプレート設定、およびインターフェイスドキュメントにあります)
-
2.メッセージテンプレートIDを取得します
-
3.メッセージを送信する必要があるユーザーのopenidを取得します(公式アカウントに従ってください)
-
4.メッセージテンプレートデータを作成します
-
5.成功の兆候:
- (1)返されたjsonデータを受信します。error= 0、
- (2)WeChatプラットフォームは積極的にxmlをサーバーにプッシュします
2.注意が必要な事項
-
1. WeChatテンプレートAPIは、メッセージテンプレートインターフェイスドキュメントの公式アカウントであるメッセージテンプレートプラグインです。
-
2.メッセージテンプレートの構文:
- (1)データ形式の構造、json形式
- (2)郵送
-
3.ユーザーのopenidは、公式アカウントappidの下にある必要があります。つまり、公式アカウントをフォローしているユーザーである必要があります。
-
4. Jukeng、Jukeng、およびメッセージテンプレートのopenidは、WeChatのopenidだけでなく、ユーザーに対応する各公式アカウントのtofakeidです。
-
WeChatパブリックプラットフォームのいわゆる「openid」は、次の2つのタイプに分けられます。
- [最初のタイプのopenid]はインタラクティブxmlから取得されます:
<![CDATA [fromUser]]>
各ユーザーはWeChatパブリックプラットフォームごとに一意です。つまり、同じユーザーが異なるWeChatパブリックプラットフォームを持っています。[最初のタイプのopenid openid]は異なります;私
はそれを偽物と呼ぶ傾向があり、許可なくページを取得します。 - [2番目のタイプのopenid]は、WeChatが提供するOAuth2.0インターフェース(高度なインターフェースは認証されたサービス番号である必要があり
ます)を使用することです。これは、ユーザーごとに一意です。つまり、同じユーザーの[2番目のタイプのopenid]です。はすべて異なるWeChatパブリックプラットフォーム上にあります同じです。私は
個人的にそれを本当のopenidと呼び、認証が必要なページを取得する傾向があります。
最初のタイプのパブリックプラットフォーム開発者向けドキュメントは明確に述べられていませんが、ドキュメントを読んでいる限り推測するのは難しくありません。
使用される2番目のタイプのインターフェイスの詳細は次のとおりです。パブリックプラットフォーム開発者向けドキュメント-基本的なユーザーを取得するためのWebページ認証情報。
- [最初のタイプのopenid]はインタラクティブxmlから取得されます:
-
ps:詳細なスクリプトコード:
/**
* @param $open_id 用户openid
* @param $template_id 消息模板id
* @param $miniprogram 消息模板跳转的appid,pagepath页面链接,可根据自我需求删改
* @param $appid 公众号appid
* @param $num 申请编号,可根据自我需求删改
* 发送消息模板
* @return array
*/
public function SendMsg($open_id,$template_id,$miniprogram,$num){
try {
$token = $this->get_token();
} catch (\Exception $e) {
$e->getMessage();
}
//发送模板消息url
$send_url="https://api.weixin.qq.com/cgi-bin/message/template/send?access_token={$token}";
$date=date("Y-m-d H:i:s",time());
$data=[
"touser"=>$open_id,
"template_id"=>$template_id,
'miniprogram'=>$miniprogram,
"data"=>[
"first"=>[
"value"=>"吸易商城提醒您,您的消杀片已到期,请及时更换",
],
"keyword1"=>[
"value"=>"商品更换提醒",
],
"keyword2"=>[
"value"=>$num,
],
"keyword3"=>[
"value"=>$date,
],
"keyword4"=>[
"value"=>'待处理',
],
"remark"=>[
"value"=>"详情信息,请戳详情了解",
],
],
];
//$postData = http_build_query($postData); //做一层过滤
$json_data=json_encode($data);
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $send_url);
curl_setopt($ch, CURLOPT_HEADER, 0); //设置header
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1 );
curl_setopt($ch, CURLOPT_POST, 1 );
curl_setopt($ch, CURLOPT_POSTFIELDS, $json_data );
$request=curl_exec ($ch);
curl_close($ch);
$request=json_decode($request,true);
if ($request['errcode']==0){
return [
'code'=>ApiCode::CODE_SUCCESS,
'msg'=>"消息模板发送成功",
];
}
return [
'code'=>ApiCode::CODE_ERROR,
'msg'=>$request,
];
}