php微信开发之微信卡券

最近有个项目用到了微信卡券,中间也踩了不少坑,现在完成了后记录下来,希望能帮助到大家,让大家踩少一点坑。
首先是获取Access_token,申请公众号后会获得appid和secret,根据这两个参数调用接口获得,首先先写一个post函数,这个后面调接口时都会用到:

    function http_post($url,$data) {
    //$url为接口url,$data为传入接口的参数
        $ch = curl_init();
        curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
        curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE);
        curl_setopt ($ch, CURLOPT_SAFE_UPLOAD, FALSE);
        curl_setopt($ch,CURLOPT_URL,$url);
        curl_setopt($ch,CURLOPT_HEADER,1);
        curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);
        curl_setopt($ch,CURLOPT_POST,1);
        curl_setopt($ch,CURLOPT_POSTFIELDS,$data);
        $resp = curl_exec($ch);
        curl_close($ch);
        return $resp;
    }

下面是调用获取Access_token接口函数:

    //获得token(只需要传入appid和secret就会返回Access_token)
    function getAccessToken($appid,$secret) {
        $url = "https://api.weixin.qq.com/cgi-bin/token";
        $data = "grant_type=client_credential" . "&appid=" . urlencode($appid) . "&secret=" . urlencode($secret);
        // echo $data;
        $resp = $this->http_post($url,$data);        
        //截取token
        $token=strstr($resp,"\":\"" ); 

        $token=trim($token,"\":\"" );
        $token=strstr($token,"\",\"",true);
        return $token;
    }

获取Access_token后就可以进行微信卡券的正式开发了,官方文档上面有创建卡券、投放卡券和核销卡券等等,其实都基本是调用接口而已,原理都是一样,只要url和传入参数正确了就会返回正确数据,所以下面也只说最常用的创建卡券。
首先是上传logo图片,这里要注意的是,logo图片格式有规定而且尺寸必须是300*300

//上传logo
    $url = "https://api.weixin.qq.com/cgi-bin/media/uploadimg?access_token=" . urlencode($access_token);
    $file = array("buffer"=>'@'.$target);  //$target即为logo图片路径  
    $logo = $this->httppost($url,$file);
    $logourl = json_decode($logo,true);    

获得logo后,下面就可以创建卡券了,下面就拿创建优惠券作例子,传入的参数在文档上都可以看到,哪些代表什么参数或者什么参数是必须的这里不作解释了,大家到文档上浏览一下就一目了然了,格式就像下面这样:

$createFile = '{
                "card": {
                    "card_type": "GENERAL_COUPON",
                    "general_coupon": {
                        "base_info": {
                            "logo_url": "'.$logourl['url'].'",
                            "brand_name": "'.$_POST['salersman_name'].'",
                            "code_type": "CODE_TYPE_ONLY_QRCODE",
                            "title": "'.$_POST['offerName'].'",
                            "sub_title": "'.$_POST['title'].'",
                            "color": "'.$_POST['offerColor'].'",
                            "notice": "'.$_POST['offerNotice'].'",
                            "service_phone": "'.$_POST['brandphone'].'",
                            "description": "'.$_POST['description'].'",
                            "date_info": {"type": 1, "begin_timestamp":'.$_POST['start_time'].', "end_timestamp":'.$_POST['end_time'].'},
                            "sku": {
                                "quantity":'.$_POST['number'].'
                            },
                            "use_limit":'.$_POST['checknumber'].',
                            "get_limit":'.$_POST['getnumber'].'
                        },
                        "default_detail":"'.$_POST['offer'].'"
                    }

                }
        }';

大家也可以先构成数组,然后再用json_encode()将数组转化成json数据,下面就可以调用接口创建了,先通过上面的参数获取卡券cardid

//获取card_id             
$card = $this->httppost($urlC,$createFile);
$cardId = json_decode($card,true);

然后再用cardid获取卡券领取信息(包括二维码和code码)

//获取二维码ticket
        $urlT = "https://api.weixin.qq.com/card/qrcode/create?access_token=" . urlencode($access_token);
        $fileT = '{
        "action_name": "QR_CARD", 
        "action_info": {
        "card": {
        "card_id": "'.$cardId['card_id'].'" 
                }
            }
        }';             
            $ticket = $this->httppost($urlT,$fileT);
            $ticket = json_decode($ticket,true);

到这步后,$ticket数组里面的show_qrcode_url元素就是创建的卡券的领取二维码,用微信扫一下就可以进入卡券领取页面了。到这里,卡券已经成功创建并可以领取,其他的有关微信卡券的操作都是像上面一样调用接口,原理一样;大家看一下文档调用接口所需的url和传入参数分别是什么,按要求传进去后调用接口就基本没什么问题了。好了,希望以上可以为大家开发微信卡券过程中减少点阻力。

猜你喜欢

转载自blog.csdn.net/weixin_42824337/article/details/81784438
今日推荐