//////////////////////////////// 主入口 ////////////////////////////////
/**
* 站點統一入口
*/
public function actionIndex()
{
//驗證token
$access_token = $this->checkToken();
///////驗證token結束/////////////////////////////////////////////////////
//var_dump($access_token);
//上傳logo
//echo "</hr>"."上傳logo"."<br/>";
$storeLogo = $this->upLogo($access_token);
//var_dump($storeLogo);
/////////上傳logo結束/////////////////////////////////////////////
//上傳門店列表
//echo "<br/>"."門店信息jason"."<br/>";
$jsonStore = $this->upStoreList($access_token);
$storeList = $jsonStore["location_id_list"];//門店列表
//var_dump($storeList);
//獲取到門店id,拼裝成字符串
$storeSub = implode(',', $storeList);
//var_dump($storeSub);
//////上傳門店列表結束//////////////////////////////////////////////////////////////
//拉取門店信息
//echo "<br/>"."拉取門店"."<br/>";
$getStoreList = $this->getStoreList($access_token);
//var_dump($getStoreList);
//var_dump($jsonGetList);
/////////拉取門店信息結束////////////////////////////////////////////////////////////////////////
//獲取顏色列表
// echo "<br/>"."獲取顏色列表"."<br/>";
$colorList = $this->getColorList($access_token);
var_dump($colorList);
//var_dump($jsonColor);
/////////獲取顏色列表結束////////////////////////////////////////////////////////////////////////
//創建卡券信息
//echo "<br/>"."創建卡券信息"."<br/>";
$cardMeg = $this->createCardMeg($access_token, $storeLogo,$storeSub);
//var_dump($jsonCard);
$cardCode = $cardMeg["card_id"];//拿到cardCode
//echo $cardCode;
///////創建卡券信息結束//////////////////////////////////////////////////////////////////
////創建二維碼ticket
//echo "<br/>"."創建二維碼ticket"."<br/>";
$QRMeg = $this->getQRTicket($access_token, $cardCode);
//var_dump($QRMeg);
$ticket = $QRMeg["ticket"];
var_dump($ticket);
////創建二維碼ticket結束///////////////////////////////////////////////
//創建二維碼接口開始///////////////////////////////////////////////
//echo "<br/>"."創建卡卷二維碼"."<br/>";
$urlTicket = urlencode($ticket);
//二維碼URL
$url = "https://mp.weixin.qq.com/cgi-bin/showqrcode?ticket=".$urlTicket;
//$img = $this->curlGet($url);
//header( "Content-Type: image/jpeg" );
//輸出二維碼
//echo "<img src='$url'/>";
////創建二維碼接口結束/////////////////////////////////////////////////////////
//api_ticket緩存與更新開始/////////////////////////////////////////////////
//調用次數有限 使用yii緩存機制
$apiTicket = $this->getApiTicket($access_token);
//api_ticket緩存與更新結束/////////////////////////////////////////////////
//////添加到卡包(bathAddCard)JSAPI開始////文檔25頁////////////////////////////////////////////////
//////添加到卡包(bathAddCard)JSAPI結束////////////////////////////////////////////////////
//////卡券核銷開始////////////////////////////////////////////////////
$cardConsume = $this->cardConsume($access_token,$code,$cardId);
////卡券核銷結束////////////////////////////////////////////////////
//////拉起卡券列表(chooseCard)JSAPI開始///文檔30頁///////////////////////////////////////////////////////
///////////拉起卡券列表(chooseCard)JSAPI結束/////////////////////////////////////////////////////
//////////code 解碼接口 開始//34////////////////////////////////////////////////////
$cardDecode = $this->cardDecode($access_token,$encrypt_code);
////////////code 解碼接口end////////////////////////////////////////////////////
//////刪除卡券開始//////////////////////////////////////////////////////////
$cardDel = $this->ardDelete($access_token,$cardId);
///////刪除卡券結束/////////////////////////////////////////////////////////
/////////查詢code開始///36////////////////////////////////////////////////////
$codeQuery = $this->codeQuery($access_token,$code,$cardId);
/////////查詢code結束///////////////////////////////////////////////////////
/////////批量查詢卡列表開始///////////////////////////////////////////////////////
$cardBatchQuery = $this->cardBatchQuery($access_token);
/////////批量查詢卡列表結束///////////////////////////////////////////////////
/////////查詢卡券詳情開始///////////////////////////////////////////////////////
$cardDetialQuery = $this->cardDetialQuery($access_token,$cardId);
/////////查詢卡券詳情結束///////////////////////////////////////////////////
/////////更改code開始///47////////////////////////////////////////////////////
$codeChange = $this->codeChange($access_token);
/////////更改code結束///////////////////////////////////////////////////
/////////設置卡券失效接口開始//48///不可逆//////////////////////////////////////////////////
$cardFail = $this->cardFail($access_token);
/////////設置卡券失效接口結束///////////////////////////////////////////////////
/////////更改卡券信息接口開始///////////////////////////////////////////////////////
$cardUpdate = $this->cardUpdate($access_token);
/////////更改卡券信息接口結束///////////////////////////////////////////////////
/////////批量查詢卡列表開始///////////////////////////////////////////////////////
$cardUpdate = $this->cardStockUp($access_token);
/////////批量查詢卡列表結束///////////////////////////////////////////////////
/////////激活/綁定會員卡開始///////////////////////////////////////////////////////
$vipActBind = $this->vipActBind($access_token);
/////////激活/綁定會員卡結束////////////////////////////////////////////////
/////////會員卡交易開始///////////////////////////////////////////////////////
$vipCardExchange = $this->vipCardExchange($access_token);
/////////會員卡交易結束////////////////////////////////////////////////
////////////////////////////////////////////////////////////////
$data = array();
$this->render('card', $data);
}
////封裝函數開始/////////////////////////////////////////////////////////
/**
* 會員卡交易
*/
public function vipCardExchange($access_token){
$url = "https://api.weixin.qq.com/card/membercard/updateuser?access_token=$access_token";
$data = '{
"code": "12312313",
"card_id":"p1Pj9jr90_SQRaVqYI239Ka1erkI",
"record_bonus": "消費30元,獲得3積分",
"add_bonus": 3,
"add_balance": -3000
"record_balance": "購買焦糖瑪琪朵一杯,扣除金額30元。"
}';
$res = $this->curlPost($url, $data);
$vipCardExchange = json_decode($res, true);
return $vipCardExchange;
}
/**
* 激活/綁定會員卡
*/
public function vipActBind($access_token){
$url = "https://api.weixin.qq.com/card/membercard/activate?access_token=$access_token";
$data = '{
"init_bonus": 100,
"init_balance": 200,
"membership_number": "AAA00000001",
"code": "12312313",
"card_id": "xxxx_card_id"
}';
$res = $this->curlPost($url, $data);
$vipActBind = json_decode($res, true);
return $vipActBind;
}
/**
* 庫存修改接口
*/
public function cardStockUp($access_token){
$url = "https://api.weixin.qq.com/card/modifystock?access_token=$access_token";
$data = '{
"card_id": "xxxx_card_id",
"increase_stock_value": 1231231,
"reduce_stock_value": 1231231
}';
$res = $this->curlPost($url, $data);
$cardStockUp = json_decode($res, true);
return $cardStockUp;
}
/**
* 更改卡券信息接口
*/
public function cardUpdate($access_token){
$url = "https://api.weixin.qq.com/card/update?access_token=$access_token";
$data = '{
"card_id": "xxxxxxxxxxxxx",
"member_card": {
"base_info": {
"logo_url":"http:\/\/www.supadmin.cn\/uploads\/allimg\/120216\/1_120216214725_1.jpg",
"color": "Color010",
"notice": "使用時向服務員出示此券",
"service_phone": "020-88888888",
"description": "不可與其他優惠同享\n 如需團購券發票,請在消費時向商戶提出\n店內均可使用,僅限堂食\n 餐前不可打包,餐后未吃完,可打包\n 本團購券不限人數,建議2 人使用,超過建議人數須另收醬料費5 元/位\n 本單謝絕自帶酒水飲料"
"location_id_list" : [123, 12321, 345345]
},
"bonus_cleared": "aaaaaaaaaaaaaa",
"bonus_rules": "aaaaaaaaaaaaaa",
"prerogative": ""
}
}';
$res = $this->curlPost($url, $data);
$cardUpdate = json_decode($res, true);
return $cardUpdate;
}
/**
* 設置卡券失效接口
*/
public function cardFail($access_token){
$url = "https://api.weixin.qq.com/card/code/unavailable?access_token=$access_token";
$data = '{
"code": "12312313",
"card_id": "xxxx_card_id"
}';
$res = $this->curlPost($url, $data);
$cardFail = json_decode($res, true);
return $cardFail;
}
/**
* 更改code
*/
public function codeChange($access_token){
$url = "https://api.weixin.qq.com/card/code/update?access_token=$access_token";
$data = '{
"code": "12345678",
"card_id": "p1Pj9jr90_SQRaxxxxxxxx",
"new_code": "3495739475"
}';
$res = $this->curlPost($url, $data);
$codeChange = json_decode($res, true);
return $codeChange;
}
/**
* 查詢卡券詳情
*/
public function cardDetialQuery($access_token,$cardId){
$url = "https://api.weixin.qq.com/card/get?access_token=$access_token";
$data = '{
"card_id":"pFS7Fjg8kV1IdDz01r4SQwMkuCKc"
}';
$res = $this->curlPost($url, $data);
$cardDetialQuery = json_decode($res, true);
return $cardDetialQuery;
}
/**
* 批量查詢卡列表
*/
public function cardBatchQuery($access_token){
$url = "https://api.weixin.qq.com/card/batchget?access_token=$access_token";
$data = '{
"offset": 0, //偏移量,從0 開始,即offset: 5 是指從列表里的第六個開始讀取。
"count": 10 //需要查詢的卡片的數量(數量最大50)
}';
$res = $this->curlPost($url, $data);
$cardBatchQuery = json_decode($res, true);
return $cardBatchQuery;
}
/**
* 查詢code
*/
public function codeQuery($access_token,$code,$cardId){
$url = "https://api.weixin.qq.com/card/code/get?access_token=$access_token";
$data = '{ "code" : "110201201245", "card_id" : ""}';
$res = $this->curlPost($url, $data);
$codeQuery = json_decode($res, true);
return $codeQuery;
}
/**
* 刪除卡券
*/
public function cardDelete($access_token,$cardId){
$url = "https://api.weixin.qq.com/card/delete?access_token=$access_token";
$data = '{ "card_id" : "p1Pj9jr90_SQRaVqYI239Ka1erkI" }';
$res = $this->curlPost($url, $data);
$cardDelete = json_decode($res, true);
return $cardDelete;
}
/**
* code解碼
*/
public function cardDecode($access_token,$encrypt_code){
$url = "https://api.weixin.qq.com/card/code/decrypt?access_token=$access_token";
$data = '{"encrypt_code" : "XXIzTtMqCxwOaawoE91+VJdsFmv7b8g0VZIZkqf4GWA60Fzpc8ksZ/5ZZ0DVkXdE"}';
$res = $this->curlPost($url, $data);
$cardDecode = json_decode($res, true);
return $cardDecode;
}
/**
* 卡券核銷 post
*/
public function cardConsume($access_token,$code,$cardId){
$url = "https://api.weixin.qq.com/card/code/consume?access_token=$access_token";
$data = '{"cade" : "$code", "card_id" : "$cardId"}';
$res = $this->curlPost($url, $data);
$cardConsume = json_decode($res, true);
return $cardConsume;
}
/**
* 從緩存中get apiTicket
*/
public function getApiTicket($access_token){
$key = 'apiTicket';
$cache = Yii::app()->cache;
$apiTicket = Yii::app()->cache->get($key);
if(!$apiTicket){
$apiTicket = $this->getNewApiTicket($access_token);
$cache->set($key,$apiTicket,$expire=2);
echo $apiTicket;die;
}
return $apiTicket;
}
/**
* 得到新的api_ticket
*/
public function getNewApiTicket($access_token){
$url = "https://api.weixin.qq.com/cgi-bin/ticket/getticket?access_token=$access_token&type=wx_card";
$resJson = $this->curlGet($url);
$res = json_decode($resJson, true);
return $res['ticket'];
}
/**
* 微信token驗證
* @return string $access_token 微信token
*/
public function checkToken(){
//失效
//$appid = "";
//$appsecret = "";
//微商公眾平台獲取
$appid = '';
$appsecret ='';
$url = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=$appid&secret=$appsecret";
//https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=APPID&secret=APPSECRET
$res = $this->curlGet($url);
$jsonToken = json_decode($res, true);
$access_token = $jsonToken["access_token"];
return $access_token;
}
/**
* 上傳logo
* @param string $access_token 微信token驗證碼
* @return string $storeLogo
*/
public function upLogo($access_token){
$url = "https://api.weixin.qq.com/cgi-bin/media/uploadimg?access_token=$access_token";
$data = array(
'buffer' => '@/home/sqliuxinliang/app.shiqutech.com/static/zldt/images/card.jpg',
);
$res = $this->curlPost($url, $data);
$storeLogo = json_decode($res, true);
return $storeLogo;
}
/**
* 上傳門店列表
* @param unknown $access_token
*/
public function upStoreList($access_token){
$data = '{"location_list":[
{
"business_name":"麥當勞",
"branch_name":"赤崗店",
"province":"廣東省",
"city":"廣州市",
"district":"海珠區",
"address":"中國廣東省廣州市海珠區藝苑路11 號",
"telephone":"020-89772059",
"category":"房產小區",
"longitude":"115.32375",
"latitude":"25.097486"
},
{
"business_name":"麥當勞",
"branch_name":"珠江店",
"province":"廣東省",
"city":"廣州市",
"district":"海珠區",
"address":"中國廣東省廣州市海珠區藝苑路12 號",
"telephone":"020-89772059",
"category":"房產小區",
"longitude":"113.32375",
"latitude":"23.097486"
}
]}';
$url = "https://api.weixin.qq.com/card/location/batchadd?access_token=$access_token";
$res = $this->curlPost($url, $data);
$jsonStore = json_decode($res, true);
return $jsonStore;
}
/**
* 獲取門店
*/
public function getStoreList($access_token){
$data = '{"offset": 0, "count": 1}';
$url = "https://api.weixin.qq.com/card/location/batchget?access_token=$access_token";
$res = $this->curlPost($url, $data);
$storeList = json_decode($res, true);
return $storeList;
}
/**
* 獲取顏色列表
*/
public function getColorList($access_token){
$url = "https://api.weixin.qq.com/card/getcolors?access_token=$access_token";
$data = '{"access_token" : "" }';
$res = $this->curlPost($url, $data);
$colorList = json_decode($res, true);
return $colorList;
}
/**
* 創建卡券信息
*/
public function createCardMeg($access_token, $storeLogo,$storeSub){
$url = "https://api.weixin.qq.com/card/create?access_token=$access_token";
$data = '{ "card": {
"card_type": "GROUPON",
"groupon": {
"base_info":
{
"logo_url":"'.$storeLogo.'",
"brand_name":"test",
"code_type":"CODE_TYPE_TEXT",
"title": "test",
"sub_title": "",
"color": "Color010",
"notice": "test",
"service_phone": "020-88888888",
"description": "test",
"date_info": {
"type": 1,
"begin_timestamp": 1397577600 ,
"end_timestamp": 1522724261
},
"sku": {
"quantity": 50000000
},
"get_limit": 3,
"use_custom_code": false,
"bind_openid": false,
"can_share": true,
"can_give_friend": true,
"location_id_list" : ['.$storeSub.'],
"url_name_type": "URL_NAME_TYPE_RESERVATION",
"custom_url": "http://www.qq.com",
"source": "test"
},
"deal_detail": "testtesttesttesttesttesttesttesttest"
}
}
}';
$res = $this->curlPost($url, $data);
$cardMeg = json_decode($res, true);
return $cardMeg;
}
/**
* 創建獲取二維碼ticket
*/
public function getQRTicket($access_token, $cardCode){
$data = '{
"action_name": "QR_CARD",
"action_info": {
"card": {
"card_id": "'.$cardCode.'",
"code": "",
"openid": "",
"expire_seconds": "",
"is_unique_code": false,
"outer_id" : 0
}
}
}';
$url = "https://api.weixin.qq.com/cgi-bin/qrcode/create?access_token=$access_token";
$res = $this->curlPost($url, $data);
$QRMeg = json_decode($res, true);
return $QRMeg;
}
//curl_get
public function curlGet($url){
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);
$res = curl_exec($ch);
if($res == false){
error_log(curl_error($ch));
Yii::app()->end();
}
curl_close($ch);
return $res;
}
//curl_post
public function curlPost($url, $data){
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
$res = curl_exec($ch);
if($res == false){
var_dump(curl_error($ch));
Yii::app()->end();
}
return $res;
}
////封裝函數結束/////////////////////////////////////////////////////////
//////////////////////////////// wapIndex 測試卡券結束 ////////////////////////////////
public function actionWapIndex(){
$userId = Yii::app()->user->id;//session授權user
//////////原中糧答題頭部開始///////////////////////////////////////////////////
$this->layout = '//layouts/wap-card';
$title = $storeUrl['title'];
$this->pageTitle= $title; //設置網頁標題
$url = $storeUrl['url'];
$caseList = $signPakage =array();
//拿到case列表
$caseList = CaseList::model()->getCaseList();
// 移動端/PC端頁面分離
//if ( JYii::isMobileClient() ) { Yii::app()->getRequest()->redirect(Yii::app()->createUrl('home/wapIndex', array ('source' => 'local'))); }
//實例微信接口認證類
$weixin = new WeixinJSSDK("wx7838ede94514cbc7", "578b2e9dc7edf625ac8eeeabab6a0241");
$signPackage = $weixin->GetSignPackage();
//拼接數組,拋到頁面
$data = array(
'caseList' => $caseList,
'signPackage' => $signPackage,
'url' => $url,
);
//////原中糧答題結束/////////////////////////////////////////////////////////
$appid = "";
$appsecret = "";
$url = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=$appid&secret=$appsecret";
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$output = curl_exec($ch);
curl_close($ch);
$jsoninfo = json_decode($output, true);
$access_token = $jsoninfo["access_token"];
//拿到卡券商店信息
//$card = CaseList::model()->getCardList();
//$this->render('card', $card);
}
//////////////////////////////// AJAX ////////////////////////////////
