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

public function getCardParam(){
        $arr = array();
        $Weixin = new \Weixin\Controller\BaseController();
        $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 \Weixin\Controller\BaseController();
        $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 \Weixin\Controller\BaseController();
            $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>

 

posted @ 2015-04-03 18:38  明之暗夜  阅读(4008)  评论(0编辑  收藏  举报