微信公众号实现会员卡领取功能

1、会员卡的领取也需要js-sdk接口(可以参考获取微信公众号获取用户的地理位置信息)(借鉴网址:http://gaoboy.com/article/25.html)

2、 比获取用户地理位置信息多了一个是需要单独获取签名包,签名方式也和获取用户地理位置的不同(这里再说一下获取签名包的方式)

获取js-sdk签名包:

1、当前的url、时间戳、随机字符串、jsapiticket进行组合

//调用js-sdk的签名包 public function getSignPackage() { $jsapiTicket = $this->getJsApiTicket(); // 注意 URL 一定要动态获取,不能 hardcode.(获取当前网页的url) $protocol = (!empty($_SERVER['HTTPS']) && $_SERVER['HTTPS'] !== 'off' || $_SERVER['SERVER_PORT'] == 443) ? "https://" : "http://"; $url = "$protocol$_SERVER[HTTP_HOST]$_SERVER[REQUEST_URI]"; //时间戳 $timestamp = time(); //随机字符串获取 $nonceStr = $this->createNonceStr(); // 这里参数的顺序要按照 key 值 ASCII 码升序排序 $string = "jsapi_ticket=$jsapiTicket&noncestr=$nonceStr&timestamp=$timestamp&url=$url"; //生成字符串是用来签名用的 $signature = sha1($string); $signPackage = array( "appId" => $this->appid, "nonceStr" => $nonceStr, "timestamp" => $timestamp, "url" => $url, "signature" => $signature, "rawString" => $string ); return $signPackage; }

获取会员卡签名包:

//使用会员卡领取的签名包 public function getHuiYuanSignPackage() { $apiTicket = $this->getApiTicket(); // 注意 URL 一定要动态获取,不能 hardcode.(获取当前网页的url) $protocol = (!empty($_SERVER['HTTPS']) && $_SERVER['HTTPS'] !== 'off' || $_SERVER['SERVER_PORT'] == 443) ? "https://" : "http://"; $url = "$protocol$_SERVER[HTTP_HOST]$_SERVER[REQUEST_URI]"; //时间戳 $timestamp = time(); //随机字符串获取 // $nonceStr = $this->createNonceStr(); // 这里参数的顺序要按照 key 值 ASCII 码升序排序 $string = $timestamp.$apiTicket."pVYA_t3RCVF_yhNcO6QCeAmb-1UI"; //生成字符串是用来签名用的 $signature = sha1($string); $signPackage = array( "timestamp" => $timestamp, "signature" => $signature, ); return $signPackage; }

详细代码说明:

HTML页面:

//引入微信js文件 <script src="http://res.wx.qq.com/open/js/jweixin-1.0.0.js"></script> <script type="text/JavaScript"> //配置信息验证接口(填写的js-sdk获取的签名包的参数) wx.config({ debug: false, appId: '<?PHP echo $signPackage["appId"];?>', timestamp: '<?php echo $signPackage["timestamp"];?>', nonceStr: '<?php echo $signPackage["nonceStr"];?>', signature: '<?php echo $signPackage["signature"];?>', jsApiList: [ // 所有要调用的 API 都要加到这个列表中 'addCard' ] }); wx.ready(function(){ //添加卡券 document.querySelector('#addCard').onclick = function () { wx.addCard({ cardList: [ { cardId: "",//微信公众号内创建的会员卡的id cardExt: '{"timestamp":"<?php echo $huiyuanPackage['timestamp'] ?>","signature":"<?php echo $huiyuanPackage['signature'] ?>"}'//会员卡的签名包 } ], //成功之后的回调的函数(通过回调函数该表数据库是否领取会员卡的状态) success: function (res) { $.ajax({ url: '__CONTROLLER__/editHuiYuan', type: 'post', dataType: 'json', data: {is_LingQu: '1',user_id:"<?php echo $user['user_id'] ?>"}, success:function(){ $("#addCard").html("我的会员卡"); } }) } }); }; }); </script>

控制器中的代码:

类库:http://www.jb51.net/article/115732.htm

public function index(){ $user_id = session('user_id'); if($user_id){ $jssdk = new \Home\Model\WechatModel(); $signPackage = $jssdk->GetSignPackage();//获取js-sdk签名包 $huiyuanPackage = $jssdk->getHuiYuanSignPackage();获取会员卡签名包 //获取用户信息 $user = M('user')->where(array('user_id' => $user_id))->find(); //产品收藏数量统计 $goods_count = M('goods_shoucang')->where(array('user_id' => $user_id))->count(); //门店收藏数量统计 $shop_count = M('shop_shoucang')->where(array('user_id' => $user_id))->count(); }else{ //判断该用户是否存在 $model = new \Home\Model\WechatModel(); $openid_accesstoken = $model->openId(); $rst = M('user')->where(array('user_openid' => $openid_accesstoken['openid']))->find(); if($rst){ session('openid',$openid_accesstoken['openid']); session('user_id', $rst['user_id']); $jssdk = new \Home\Model\WechatModel(); $signPackage = $jssdk->GetSignPackage(); $huiyuanPackage = $jssdk->getHuiYuanSignPackage(); //获取用户信息 $user = M('user')->where(array('user_id' => $rst['user_id']))->find(); //产品收藏数量统计 $goods_count = M('goods_shoucang')->where(array('user_id' => $rst['user_id']))->count(); //门店收藏数量统计 $shop_count = M('shop_shoucang')->where(array('user_id' => $rst['user_id']))->count(); }else{ $userInfo = $model->getOpenId($openid_accesstoken['openid'],$openid_accesstoken['access_token']); $data = array( 'user_img' => $userInfo['headimgurl'], 'user_openid' => $userInfo['openid'], 'user_name' => filter($userInfo['nickname']), 'user_register_time' => time(), 'city' => $userInfo['province'].'-'.$userInfo['city'], ); $id = M('user')->add($data); session('openid', $userInfo['openid']); session('user_id',$id); $jssdk = new \Home\Model\WechatModel(); $signPackage = $jssdk->GetSignPackage(); $huiyuanPackage = $jssdk->getHuiYuanSignPackage(); //获取用户信息 $user = M('user')->where(array('user_id' => $id))->find(); //产品收藏数量统计 $goods_count = M('goods_shoucang')->where(array('user_id' => $id))->count(); //门店收藏数量统计 $shop_count = M('shop_shoucang')->where(array('user_id' => $id))->count(); } } $this->assign('signPackage', $signPackage); $this->assign('huiyuanPackage', $huiyuanPackage); $this->assign('user', $user); $this->assign('shop_count', $shop_count); $this->assign('goods_count', $goods_count); $this->display(); }

以上所述是小编给大家介绍的微信公众号实现会员卡领取功能,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对脚本之家网站的支持!

时间: 2024-09-12 18:05:57

微信公众号实现会员卡领取功能的相关文章

微信公众号默默测试评论功能,博客重生!

微信公众号默默测试评论功能,博客重生! 时间:2014-12-19 11:18 来源:百度百家 作者:魏武挥 摘要 : 如果将来微信公号是这样一种评论机制,运营能力的强调,将大幅超过对原创能力的强调. 这事空穴来风,有端倪可循. 一个叫"骑行西藏"的公众账号底下,已经出现了这个模块.这个账号据称是微信团队员工所为,过去经常会在这个账号下看到微信日后会推出的功能(比如阅读量这个功能骑行西藏就是首个测试号). 评论区会推出当无可疑.但这里依然个问题,就是评论的显示,以何机制运作? 第一个做

使用YII2框架实现微信公众号中表单提交功能

刚接触微信,要做一个在手机上的表单提交功能. 需求有这些: 只能在数据库中存在的手机号看到表单. 表单可以重复提交. 第一次进入表单需要验证 分享出去的页面,别人进入后也需要验证. 因为每个手机在同一个公众号当中的openid是唯一性的.所以在手机查看这个表单页面的时候,就将这个openid存到数据库中,方便下次提交可以验证. 下面是我的代码.使用的是YII2框架. Controller //获得回调函数 public function actionCallback($code,$state){

微信公众号如何申请原创保护功能?微信公众号的原创保护功能怎么设置

微信公众号如何申请原创保护功能 以前就听说可以申请原创保护功能,不过得发邮件申请,当朝也不知道怎么弄,就没弄.其实,我的这个公众号有没有原创保护,或其他的功能都无所谓,因为我已经习惯了.昨天我的公众号有一条信息,公众平台邀请我申请原创功能   看到消息提醒后便点击开通,显示原创保护未开通,而且也介绍了申请条件是发布的文章坚持原创,具有原创声明,评论,页面模板等功能   下面是原创申请开通协议,我同意打上勾,点击同意就行     然后填写所在行业,职位,个人介绍等信息,然后点击提交     这时候

微信公众号留言置顶功能上线

从3月7日起,陆续有网友发现微信公众号文章底部的留言区最靠前一条留言的用户ID后面出现了一个"置顶"的标签,如下图所示.现在有原创功能的公众号都有留言置顶功能了,在留言管理戳进某篇文章,然后在精选留言那里.这意味着在公众号付费订阅功能到来?通过评论引起读者付费读完全文的欲望?公众号留言置顶功能可以解锁哪些运营姿势呢? 1.置顶留言引导点赞,提高公众号的点赞数.点赞数据的提升有助于提高一些第三方机构对公众号的评分指数(比如新榜指数.清博指数)从而提升榜单排名.这种方式又有两种,一种是置顶

微信公众号开启文章评论功能 但是结果实在太逗啦!

前段时间,微信公众平台大幅降低了企业号认证门槛,如今又开启了部分公众账号的评论功能.据了解,该功能目前仍在内测,仅限部分公众号体验,具体上线时间未知.但可以确定的是,该功能上线之后,必然大火.目前,公众号向用户推送文章之后,仅显示阅读数和点赞,但用户无法进行评论,只能通过发送消息才能反馈.该功能添加之后,可增加用户的互动和粘性.据悉,如骑行西藏.广州日报.企鹅智酷等公众号已经参与评论功能的内测,用户点击该账号的最新文章,即可看到显示在文章最下方的评论区.点击写评论按钮,页面跳转到评论发表框,并以

微信公众号审核期间哪些功能无法使用?

  1.审核期间,微信公众帐号无法申请认证; 2.审核期间,群发消息功能.高级功能无法使用; 3.审核期间,他人无法通过"搜索公众帐号"无法搜索到微信公众帐号.

微信公众号重开外链功能

前不久,微信公众平台进行了改版,近200处改动中,最引人注意的是公众号重新允许在图文消息中加入跳转链接. 此次微信公众平台改版,针对开通了微信支付的公众号,允许在图文消息中加入跳转链接.观察人士称,公众平台改版后电商气息渐浓.易观智库分析师李欣然告诉记者,微信早期的公众平台曾经是开放外链的,但由于一些用户利用外链进行"钓鱼",微信在去年下半年取消了该功能,但这也限制了微信公众平台的流量转化能力.李欣然分析,服务号可以直接在图文消息中增加服务或商品的链接,对增加微信平台上电商的流量有明显

微信公众号与百度轻应用

问题描述 目前手头上已经开发完一个完整的微信公众号,具备一些功能.现在用户想在百度直达号上也展现一样的功能百度直达号的开通条件是必须有轻应用.所谓轻应用就是一种无需下载.即搜即用的全功能App.想咨询下有没有人做过类似的案例,能否将百度公众号项目代码直接接入百度,生成一个轻应用供百度直达号使用

微信公众号的8条运营法则

 随着移动互联网的越来越不可缺少,微信公众号也成为了企业营销和服务的标配,但很多企业也就是开通了公众号,却对没有在公众号的运营花太多的心思,完全达不到预期目标. 近日,微信发布公告又一次升级调整了微信公众平台规则,所有服务号的群发次数已经从原来的每月1次变为了每月4次.另外还对已通过微信认证的服务号开放高级群发接口,开发者可以通过高级群发接口设计更灵活的群发策略.企业公众号这个机会也可以更好利用了. 我们简单总结一下微信运营的基本法则,可以帮助企业更好的利用好微信这个好工具. 1.适应客户的不同