zoukankan      html  css  js  c++  java
  • 微擎系统卡券领取

    下面是模板页面单击领取卡券的,加了一个参数outer_str,这样领取返回时就多了一个参数outer_str(这里返回没有下滑线了),可以作为场景的来源参照,nimei_str那个不用的也可以

    {php echo register_jssdk(false);}
    <script>
        function jumpCardUrl(){
            // alert("{$cardArry['openid']}");
            // alert("{$cardArry['timestamp']}");
            // alert("{$cardArry['nonceStr']}");
            // alert("{$cardArry['signature']}");
            // alert("{$cardArry['cardId']}");
         wx.addCard({
    
        cardList: [
             {
                cardId: '{$cardArry['cardId']}',
    
               cardExt: '{"code": "", "openid": "{$cardArry['openid']}", "timestamp": "{$cardArry['timestamp']}","nonce_str":"{$cardArry['nonceStr']}", "signature":"{$cardArry['signature']}","outer_str":"{$outerstr}","nimei_str":"rw_22_33"}'
               
            }
    
        ], // 需要添加的卡券列表
         success: function (res) {
            }
    
         }); 
        }
    
    </script>

     php页面  卡券场景来源变量 就不说了根据实际情况查询   $cardinfo,$openid分别是卡券cardid和用户openid,用户openid不正确好像也可以的

    $cardArry = getCard($cardinfo,$openid);
    function getCard($card_id,$openid){
    
         global $_W,$_GPC;
    
         //获取access_token
    
            load()->classs('weixin.account');
    
            load()->func('communication');
    
            $access_token = WeAccount::token();
            $ticket=getApiTicket($access_token);
         //获得ticket后将参数拼成字符串进行sha1加密
            $now = time();
    
            $timestamp = $now;
    
            $nonceStr = createNonceStr();
    
            $card_id = $card_id;
    
            $openid = $openid;
    
            $arr = array($card_id,$ticket,$nonceStr,$openid,$timestamp);//组装参数
    
            asort($arr, SORT_STRING);
    
            $sortString = "";
    
             foreach($arr as $temp){
    
                $sortString = $sortString.$temp;
    
             }
    
            $signature = sha1($sortString);
    
         $cardArry = array(
    
            'code' =>"",
    
            'openid' => $openid,
    
            'timestamp' => $now,
    
            'signature' => $signature,
    
            'cardId' => $card_id,
    
            'ticket' => $ticket,
    
            'nonceStr' => $nonceStr,
    
         );
    
        return $cardArry;
    
            
    
      
    
      }
    
     function createNonceStr($length = 16) {
    
            $chars = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
    
            $str = "";
    
            for ($i = 0; $i < $length; $i++) {
    
                $str.= substr($chars, mt_rand(0, strlen($chars) - 1) , 1);
    
            }
    
            return $str;
    
        }
    
    function getCardTicket($app_id){
    
            global $_W,$_GPC;
    
            //获取access_token
    
            load()->classs('weixin.account');
    
            load()->func('communication');
    
            $access_token = WeAccount::token();
    
            $api_ticket = getApiTicket($access_token);
    
            $card_id ="";
    
            $card_type = "";
    
            $location_id = "";
    
            //获得ticket后将参数拼成字符串进行sha1加密
    
            $now = time();
    
            $timestamp = $now;
    
            $nonceStr = createNonceStr(8);
    
            $arr = array($api_ticket,$location_id,$app_id,$nonceStr,$card_id,$timestamp,$card_type);//组装参数
    
            asort($arr, SORT_STRING);
    
            $sortString = "";
    
             foreach($arr as $temp){
    
                $sortString = $sortString.$temp;
    
             }
    
            $signature = sha1($sortString);
    
            
    
             $cardArry = array(
    
                
    
                'timestamp' => $now,
    
                'signature' => $signature,
    
                'nonceStr' => $nonceStr,
    
             );
    
            return $cardArry;
    
                
    
          
    
          }
     function getApiTicket($access_token){
    
            global $_W, $_GPC;
    
            $w = $_W['uniacid'];
    
            $cookiename = "wx{$w}a{$w}pi{$w}ti{$w}ck{$w}et";
    
            $apiticket = $_COOKIE[$cookiename];
    
            if (empty($apiticket)){
    
                $url = "https://api.weixin.qq.com/cgi-bin/ticket/getticket?access_token={$access_token}&type=wx_card";
    
                load()->func('communication');
    
                $res = ihttp_get($url);
    
                $res = json_decode($res['content'],true);
    
                if (!empty($res['ticket'])){
    
                    setcookie($cookiename,$res['ticket'],time()+$res['expires_in']);
    
                    $apiticket = $res['ticket'];
    
                }else{
    
                    message('获取api_ticket失败:'.$res['errmsg']);
    
                }
    
            }
    
            return $apiticket;
    
        }
    

      领取成功,核销   返回信息都是在api.php里面

    有一个在卡券页面点击第一个使用的核销不是在api里面,在其他文件

  • 相关阅读:
    configbody
    add log to ldap
    registerComponent announceExist
    ldap
    6485 commands
    Titled Motor Entry
    ldap pkg
    remove rpm pkg
    创建自定义验证控件,以验证多行文本框中内容长度为例
    ASP.NET利用CustomValidator的ClientValidationFunction与OnServerValidate来double check资料输入的正确性
  • 原文地址:https://www.cnblogs.com/weiyiyong/p/7267410.html
Copyright © 2011-2022 走看看