大家好啊!好久不见呐,最近可是经济寒冬啊,大家应该都受到影响了吧,甚至反反复复在想我们到底还要不要继续北漂?我们还要不要继续做程序员?这也是我每天在思考的问题,但是既然眼下没有更好的选择,那么我们除了在目前的工位上好好工作,还能做什么呢?当然可爱的你们做出任何选择,珊妹儿都会永远支持你们滴~ 感情磕儿咱就不多唠了,今天给大家点干货,哈哈 不谢不谢啊~
众所周知的拼多多,3亿用户拼出了名声,而且发现没拼多多都是两人团,这个玩法真的是抓到了人们从众心理、爱占便宜的心理,而且还容易满足人们的需求,当我们和别人拼购一件商品,这两个人会同时收到拼团成功的消息,我们的小程序实现了拼团功能,当然要做拼团成功后给拼团成员分别推送拼团成功的消息啦,接下来说重点啊!!!!!!
首先看一遍文档,必不可少,会发现有这么几个接口:
addTemplate 组合模板并添加至帐号下的个人模板库
deleteTemplate 删除帐号下的某个模板
getTemplateLibraryById 获取模板库某个模板标题下关键词库
getTemplateLibraryList 获取小程序模板库标题列表
getTemplateList 获取帐号下已存在的模板列表
sendTemplateMessage 发送模板消息
而我们的需求是拼团成功推送模板消息,那么我们可以在微信公众平台,也就是小程序的后台手动去生成我们想要的模板ID,因为我们的模板是固定的,当然大家如果有多种模板需求,可以把以上方法封装成一个类,需要的时候调用就可以了,现在我们拿到了模板ID,只需要使用发送模板消息的接口就OK了,代码如下(这是我封装的,代码有点丑请见谅!):
/**
* 发送模板消息
* @param $openid string 接收者(用户)的 openid
* @param $template_id string 所需下发的模板消息的id
* @param string $page string 点击模板卡片后的跳转页面
* @param $form_id string 表单提交场景下,为 submit 事件带上的 formId;支付场景下,为本次支付的 prepay_id
* @param string $data string 模板内容,不填则下发空模板
* @param string $emphasis_keyword 模板需要放大的关键词,不填则默认无放大
* @return mixed|string
*/
public function sendTemplateMessage($temarr){
$url = 'https://api.weixin.qq.com/cgi-bin/message/wxopen/template/send?access_token='.$this->authorizer_access_token;
$data = '{
"touser": "'.$temarr['openid'].'",
"template_id": "'.$temarr['template_id'].'",
"page": "'.$temarr['page'].'",
"form_id": "'.$temarr['prepay_id'].'",
"data": {
"keyword1": {
"value": "'.$temarr['info']['good_name'].'"
},
"keyword2": {
"value": "'.$temarr['info']['payment'].'元"
},
"keyword3": {
"value": "'.$temarr['nickname'].'"
}
},
"emphasis_keyword": ""
}';
$res = $this->httpRequest($url,$data);
return [$res,$data];
}
对了,参数form_id有两种具体可以看文档哈,我们这里使用微信支付生成签名返回的prepay_id,access_token是微信用户一开始进小程序获取到存入数据库的,httpRequest( )方法网上也一大把,算了还是给你们吧,帮人帮到底吧,代码如下:
public function httpRequest($url = '', $data = '')
{
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_TIMEOUT, 30);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE);
curl_setopt($ch, CURLOPT_HEADER, FALSE);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
if ($data) {
curl_setopt($ch, CURLOPT_POST, TRUE);
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
}
$res = curl_exec($ch);
if (!$res) {
$data['return_code'] = 'FAIL';
$data['return_msg'] = 'curl出错,错误码: ' . curl_errorno($ch) . '详情: ' . curl_error($ch);
} else {
$data = json_decode($res, true);
}
curl_close($ch);
return $data;
}
大家不用谢啊,嘿嘿~,封装的方法准备好了,我们就在支付成功的回调方法里不是要去更新订单吗,就在那里,对,就那里,因为开团的人就已经生成了订单,但是这两个人在同一个拼团活动里,我们通过这个活动id去查询这两个人的订单信息,然后拿到两个人的openid,prepay_id,和订单的一些信息传到我们封装的发送模板消息方法里,也就是我这里的$temarr数组里的值就是我们要发送的参数,这里要谨记,keyword序号,一定一定一定要按顺序写,从1开始,珊妹儿就在这里犯了错误,导致推送了空数据的模板 (-_-),好啦,重点都说完啦,大家有什么不清晰的地方欢迎留言啊,珊妹儿看到了就会回复滴,期待你们的打扰哈~~~