• thinkphp微信开发之jssdk拉取卡券及卡券的核销


    public function getCardParam(){
            $arr = array();
            $Weixin = new WeixinControllerBaseController();
            $arr = array( 'app_id' => C('WEIXIN_CONFIG.appId'),   'api_ticket' => $Weixin->jssdk->getCardTicket()  ,  'timestamp' => time(),   'nonceStr' =>createNoncestr() ,'card_type' => 'CASH' );
            $arr1  = array_values($arr);   
            sort( $arr1, SORT_STRING );
            $arr['card_sign'] =  sha1(  implode($arr1) ) ;
            echo json_encode($arr) ;
            // $this->assign('cardArr',$arr);
        }
    
    public function getCardCode(){
            $Weixin = new WeixinControllerBaseController();
            $access_token =  $Weixin->WechatAuth->getAccessToken();
    
             $url4 = 'https://api.weixin.qq.com/card/code/decrypt?access_token='.$access_token;   //卡券code
             $s = json_encode(array('encrypt_code'=>$_POST['encrypt_code']));
                    $r = $this->http_post_data($url4,$s);
                    echo $r[1];
        }
    
        public function getCardDetail(){
            
                // if(!IS_POST){
                //     $this->error('非法请求');
                // }
                $Weixin = new WeixinControllerBaseController();
                $access_token =  $Weixin->WechatAuth->getAccessToken();
                $url4 = 'https://api.weixin.qq.com/card/get?access_token='.$access_token;   //批量卡券详情
                $s = json_encode(array('card_id'=>$_POST['card_id']));
                $r = $this->http_post_data($url4,$s);
                echo $r[1];
                // p(json_decode($r[1],true));
        }
    
        function http_post_data($url, $data_string) {  
      
                $ch = curl_init();  
                curl_setopt($ch, CURLOPT_POST, 1);  
                curl_setopt($ch, CURLOPT_URL, $url);  
                curl_setopt($ch, CURLOPT_POSTFIELDS, $data_string);  
                curl_setopt($ch, CURLOPT_HTTPHEADER, array(  
                    'Content-Type: application/json; charset=utf-8',  
                    'Content-Length: ' . strlen($data_string))  
                );  
                ob_start();  
                curl_exec($ch);  
                $return_content = ob_get_contents();  
                ob_end_clean();  
          
                $return_code = curl_getinfo($ch, CURLINFO_HTTP_CODE);  
                curl_close($ch);
                return array($return_code, $return_content);  
            }  
    
    
                /**
         *  作用:产生随机字符串,不长于32位
         */
     function createNoncestr( $length = 32 ) 
        {
            $chars = "abcdefghijklmnopqrstuvwxyz0123456789";  
            $str ="";
            for ( $i = 0; $i < $length; $i++ )  {  
                $str.= substr($chars, mt_rand(0, strlen($chars)-1), 1);  
            }  
            return $str;
        }

    html代码

     <script src="http://res.wx.qq.com/open/js/jweixin-1.0.0.js"></script>
     <div class="coupon">
                    <a id="chooseCard" href="javascript:void(0);">
                        <!--选择优惠券--><img src="__IMG__/you_01.jpg" /></a>
                    <!-- <div id="aaaaa"><a href="javascript:location.reload()">shuaxin</a></div> -->
      </div>
      <script src="http://libs.baidu.com/jquery/1.9.0/jquery.js"></script>
    
       <script>
    
      var getCardParamUrl = "{:U('Card/getCardParm')}";
      var getCardDetailUrl = "{:U('Card/getCardDetail')}";
      var getCardCodeUrl = "{:U('Card/getCardCode')}";
      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: [
            'chooseCard'
        ]
      });
    
    
    
      var readyFunc = function onBridgeReady() {
            $("#chooseCard").click(function() {
                $.ajax({
                    type: 'get',
                    url: getCardParmUrl,
                    dataType: 'json',
                    success: function(param) {
                        // alert(JSON.stringify(param));
                        var cardArr = param;
                        wx.chooseCard({
                             cardType:  cardArr.card_type, // 卡券类型
                            // cardId: '', // 卡券Id
                            timestamp: cardArr.timestamp , // 卡券签名时间戳
                            nonceStr: cardArr.nonceStr, // 卡券签名随机串
                            signType: 'SHA1', // 签名方式,默认'SHA1'
                            cardSign:cardArr.card_sign , // 卡券签名,详见附录4
                            // 'location_id' : "{$cardArr.location_id}"
                            success : function(res){
    
                                var choose_card_info = JSON.parse(res.cardList);
                                // alert(choose_card_info);
                                if (choose_card_info[0].card_id) {
                                    coupon_used_id = choose_card_info[0].card_id;
                                    // alert(coupon_used_id);
                                    var coupon_encrypt = choose_card_info[0].encrypt_code;
                                    $.ajax({
                                        type: 'post',
                                        url: getCardDetailUrl,
                                        data: {
                                            card_id: choose_card_info[0].card_id
                                        },
                                        dataType: 'json',
                                        success: function(da) {
                                            // alert(JSON.stringify(da));
                                            if (da.errmsg == 'ok') {
                                                if (goods_total_money < (da.card.cash.least_cost) / 100) {
                                                    alert('对不起,您买的商品不满' + (da.card.cash.least_cost) / 100 + '元,请选择其他优惠券');
                                                } else {
                                                    coupon_used_name = da.card.cash.base_info.title;
                                                    // alert(coupon_used_name);
                                                    coupon_used_id = da.card.cash.base_info.id;
                                                    coupon_total_money = (da.card.cash.reduce_cost) / 100;
                                                    $("#coupon_total_money").text(coupon_total_money.toFixed(2));
                                                    getPayMoney();
                                                }
                                            }
                                        }
                                    });
    
                                    $.ajax({        //取得卡的真正唯一序列号
                                        type: 'post',
                                        url: getCardCodeUrl,
                                        data: {
                                            encrypt_code: coupon_encrypt
                                        },
                                        dataType: 'json',
                                        success: function(data1) {
                                            if (data1.errmsg == 'ok') {
                                                coupon_code = data1.code;
                                                $("input[name=coupon_code]").val(coupon_code);
    
                                            }
    
                                        }
                                    })
    
    
    
                                }
                            }
                        });
    
                    }
                })
    
    
    
    
            })
        }
        if (typeof WeixinJSBridge === 'undefined') {
    
            document.addEventListener('WeixinJSBridgeReady', readyFunc, false);
        } else {
    
            readyFunc();
        }
    
    
    </script>
  • 相关阅读:
    Install OpenCV 3.0 and Python 2.7+ on OSX
    Install OpenCV 3.0 and Python 2.7+ on Ubuntu
    完美商业计划书全攻略
    No module named zope.interface error的解决
    nginx flv点播服务器搭建
    关于Apple开发者的D-U-N-S Number
    小而美的Promise库——promiz源码浅析
    为什么JavaScript里面0.1+0.2 === 0.3是false
    JavaScript取出字符串中括号里的内容
    js数据结构与算法--递归
  • 原文地址:https://www.cnblogs.com/dmm888/p/4390841.html
Copyright © 2020-2023  润新知