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里面,在其他文件

  • 相关阅读:
    21.Merge Two Sorted Lists 、23. Merge k Sorted Lists
    34. Find First and Last Position of Element in Sorted Array
    leetcode 20. Valid Parentheses 、32. Longest Valid Parentheses 、301. Remove Invalid Parentheses
    31. Next Permutation
    17. Letter Combinations of a Phone Number
    android 常见分辨率(mdpi、hdpi 、xhdpi、xxhdpi )及屏幕适配注意事项
    oc 异常处理
    oc 类型判断
    oc Delegate
    oc 协议
  • 原文地址:https://www.cnblogs.com/weiyiyong/p/7267410.html
Copyright © 2011-2022 走看看