当前位置:首页 > PHP教程 > php高级应用 > 列表

PHP对接美团大众点评团购券(门票)的开发步骤

发布:smiling 来源: PHP粉丝网  添加日期:2022-04-21 18:15:36 浏览: 评论:0 

这篇文章主要介绍了PHP 对接美团大众点评团购券(门票)的开发步骤,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下。

一、功能简要介绍

1、根据需求,用户在美团大众点评中所购买的门票在自己的系统上可以核销,同时把核销信息存储到自己的系统里。

2、美团点评API文档地址:https://open.dianping.com/document/v2?rootDocId=5000

二、开发步骤:

1、用点评管家账号登录文档,相应文档说明:https://open.dianping.com/document/v2?docId=6000136&rootDocId=1000

2 、选好自己相应的应用型,审核通过之后,就可以用平台系统的测试的数据就行接口调用。

3、在大众点评app购买相应票,根据验券核销API文档(根据业务需求选择的类型是自用型)调取查询券、验券即核销券的接口,代码如下:

  1. //查询券、验券 
  2.  public function prepare(){ 
  3.   // $arr 为数组 里面为应用参数 
  4.   $appKey = "1ef04****e3a8"//key 
  5.   $secret = "dd8a291f9f*****4e3fbd9be6ff"//秘钥 
  6.   $timestamp = date('Y-m-d H:i:s'); 
  7.   $format = 'json'
  8.   $v = 1; 
  9.   $sign_method = 'MD5'
  10.   $qr_code = '257***4228'
  11.   $open_shop_uuid = '34d5902420ca****48e941a38d773'
  12.   $session = 'bbf7059256aaf3f1****3b4d9c0816cf819b7'
  13.    
  14.   $data = [ 
  15.    'app_key' => $appKey
  16.    'timestamp' => $timestamp
  17.    'sign_method' => $sign_method
  18.    'format' => $format
  19.    'v' => $v
  20.    'session' => $session
  21.   ]; 
  22.   $arr = [ 
  23.    'requestid'=>'123'
  24.    'receipt_code' => $qr_code
  25.    //'qr_code'=>$qr_code, 
  26.    'open_shop_uuid' => $open_shop_uuid
  27.    //'count'=>1, 
  28.    //'app_shop_account' =>'test', 
  29.    // 'app_shop_accountname' =>'test1', 
  30.   ]; 
  31.   $data = array_merge($data$arr); 
  32.   ksort($data); 
  33.   $sign = $this->cal_sign($secret$data);//获取签名 
  34.   $data['sign'] = $sign
  35. //  $data['count'] = $sign; 
  36. //  $data['app_shop_account'] = $sign; 
  37. //  $data['app_shop_accountname'] = $sign; 
  38.   $data = array_merge($data$arr); 
  39.   $postdata = http_build_query($data); 
  40.   $url = 'https://openapi.dianping.com/router/tuangou/receipt/prepare';//输码查询券 
  41.   //$url = 'https://openapi.dianping.com/router/tuangou/receipt/scanprepare';//扫码查询券 
  42.   //$url = 'https://openapi.dianping.com/router/tuangou/receipt/consume';//验券 
  43.   $tmpInfo=$this->curl_post($url,$postdata); 
  44.   var_dump($tmpInfo); 
  45.  } 
  46.    
  47.    
  48.    
  49. /** 
  50.   * 计算签名 
  51.   * 
  52.   * @param $app_secret 三方app_secret 
  53.   * @param $req_param 请求参数集合,包括公共参数和业务参数 
  54.   * @return string md5签名 
  55.   */ 
  56.  function cal_sign($app_secret$req_param
  57.  { 
  58.   // 排序所有请求参数 
  59.   ksort($req_param); 
  60.   $src_value = ""
  61.   // 按照key1value1key2value2...keynvaluen拼接 
  62.   foreach ($req_param as $key => $value) { 
  63.    $src_value .= ($key . $value); 
  64.   } 
  65.   //计算md5 
  66.   return md5($app_secret . $src_value . $app_secret); 
  67.  } 
  68.    
  69.  //post请求 
  70.   private function curl_post($url,$postdata){ 
  71.   $curl = curl_init(); // 启动一个CURL会话 
  72.   curl_setopt($curl, CURLOPT_URL, $url); // 要访问的地址 
  73.   curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, 0); // 对认证证书来源的检测 
  74.   curl_setopt($curl, CURLOPT_HTTPHEADER, array
  75.    'Expect:' 
  76.   )); // 解决数据包大不能提交 
  77.   curl_setopt($curl, CURLOPT_FOLLOWLOCATION, 1); // 使用自动跳转 
  78.   curl_setopt($curl, CURLOPT_AUTOREFERER, 1); // 自动设置Referer 
  79.   curl_setopt($curl, CURLOPT_POST, 1); // 发送一个常规的Post请求 
  80.   curl_setopt($curl, CURLOPT_POSTFIELDS, $postdata); // Post提交的数据包 
  81.   curl_setopt($curl, CURLOPT_TIMEOUT, 30); // 设置超时限制防止死循 
  82.   curl_setopt($curl, CURLOPT_HEADER, 0); // 显示返回的Header区域内容 
  83.   curl_setopt($curl, CURLOPT_HTTPHEADER, array('Content-Type: application/x-www-form-urlencoded')); 
  84.   curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); // 获取的信息以文件流的形式返回 
  85. // curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false); // 跳过证书检查 
  86.   $tmpInfo = curl_exec($curl); // 执行操作 
  87.   if (curl_errno($curl)) { 
  88.    echo 'Errno' . curl_error($curl); 
  89.   } 
  90.   curl_close($curl); // 关键CURL会话 
  91.   $tmpInfo=json_decode($tmpInfo,true); 
  92.   return $tmpInfo
  93.  } 
  94.    
  95.  //get请求 
  96.  private function curl_get($url) { 
  97.   //初使化curl 
  98.   $curl = curl_init(); 
  99.   //请求的url,由形参传入 
  100.   curl_setopt($curl, CURLOPT_URL, $url); 
  101.   curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, 0); // 对认证证书来源的检测 
  102.   curl_setopt($curl, CURLOPT_HTTPHEADER, array
  103.    'Expect:' 
  104.   )); // 解决数据包大不能提交 
  105.   //将得到的数据返回 
  106.   curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); 
  107.   //不处理头信息 
  108.   curl_setopt($curl, CURLOPT_HEADER, 0); 
  109.   //连接超过10秒超时 
  110.   curl_setopt($curl, CURLOPT_TIMEOUT, 30); 
  111.   curl_setopt($curl, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_1_0); 
  112.   curl_setopt($curl, CURLOPT_FOLLOWLOCATION, 1); // 使用自动跳转 
  113.   curl_setopt($curl, CURLOPT_AUTOREFERER, 1); // 自动设置Referer 
  114.   curl_setopt($curl, CURLOPT_HEADER, 0); // 显示返回的Header区域内容 
  115.   curl_setopt($curl, CURLOPT_HTTPHEADER, array('Content-Type: application/x-www-form-urlencoded')); 
  116.   curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); // 获取的信息以文件流的形式返回 
  117.   //执行curl 
  118.   $output = curl_exec($curl); 
  119.   if (curl_errno($curl)) { 
  120.    echo 'Errno' . curl_error($curl); 
  121.   } 
  122.   //关闭资源 
  123.   curl_close($curl); 
  124.   //返回内容 
  125.   $tmpInfo=json_decode($output,true); 
  126.   return $tmpInfo
  127.  } 

运用平台提供的相应参数,流程能顺利走通。

4、当放到线上的时候,选择相应的进行上线,首先要去平台“我的应用”设置回调地址,然后再授权地址上加上回调地址,还要进行授权去获取session,然后通过session去获取店铺的id

PHP对接美团大众点评团购券(门票)的开发步骤

回调地址:

PHP对接美团大众点评团购券(门票)的开发步骤

授权地址:

PHP对接美团大众点评团购券(门票)的开发步骤

5、授权地址:

https://e.dianping.com/dz-open/merchant/auth?app_key=1ef0*****e3a8&redirect_url=https://*****/admin/Dian/get_auth&state=teststate&scope=[%22tuangou%22]

授权地址可以获取auth_code,根据这个值去换取session,换取session后可以去换取店铺id

  1. //获取auth_code 
  2.    
  3.  public function get_auth(){ 
  4.   $auth_code = input('auth_code'); 
  5.   if(!isset($auth_code)) { 
  6.    $app_key='1ef*****3a8'
  7.    $state='teststate'
  8.    $redirect_url='https://****/admin/Dian/get_auth'
  9.    $scope='tuangou'
  10.    $url='https://e.dianping.com/dz-open/merchant/auth?'
  11.    $data=[ 
  12.     'app_key' =>$app_key
  13.     'state' => $state
  14.     'redirect_url' =>$redirect_url
  15.     'scope' =>$scope
  16.    ]; 
  17.    $postdata = http_build_query($data); 
  18.    Header("Location: $url$postdata"); 
  19.   } else { 
  20.    var_dump($auth_code);die(); 
  21.   } 
  22.  } 
  23.    
  24.    
  25.  //获取session 
  26.  public function get_session(){ 
  27.   $app_key='1ef0*****e3a8'
  28.   $app_secret='dd8a291******bd9be6ff'
  29.   $auth_code='4e027519e******a6a9d1ee5f2'
  30.   $grant_type='authorization_code'
  31.   $redirect_url='https://*****/admin/Dian/get_auth'
  32.    
  33.   $data=[ 
  34.    'app_key' =>$app_key
  35.    'app_secret' => $app_secret
  36.    'redirect_url' =>$redirect_url
  37.    'auth_code' =>$auth_code
  38.    'grant_type' =>$grant_type 
  39.   ]; 
  40.   $postdata = http_build_query($data); 
  41.   $url='https://openapi.dianping.com/router/oauth/token'
  42.   $tmpInfo=$this->curl_post($url,$postdata); 
  43.   var_dump($tmpInfo); 
  44.  } 
  45.    
  46.    
  47. //获取所有店铺的id 
  48.  public function get_shopid(){ 
  49.   $app_key='1ef04*****e3a8'
  50.   $secret = "dd8a29*****fbd9be6ff"//秘钥 
  51.   $sign_method='MD5'
  52.   $timestamp = date('Y-m-d H:i:s'); 
  53.   $format = 'json'
  54.   $v = 1; 
  55.   //$session = 'f44d594ab895c******85b70bade02c'; 
  56.   $session = 'bbf7059256aaf3*******0816cf819b7'
  57.   $bid='5da1aab********5ad457a2c';//和session一起返回的 
  58.   $offset =0; 
  59.   $limit = 20; 
  60.   $url='https://openapi.dianping.com/router/oauth/session/scope?'
  61.   $data=[ 
  62.    'app_key' =>$app_key
  63.    'sign_method' => $sign_method
  64.    'timestamp' =>$timestamp
  65.    'format' =>$format
  66.    'v' =>$v
  67.    'session' =>$session
  68.    'bid' =>$bid
  69.    'offset' =>$offset
  70.    'limit' =>$limit
  71.   ]; 
  72.   ksort($data); 
  73.   $sign = $this->cal_sign($secret$data); 
  74.   $data['sign'] = $sign
  75.   $postdata = http_build_query($data); 
  76.   $tmpInfo=$this->curl_get($url.$postdata); 
  77.   var_dump($tmpInfo); 
  78.  }

Tags: PHP美团大众点评

分享到: