PHP 对接美团大众点评团购券的开发步骤
這篇文章主要介紹了PHP 對(duì)接美團(tuán)大眾點(diǎn)評(píng)團(tuán)購(gòu)券(門票)的開發(fā)步驟,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下.
一、功能簡(jiǎn)要介紹
? ? 1、根據(jù)需求,用戶在美團(tuán)大眾點(diǎn)評(píng)中所購(gòu)買的門票在自己的系統(tǒng)上可以核銷,同時(shí)把核銷信息存儲(chǔ)到自己的系統(tǒng)里。
? ?2、美團(tuán)點(diǎn)評(píng)API文檔地址:https://open.dianping.com/document/v2?rootDocId=5000
二、開發(fā)步驟:
? ?1、用點(diǎn)評(píng)管家賬號(hào)登錄文檔,相應(yīng)文檔說(shuō)明:https://open.dianping.com/document/v2?docId=6000136&rootDocId=1000
? 2 、選好自己相應(yīng)的應(yīng)用型,審核通過(guò)之后,就可以用平臺(tái)系統(tǒng)的測(cè)試的數(shù)據(jù)就行接口調(diào)用
3、在大眾點(diǎn)評(píng)app購(gòu)買相應(yīng)票,根據(jù)驗(yàn)券核銷API文檔(根據(jù)業(yè)務(wù)需求選擇的類型是自用型)調(diào)取查詢?nèi)Ⅱ?yàn)券即核銷券的接口,代碼如下:
更多小程序源碼開發(fā)教程:https://www.ffu9.com/?s=%E5%B0%8F%E7%A8%8B%E5%BA%8F
//查詢?nèi)Ⅱ?yàn)券public function prepare(){// $arr 為數(shù)組 里面為應(yīng)用參數(shù)$appKey = "1ef04****e3a8"; //key$secret = "dd8a291f9f*****4e3fbd9be6ff"; //秘鑰$timestamp = date('Y-m-d H:i:s');$format = 'json';$v = 1;$sign_method = 'MD5';$qr_code = '257***4228';$open_shop_uuid = '34d5902420ca****48e941a38d773';$session = 'bbf7059256aaf3f1****3b4d9c0816cf819b7';$data = ['app_key' => $appKey,'timestamp' => $timestamp,'sign_method' => $sign_method,'format' => $format,'v' => $v,'session' => $session,];$arr = ['requestid'=>'123','receipt_code' => $qr_code,//'qr_code'=>$qr_code,'open_shop_uuid' => $open_shop_uuid,//'count'=>1,//'app_shop_account' =>'test',// 'app_shop_accountname' =>'test1',];$data = array_merge($data, $arr);ksort($data);$sign = $this->cal_sign($secret, $data);//獲取簽名$data['sign'] = $sign; // $data['count'] = $sign; // $data['app_shop_account'] = $sign; // $data['app_shop_accountname'] = $sign;$data = array_merge($data, $arr);$postdata = http_build_query($data);$url = 'https://openapi.dianping.com/router/tuangou/receipt/prepare';//輸碼查詢?nèi)?/$url = 'https://openapi.dianping.com/router/tuangou/receipt/scanprepare';//掃碼查詢?nèi)?/$url = 'https://openapi.dianping.com/router/tuangou/receipt/consume';//驗(yàn)券$tmpInfo=$this->curl_post($url,$postdata);var_dump($tmpInfo);}/*** 計(jì)算簽名** @param $app_secret 三方app_secret* @param $req_param 請(qǐng)求參數(shù)集合,包括公共參數(shù)和業(yè)務(wù)參數(shù)* @return string md5簽名*/function cal_sign($app_secret, $req_param){// 排序所有請(qǐng)求參數(shù)ksort($req_param);$src_value = "";// 按照key1value1key2value2...keynvaluen拼接foreach ($req_param as $key => $value) {$src_value .= ($key . $value);}//計(jì)算md5return md5($app_secret . $src_value . $app_secret);}//post請(qǐng)求private function curl_post($url,$postdata){$curl = curl_init(); // 啟動(dòng)一個(gè)CURL會(huì)話curl_setopt($curl, CURLOPT_URL, $url); // 要訪問(wèn)的地址curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, 0); // 對(duì)認(rèn)證證書來(lái)源的檢測(cè)curl_setopt($curl, CURLOPT_HTTPHEADER, array('Expect:')); // 解決數(shù)據(jù)包大不能提交curl_setopt($curl, CURLOPT_FOLLOWLOCATION, 1); // 使用自動(dòng)跳轉(zhuǎn)curl_setopt($curl, CURLOPT_AUTOREFERER, 1); // 自動(dòng)設(shè)置Referercurl_setopt($curl, CURLOPT_POST, 1); // 發(fā)送一個(gè)常規(guī)的Post請(qǐng)求curl_setopt($curl, CURLOPT_POSTFIELDS, $postdata); // Post提交的數(shù)據(jù)包c(diǎn)url_setopt($curl, CURLOPT_TIMEOUT, 30); // 設(shè)置超時(shí)限制防止死循curl_setopt($curl, CURLOPT_HEADER, 0); // 顯示返回的Header區(qū)域內(nèi)容curl_setopt($curl, CURLOPT_HTTPHEADER, array('Content-Type: application/x-www-form-urlencoded'));curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); // 獲取的信息以文件流的形式返回 // curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false); // 跳過(guò)證書檢查$tmpInfo = curl_exec($curl); // 執(zhí)行操作if (curl_errno($curl)) {echo 'Errno' . curl_error($curl);}curl_close($curl); // 關(guān)鍵CURL會(huì)話$tmpInfo=json_decode($tmpInfo,true);return $tmpInfo;}//get請(qǐng)求private function curl_get($url) {//初使化curl$curl = curl_init();//請(qǐng)求的url,由形參傳入curl_setopt($curl, CURLOPT_URL, $url);curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, 0); // 對(duì)認(rèn)證證書來(lái)源的檢測(cè)curl_setopt($curl, CURLOPT_HTTPHEADER, array('Expect:')); // 解決數(shù)據(jù)包大不能提交//將得到的數(shù)據(jù)返回curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);//不處理頭信息curl_setopt($curl, CURLOPT_HEADER, 0);//連接超過(guò)10秒超時(shí)curl_setopt($curl, CURLOPT_TIMEOUT, 30);curl_setopt($curl, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_1_0);curl_setopt($curl, CURLOPT_FOLLOWLOCATION, 1); // 使用自動(dòng)跳轉(zhuǎn)curl_setopt($curl, CURLOPT_AUTOREFERER, 1); // 自動(dòng)設(shè)置Referercurl_setopt($curl, CURLOPT_HEADER, 0); // 顯示返回的Header區(qū)域內(nèi)容curl_setopt($curl, CURLOPT_HTTPHEADER, array('Content-Type: application/x-www-form-urlencoded'));curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); // 獲取的信息以文件流的形式返回//執(zhí)行curl$output = curl_exec($curl);if (curl_errno($curl)) {echo 'Errno' . curl_error($curl);}//關(guān)閉資源curl_close($curl);//返回內(nèi)容$tmpInfo=json_decode($output,true);return $tmpInfo;}運(yùn)用平臺(tái)提供的相應(yīng)參數(shù),流程能順利走通。
4、當(dāng)放到線上的時(shí)候,選擇相應(yīng)的進(jìn)行上線,首先要去平臺(tái)“我的應(yīng)用”設(shè)置回調(diào)地址,然后再授權(quán)地址上加上回調(diào)地址,還要進(jìn)行授權(quán)去獲取session,然后通過(guò)session去獲取店鋪的id
回調(diào)地址:
授權(quán)地址:
5、授權(quán)地址:
https://e.dianping.com/dz-open/merchant/auth?app_key=1ef0*****e3a8&redirect_url=https://*****/admin/Dian/get_auth&state=teststate&scope=[%22tuangou%22]
授權(quán)地址可以獲取auth_code,根據(jù)這個(gè)值去換取session,換取session后可以去換取店鋪id
//獲取auth_codepublic function get_auth(){$auth_code = input('auth_code');if(!isset($auth_code)) {$app_key='1ef*****3a8';$state='teststate';$redirect_url='https://****/admin/Dian/get_auth';$scope='tuangou';$url='https://e.dianping.com/dz-open/merchant/auth?';$data=['app_key' =>$app_key,'state' => $state,'redirect_url' =>$redirect_url,'scope' =>$scope,];$postdata = http_build_query($data);Header("Location: $url$postdata");} else {var_dump($auth_code);die();}}//獲取sessionpublic function get_session(){$app_key='1ef0*****e3a8';$app_secret='dd8a291******bd9be6ff';$auth_code='4e027519e******a6a9d1ee5f2';$grant_type='authorization_code';$redirect_url='https://*****/admin/Dian/get_auth';$data=['app_key' =>$app_key,'app_secret' => $app_secret,'redirect_url' =>$redirect_url,'auth_code' =>$auth_code,'grant_type' =>$grant_type];$postdata = http_build_query($data);$url='https://openapi.dianping.com/router/oauth/token';$tmpInfo=$this->curl_post($url,$postdata);var_dump($tmpInfo);}//獲取所有店鋪的idpublic function get_shopid(){$app_key='1ef04*****e3a8';$secret = "dd8a29*****fbd9be6ff"; //秘鑰$sign_method='MD5';$timestamp = date('Y-m-d H:i:s');$format = 'json';$v = 1;//$session = 'f44d594ab895c******85b70bade02c';$session = 'bbf7059256aaf3*******0816cf819b7';$bid='5da1aab********5ad457a2c';//和session一起返回的$offset =0;$limit = 20;$url='https://openapi.dianping.com/router/oauth/session/scope?';$data=['app_key' =>$app_key,'sign_method' => $sign_method,'timestamp' =>$timestamp,'format' =>$format,'v' =>$v,'session' =>$session,'bid' =>$bid,'offset' =>$offset,'limit' =>$limit,];ksort($data);$sign = $this->cal_sign($secret, $data);$data['sign'] = $sign;$postdata = http_build_query($data);$tmpInfo=$this->curl_get($url.$postdata);var_dump($tmpInfo);}到此這篇關(guān)于PHP 對(duì)接美團(tuán)大眾點(diǎn)評(píng)團(tuán)購(gòu)券(門票)的開發(fā)步驟的文章就介紹到這了,更多相關(guān)小程序源碼開發(fā)教程:https://www.ffu9.com/?s=%E5%B0%8F%E7%A8%8B%E5%BA%8F
總結(jié)
以上是生活随笔為你收集整理的PHP 对接美团大众点评团购券的开发步骤的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: AWS云计算技术架构探索系列之一-开篇
- 下一篇: delphi查看源码版本_Eigen 版