搜索
首页微信小程序微信开发分享微信公众号实现会员卡领取的功能

这篇文章主要介绍了微信公众号实现会员卡领取功能的相关资料,需要的朋友可以参考下

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: &#39;<?PHP echo $signPackage["appId"];?>&#39;,
 timestamp: &#39;<?php echo $signPackage["timestamp"];?>&#39;,
 nonceStr: &#39;<?php echo $signPackage["nonceStr"];?>&#39;,
 signature: &#39;<?php echo $signPackage["signature"];?>&#39;,
 jsApiList: [
  // 所有要调用的 API 都要加到这个列表中
  &#39;addCard&#39;
  ]
   });
wx.ready(function(){
        //添加卡券
    document.querySelector(&#39;#addCard&#39;).onclick = function () {
     wx.addCard({
      cardList: [
      {
       cardId: "",//微信公众号内创建的会员卡的id
       cardExt: &#39;{"timestamp":"<?php echo $huiyuanPackage[&#39;timestamp&#39;] ?>","signature":"<?php echo $huiyuanPackage[&#39;signature&#39;] ?>"}&#39;//会员卡的签名包
      }
      ],
     //成功之后的回调的函数(通过回调函数该表数据库是否领取会员卡的状态)
      success: function (res) {
      $.ajax({
      url: &#39;__CONTROLLER__/editHuiYuan&#39;,
      type: &#39;post&#39;,
      dataType: &#39;json&#39;,
      data: {is_LingQu: &#39;1&#39;,user_id:"<?php echo $user[&#39;user_id&#39;] ?>"},
      success:function(){
      $("#addCard").html("我的会员卡");
      }
      })
      }
     });
    };
   });
</script>

控制器中的代码:

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

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

以上是分享微信公众号实现会员卡领取的功能的详细内容。更多信息请关注PHP中文网其他相关文章!

声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
微信文件多久过期微信文件多久过期Nov 21, 2022 pm 02:12 PM

微信文件的过期时间需要根据情况来判断:1、如果发送的文件没有打开过,则在72小时以后微信系统会自动清理掉,即过了三天文件就会过期;2、如果已经查看了微信文件,但是并没有下载(当然已经下载的文件也是一样的),那么文件是可以保留180天的,在这180天以内随时都可以去下载。

微信拉黑和删除有什么区别微信拉黑和删除有什么区别Oct 18, 2022 am 11:29 AM

区别:1、拉黑后对话框从主页消失,但是聊天记录还在;删除后聊天记录全部消失不见了。2、拉黑后还能发给他,但是收不到他的消息;删除后不能发信息了。3、拉黑后双方都不可见彼此的朋友圈;删除对方以后,你看不到对方的朋友圈了,对方是否能看到你的,取决于设置(允许陌生人查看十张照片)与否,如果设置则可以看到朋友圈。

支持微信付款的购物平台有哪些支持微信付款的购物平台有哪些Nov 02, 2022 pm 02:44 PM

支持微信付款的购物平台有:1、京东,是中国的综合网络零售商;2、唯品会,是一家在线销售品牌折扣商品的互联网公司;3、拼多多,是社交新电商领导者,更懂消费者的购物平台;4、京喜,是京东旗下生活消费商城;5、蘑菇街,一个电子商务网站;6、聚美优品,是一家以销售化妆品为主的时尚购物网站;7、微店,是一个云推广电子商务平台;8、考拉海购,是一个跨境海淘业务为主的会员电商平台。

微信怎么查看ip地址微信怎么查看ip地址May 31, 2023 am 09:16 AM

微信查看ip地址的方法:1、登录电脑版微信,右键点击屏幕下方的任务栏,点击“任务管理器”;2、弹出任务管理器时,点击左下角的“详细信息”;3、任务管理器进入“性能”选项,点击“打开资源监视器”;4、选择“网络”,勾选微信进程“Wechat.exe”;5、点击下面的“TCP连接”即可监视微信网络IP相关情况,发送消息得到回复就会显示他人的IP地址。

微信可以绑别人的银行卡号么微信可以绑别人的银行卡号么Mar 14, 2023 pm 04:53 PM

可以。未经过实名认证的微信号,可以绑定他人的银行卡,但在绑定过程中需要提供银行卡的开户人姓名、开户行地址、开户时预留的联系方式及银行卡支付密码;已通过实名认证的微信号,无法绑定他人银行卡,只能添加使用自己身份证办理的银行卡。

一个身份证只能绑定一个微信吗一个身份证只能绑定一个微信吗Mar 02, 2023 pm 01:50 PM

不是,一个身份证能绑定5个微信。按照微信当前规定,一个身份证可以实名认证5个微信号;如果已经实名认证了5个微信账号,但是还想要继续实名,就要把已经实名认证的一些不用的微信号清除以后,才可以再实名认证新的微信号。

闲鱼支持微信支付吗闲鱼支持微信支付吗Nov 07, 2022 pm 03:31 PM

闲鱼是不支持微信支付的,仅支持使用支付宝进行付款;闲鱼是阿里巴巴旗下闲置交易平台App客户端,会员只要使用淘宝或支付宝账户登录,无需经过复杂的开店流程,即可达成包括一键转卖个人淘宝账号中“已买到宝贝”、自主手机拍照上传二手闲置物品、以及在线交易等诸多功能。

微信赞赏码和收款码的区别是什么微信赞赏码和收款码的区别是什么Oct 31, 2022 pm 03:18 PM

区别:1、赞赏码是用于别人给自己打赏的,收取小费等小金额的赞赏给予,而收款码是一般的收款行为,可以进行大额收费的二维码;2、收款码是随时会变的,如果不是商家收款码,每次打开都会变,但是赞赏码不同,赞赏码是不会变的;3、赞赏码只能进行小额的首款,而收款码将可以大额首款。

See all articles

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

AI Hentai Generator

AI Hentai Generator

免费生成ai无尽的。

热门文章

R.E.P.O.能量晶体解释及其做什么(黄色晶体)
2 周前By尊渡假赌尊渡假赌尊渡假赌
仓库:如何复兴队友
4 周前By尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island冒险:如何获得巨型种子
4 周前By尊渡假赌尊渡假赌尊渡假赌

热工具

MinGW - 适用于 Windows 的极简 GNU

MinGW - 适用于 Windows 的极简 GNU

这个项目正在迁移到osdn.net/projects/mingw的过程中,你可以继续在那里关注我们。MinGW:GNU编译器集合(GCC)的本地Windows移植版本,可自由分发的导入库和用于构建本地Windows应用程序的头文件;包括对MSVC运行时的扩展,以支持C99功能。MinGW的所有软件都可以在64位Windows平台上运行。

适用于 Eclipse 的 SAP NetWeaver 服务器适配器

适用于 Eclipse 的 SAP NetWeaver 服务器适配器

将Eclipse与SAP NetWeaver应用服务器集成。

螳螂BT

螳螂BT

Mantis是一个易于部署的基于Web的缺陷跟踪工具,用于帮助产品缺陷跟踪。它需要PHP、MySQL和一个Web服务器。请查看我们的演示和托管服务。

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)