微信小程序之订阅消息之PHP。

一、准备

需要在小程序的订阅消息中申请订阅消息的模板,
在这里插入图片描述
模板申请完成后(申请模板和模板排序简单,省略),后面用到的只有模板id。

二、发起

模板id申请好了,怎么发起呢?
先看下官方发起文档
然后在对照这看下示例:
注意:发起模板消息,一次最多只可以发起三个。(这里我介绍 “支付成功通知” ,原理一样)
为了后续有部分页面的使用,把所有的模板id写在了APP.JS方便调取
APP.JS:

  App({
    //全局变量
    globalData: {
      pushReservationTmplIds: {
        zhifu_success: '对应的模板id',//支付成功通知
        order_confirm: '对应的模板id',
        jine_tx: '对应的模板id'
      }
    },

发起页面:(注意!2.8.2 版本开始,用户发生点击行为或者发起支付回调后,才可以调起订阅消息界面)

<text wx:if="{{shoppingAddAct=='order'}}" bindtap="onShoppingAdd" data-act='ok' class='anniu'>立即购买</text>
onShoppingAddCallback: function (e) {
var that = this;
var shoppingAddAct = event.currentTarget.dataset.act;
	if(shoppingAddAct== "ok"){
	var tmplIds = app.globalData.pushReservationTmplIds;//获取订阅模板id
      if (wx.requestSubscribeMessage) {//订阅消息有版本限制,先判断下版本
        wx.requestSubscribeMessage({
          tmplIds: [tmplIds.zhifu_success],//绑定模板id
          success(res) {//成功时
            console.log(111)
          },
          fail(res) {//失败时
            console.log(0)
          },
        });
	 } else {
        wx.showToast({
          title: '请更新您微信版本,来获取订阅消息功能',
          icon: 'none'
        });
	}
	//这里要重点说下,发起订阅消息的页面必须是支付的前一个页面。比如说A跳转到B,B是支付页面,那么发起要写在A页面。
wx.navigateTo({//跳转页面,这个是发起支付的页面
  url: '../../shopping/shopping-order/shopping-order?id=' + goUrls
  //这里微信返回后端的文件自己定义,处理数据的PHP文件名为shop-order.php
})	
}

三、PHP处理数据
在处理之前呢,需要做模板消息发送前的准备,
整体的思路就是,当前的模板消息,通过官方给的链接反馈到微信,和支付接口差不多
!!创建订阅消息数组

$wxapp_template = array(
	'open' => true,//ture是开启,false关闭
	'template_id' => array(
		'zhifu_success' => "对应的模板id",  //【支付成功提醒】[支付成功](订单编号,下单时间,支付时间,订单金额,订单说明)
		'order_confirm' => "对应的模板id",  //【订单确认收货提醒】[订单确认收货](订单编号,商户名称,订单状态,确认收货时间)
		'jine_tx' => "对应的模板id",       //【提现审核通知】[账户余额提现申请结果](提现金额,提现时间、提现状态、备注)
		'aaabbbccc' => ""    //占位置的[没用]
	)
);

!!创建发起链接函数
链接是官方链接

//curl发送post数据
function curl_post($url , $data=array()){
	$ch = curl_init();
	curl_setopt($ch, CURLOPT_URL, $url);
	curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
	curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
	curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE);
	curl_setopt($ch, CURLOPT_POST, 1);// POST数据	
	curl_setopt($ch, CURLOPT_POSTFIELDS, $data);// 把post的变量加上
	$output = curl_exec($ch);
	curl_close($ch);
	return $output;
}


//发送订阅消息(一次性)
function send_template($template){
	$url= "https://api.weixin.qq.com/cgi-bin/message/subscribe/send?access_token=" . access_token() . "";
	$res = curl_post($url,urldecode($template));
	return $res;
}

access_token值获取参考微信小程序文档

!!数据处理
当支付成功后执行下面的代码

//整合模板数据
if(formip()!="127.0.0.1" && $wxapp_template["open"] && $wxapp_template["template_id"]["zhifu_success"] && $rm["WXopenid"]){
//判断当前订阅消息是否开启,支付成功通知的模板id是否为空,当前微信用户的openid是否为空。
	$adminContent = "可在我的-我的订单中查看订单详情!";
	$pageUrl = "pages/member/member";//这个是指定模板消息的进入页面
	$template = array(
		'touser'=>''.$rm["WXopenid"].'',    //用户openid
		'template_id'=>''.$wxapp_template["template_id"]["zhifu_success"].'',  //在公众号下配置的模板id
		'page'=>''.$pageUrl.'',  //点击模板消息会跳转的链接
		'data'=>array(
		//下面的character_string1,date5,date7,amount2。不是唯一的。我会在最后截图说明
		'character_string1'=>array('value'=>urlencode(''.$rsDG["danhao"].'')),   //订单号
		
		'date5'=>array('value'=>urlencode(''.$rsDG["adddate"].'')),   //下单时间
		'date7'=>array('value'=>urlencode(''.$formdate.'')),   //支付时间
		'amount2'=>array('value'=>urlencode(''.$ShopJine.'')),//订单金额
			)
	);
	//登记日志
	$logStr = "【支付成功提醒-提交数据】【".$rm["name"]."】:\r\n".json_encode($template, true);
	log_result($logStr,"log_wxmp",date("Ymd")."_template.txt");
	//发送模板信息
	$template = json_encode($template);
	$res = send_template($template);		
	//登记日志
	$logStr = "【支付成功提醒-反馈结果】【".$rm["name"]."】:\r\n".json_encode($res, true);
	log_result($logStr,"log_wxmp",date("Ymd")."_template.txt");
	//更新数据,记录已发送
	$formIdNum = $rsDG["formIdNum"] + 1;
	$sqlEdit="update shop_order set formIdNum='{$formIdNum}' where id='{$rsDG["id"]}'";
	$resultEdit = mysqli_query($conn,$sqlEdit);
}

在这里插入图片描述
上面说的character_string1,date5,date7,amount2不唯一,是在模板详情中查看
在这里插入图片描述
还有一个,在使用开发者工具调试时,注意调试库的基础版本哦,要不然是不会发起的。
在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值