php企业微信发送文本消息,PHP微信模板消息发送——小程序

本文详细阐述了小程序与公众号模板消息的区别,重点讲解了小程序form_id的获取与使用限制,以及如何解决A与B之间的模板消息传递问题。作者提供了实例代码,展示了如何在小程序后台发送模板消息的过程和策略调整。
摘要由CSDN通过智能技术生成

前言

总的来说,小程序发送模板消息和公众号发送模板消息区别不是很大

2: 小程序发送模板消息:

- 获取access_token并存储以备再次使用

- 小程序端获取发送必要的formID(submit提交事件)或 prepay_id(支付事件)

- 拼装模板消息数据

- 调用接口发送模板消息

吐槽一下

微信小程序的机制是这样的

formid 只能通过移动端进行获取(手机,iPad);

每获取到一个 formid **只能使用一次**(一个formid只能发送一条模板消息);

发起form表单提交事件 ==> 获取 form_id 和 发起人openid ==> php后台处理拼装模板消息 ==> 发送给发起人;

上边说的意思是:A获取的formid只能用来给自己发送模板消息,不能用来给B发送模板消息;

解决方案

在A触发表单提交事件时,将本次获取到的formid保存到A提交的表单内容中,反正就是与A本次提交的数据绑定死(死结,除了自己,谁都不给用),在B触发对A的某事件时,需要发送模板消息了,这时把A之前绑定的formid拿出来用,还是给A自己用

for example:

A提交了请假申请(通过表单提交申请内容),B审核,审核完成后,把审核结果通过模板消息发送给A

终于到代码了

我不是前端妹子,小程序的代码就不放了,自己找找吧

namespace Jykj\\Template\\Weixin;

/**

* 小程序模板消息发送

* 微信规定:不能直接在小程序调用,只能在后台发起

*/

class WxSendTemplate {

private $token ='''';

private $appid = ''******************'';

private $appsecret = ''********************************'';

private $templateid = ''*******************************************'';

private $SEND_TEMPLATE_URL = ''https://api.weixin.qq.com/cgi-bin/message/wxopen/template/send?access_token=##TOKEN##'';

private $GET_ACCESSTOKEN_URL = ''https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=##APPID##&secret=##APPSECRET##'';

/**

* 构造函数,获取access_token

* @Author wanghongbin

* @Email wanghongbin@ngoos.org

* @DateTime 2018-07-06

*/

public function __construct() {

$this->token = $this->getAccessToken();

}

/**

* 发送模板消息

* @Author wanghongbin

* @Email wanghongbin@ngoos.org

* @DateTime 2018-07-06

* @param array

* @return [type]

*/

public function sendTemplateData($data = array()) {

$options = array(

''http'' => array(

''method'' => ''POST'',

''header'' => ''Content-type:application/json'',//header 需要设置为 JSON

''content'' => $this->getTemplatePostData($data),

''timeout'' => 60//超时时间

)

);

$url = str_replace("##TOKEN##",$this->token,$this->SEND_TEMPLATE_URL);

$context = stream_context_create($options);

$result = file_get_contents($url, false, $context);

return $result;

}

/**

* 获取模板消息

* @Author wanghongbin

* @Email wanghongbin@ngoos.org

* @DateTime 2018-07-06

* @param array

* @return [type]

*/

private function getTemplatePostData($data=array()){

$post_data = array (

"touser" => $data[''openid''],//用户的 openID,可用过 wx.getUserInfo 获取

"template_id" => $this->templateid,//小程序后台申请到的模板编号

"page" => $data[''pageuri''],//点击模板消息后跳转到的页面,可以传递参数

"form_id" => $data[''formid''],//第一步里获取到的 formID

"data" => array(

''keyword1'' => array( "value" => $data[''status''],"color"=>"green"),

''keyword2'' => array( "value" => $data[''shopername'']),

''keyword3'' => array( "value" => $data[''telephone'']),

''keyword4'' => array( "value" => $data[''ordertime''])

),

"emphasis_keyword" => "keyword1.DATA"

);

//将数组编码为 JSON

return \\json_encode($post_data, true);

}

/**

* 获取AccessToken

* @Author wanghongbin

* @Email wanghongbin@ngoos.org

* @DateTime 2018-07-06

* @return [type]

*/

private function getAccessToken () {

$url = str_replace("##APPID##",$this->appid,$this->GET_ACCESSTOKEN_URL);

$url = str_replace("##APPSECRET##",$this->appsecret,$url);

$html = file_get_contents($url);

$output = json_decode($html, true);

$access_token = $output[''access_token''];

return $access_token;

}

/**

* 获取所有的模板

* @Author wanghongbin

* @Email wanghongbin@ngoos.org

* @DateTime 2018-07-06

* @return [type]

*/

public function get_all_private_template()

{

$url = "https://api.weixin.qq.com/cgi-bin/wxopen/template/list?access_token=".$this->token;

$res = file_get_contents($url);

return json_decode($res,true);

}

}

效果图

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值