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文档(根据业务需求选择的类型是自用型)调取查询券、验券即核销券的接口,代码如下:

//查询券、验券
 public function prepare(){
  // $arr 为数组 里面为应用参数
  $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';//输码查询券
  //$url = 'https://openapi.dianping.com/router/tuangou/receipt/scanprepare';//扫码查询券
  //$url = 'https://openapi.dianping.com/router/tuangou/receipt/consume';//验券
  $tmpInfo=$this->curl_post($url,$postdata);
  var_dump($tmpInfo);
 }

/**
  * 计算签名
  *
  * @param $app_secret 三方app_secret
  * @param $req_param 请求参数集合,包括公共参数和业务参数
  * @return string md5签名
  */
 function cal_sign($app_secret, $req_param)
 {
  // 排序所有请求参数
  ksort($req_param);
  $src_value = "";
  // 按照key1value1key2value2...keynvaluen拼接
  foreach ($req_param as $key => $value) {
   $src_value .= ($key . $value);
  }
  //计算md5
  return md5($app_secret . $src_value . $app_secret);
 }

 //post请求
  private function curl_post($url,$postdata){
  $curl = curl_init(); // 启动一个CURL会话
  curl_setopt($curl, CURLOPT_URL, $url); // 要访问的地址
  curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, 0); // 对认证证书来源的检测
  curl_setopt($curl, CURLOPT_HTTPHEADER, array(
   'Expect:'
  )); // 解决数据包大不能提交
  curl_setopt($curl, CURLOPT_FOLLOWLOCATION, 1); // 使用自动跳转
  curl_setopt($curl, CURLOPT_AUTOREFERER, 1); // 自动设置Referer
  curl_setopt($curl, CURLOPT_POST, 1); // 发送一个常规的Post请求
  curl_setopt($curl, CURLOPT_POSTFIELDS, $postdata); // Post提交的数据包
  curl_setopt($curl, CURLOPT_TIMEOUT, 30); // 设置超时限制防止死循
  curl_setopt($curl, CURLOPT_HEADER, 0); // 显示返回的Header区域内容
  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); // 跳过证书检查
  $tmpInfo = curl_exec($curl); // 执行操作
  if (curl_errno($curl)) {
   echo 'Errno' . curl_error($curl);
  }
  curl_close($curl); // 关键CURL会话
  $tmpInfo=json_decode($tmpInfo,true);
  return $tmpInfo;
 }

 //get请求
 private function curl_get($url) {
  //初使化curl
  $curl = curl_init();
  //请求的url,由形参传入
  curl_setopt($curl, CURLOPT_URL, $url);
  curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, 0); // 对认证证书来源的检测
  curl_setopt($curl, CURLOPT_HTTPHEADER, array(
   'Expect:'
  )); // 解决数据包大不能提交
  //将得到的数据返回
  curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
  //不处理头信息
  curl_setopt($curl, CURLOPT_HEADER, 0);
  //连接超过10秒超时
  curl_setopt($curl, CURLOPT_TIMEOUT, 30);
  curl_setopt($curl, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_1_0);
  curl_setopt($curl, CURLOPT_FOLLOWLOCATION, 1); // 使用自动跳转
  curl_setopt($curl, CURLOPT_AUTOREFERER, 1); // 自动设置Referer
  curl_setopt($curl, CURLOPT_HEADER, 0); // 显示返回的Header区域内容
  curl_setopt($curl, CURLOPT_HTTPHEADER, array('Content-Type: application/x-www-form-urlencoded'));
  curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); // 获取的信息以文件流的形式返回
  //执行curl
  $output = curl_exec($curl);
  if (curl_errno($curl)) {
   echo 'Errno' . curl_error($curl);
  }
  //关闭资源
  curl_close($curl);
  //返回内容
  $tmpInfo=json_decode($output,true);
  return $tmpInfo;
 }

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

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

回调地址:

授权地址:

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

//获取auth_code

 public 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();
  }
 }

 //获取session
 public 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);
 }

//获取所有店铺的id
 public 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);
 }

到此这篇关于PHP 对接美团大众点评团购券(门票)的开发步骤的文章就介绍到这了,更多相关PHP美团大众点评团购券内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • php实现微信公众号企业转账功能

    企业付款提供由商户直接付钱至用户微信零钱的能力,支持平台操作及接口调用两种方式,资金到账速度快,使用及查询方便.主要用来解决合理的商户对用户付款需求,比如:保险理赔.彩票兑换等等. 特点 发起方式灵活,可通过页面或接口发起 微信消息触达,用户及时获知入账详情 支持实名校验,判断收款人真实身份 通过openid即可实现付款,无需用户敏感隐私信息 到账速度快,在发起后,用户可在几分钟内收到付款 企业转账需要到微信商户平台=>产品中心=>企业付款到零钱,开启此功能 下面是程序截图: 第一步:设置配置

  • php7中停止php-fpm服务的方法详解

    在PHP生命周期的各个阶段,一些与服务相关的操作都是通过SAPI接口实现. 各个服务器抽象层之间遵守着相同的约定,这里我们称之为SAPI接口. 在PHP的源码中,当需要调用服务器相关信息时,全部通过SAPI接口中对应的方法调用实现 php-fpm + nginx php + terminal ... PHP常见的四种运行模式 SAPI(Server Application Programming Interface)服务器应用程序编程接口,即PHP与其他应用交互的接口. 每个SAPI实现都是一个

  • 利用ajax+php实现商品价格计算

    本文实例为大家分享了商品价格计算的具体代码,利用ajax和php实现以下页面 index.php <!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title>商品价格计算</title> <style type="text/css"> table { border-collapse: collapse; } tr { t

  • php实现微信企业转账功能

    本文实例为大家分享了php实现微信企业转账的具体代码,供大家参考,具体内容如下 <?php /** * 配置账号信息 * 配置要和证书在一起!!!! */ class WxTransfersConfig { //=======[基本信息设置]============== // /** * TODO: 修改这里配置为您自己申请的商户信息 * 微信公众号信息配置 * * APPID:绑定支付的APPID(必须配置,开户邮件中可查看) * * MCHID:商户号(必须配置,开户邮件中可查看) * *

  • PHP与以太坊交互详解

    自去年以来,我们正在开发区块链(Blockchain)业务.最近使用过Ethereum并使用PHP,所以我想我们应该聊聊这个话题. 这里有个前提: 1.理解区块链 2.对编程语言有了解 本文的主要内容: 1.开发环境 2.以太坊的介绍 3.准备JSON-RPC调用 4.从PHP访问 1.开发环境 我们将使用Ubuntu 14.04 LTS.安装操作系统后,输入预先确定的命令. $ sudo apt-get update $ sudo apt-get upgrade 之后我设置了SSH,iptab

  • PHP实现创建以太坊钱包转账等功能

    1.Geth下载 (对以太坊了解不深的可以后面自己查找有关geth的资料,与此类似的客户端还有Ethereum.Parity .Mist),本文采用windows版(Windows系统:geth-windows-amd64-1.8.3) https://ethfans.org/wikis/Ethereum-Geth-Mirror 安装: windows版的直接傻瓜式安装到放软件的地方,然后打开安装根目录,这时可以看到有个geth.exe的可执行文件,先别急执行:先在该目录下创建一个piccgen

  • PHP小程序后台部署运行 LNMP+WNMP的方法

    目录 一.简介: 二.环境 1.Win 2.Linux + 微擎+小程序运行调试审核发布流程 宝塔安装相关软件 一.简介: 1.微信小程序后台,通常为PHP,或者JAVA版本,以下简单说下使用LNMP(Linux+Nginx+mysql+php)与WNMP(Win+Nginx+mysql+php) 2.该博文详细介绍后台部署到小程序编码提交版本到发布版本,请看后面部分: 二.环境 1.Win 通常win操作系统使用图形化界面一键部署,通常使用集成工具XAMPP与phpstudy_pro 1.XA

  • 微信企业转账之入口类分装php代码

    本文实例为大家分享了php微信企业转账的具体代码,供大家参考,具体内容如下 OK,经过前面的操作,我们已经把底层方法封装完毕,接下来就是实现转账工具类的调用.在这里,封装了一个入口文件类 WxTransfers 该类的定义如下所示: <?php include_once 'WxTransfers.Api.php'; class WxTransfers{ public function index(){ $path = WxTransfersConfig::getRealPath(); // 证书

  • 为PHP模块添加SQL SERVER2012数据库的步骤详解

    目录 一.系统要求 二.下载驱动 2.1下载 Microsoft Drivers for PHP for SQL Server 2.2 下载 ODBC Driver for SQL Server 三.配置PHP模块与php.ini文件 3.1从下图可以看到ODBC驱动程序11和13已经不在支持PHP5.9以上的版本,如果你下载的PHP模块是5.9以上的建议下载ODBC17以上的版本 3.2 PHP版本有线程安全问题如果你是用IIS要用线程安全否如果是APACHE版本用线程安全版本 3.3 将下载

  • php微信小程序解包过程实例详解

    这个解包只能看个大概 1.找到小程序压缩包 1.1.手机root或安装模拟器(我用的是夜神) 1.2.在模拟器上安装微信(用android5系统的模拟器,低版本小程序容易打不开) 1.3.打开登陆微信后,打开小程序 1.4.打开模拟器自带的文件管理器来到目录:/data/data/com.tencent.mm/MicroMsg/{{一串32位的16进制字符串文件夹}}/appbrand/pkg/ 1.5.里面有很多wxapkg文件,找到最新修改日期的文件比如 -357038350_91.wxap

  • php实现单笔转账到支付宝功能

    本文实例为大家分享了php实现单笔转账到支付宝的具体代码,供大家参考,具体内容如下 1.首先 去蚂蚁金服签约 单笔转账到支付宝 官方api文档 2.需要的配置信息 1).应用appid 2).生成密钥 文档地址 根据文档步骤生成 上传这里的 应用公钥 3.下载官方sdk 然后集成到自己项目 服务端SDK 官方实例 //实例化客户端 AlipayClient alipayClient = new DefaultAlipayClient("https://openapi.alipay.com/gat

随机推荐