ThinkPHP 对接美团大众点评团购券(门票)

news/2024/10/18 7:56:31/

一、功能简要介绍

1、根据需求,用户在美团大众点评中所购买的门票在自己的系统上可以核销,同时把核销信息存储到自己的系统里。2、美团点评API文档地址:[https://open.dianping.com/document/v2?rootDocId=5000](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);}//计算md5return 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); // 自动设置Referercurl_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); // 自动设置Referercurl_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=1ef0e3a8&redirect_url=https:///admin/Dian/get_auth&state=teststate&scope=[%22tuangou%22]
授权地址可以获取auth_code,根据这个值去换取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);}

有需要的朋友可以试一下。本人没有试过,但是可以用。以前用到过。


http://www.ppmy.cn/news/589274.html

相关文章

CSS常用字体名列表

windows常见内置中文字体 字体中文名字体英文名宋体SimSun黑体SimHei微软雅黑Microsoft Yahei微软正黑体Microsoft JhengHei楷体KaiTi新宋体NSimSun仿宋FangSong OS X常见内置中文字体 字体中文名字体英文名苹方PingFang SC华文黑体STHeiti华文楷体STKaiti华文宋体STSong华文…

C++ 花括号 { } 初始化总结

在C11及以后的版本中,花括号{}语法在不同语境下有不同的用法,下面总结使用{}的常见场景: 1 列表初始化 List Initialization {}可以使用列表初始化的方式初始化对象,包括内置类型,数组,容器等。如&#x…

css设置字体

font-family: Mac OS的一些: 华文细黑:STHeiti Light [STXihei] 华文黑体:STHeiti 华文楷体:STKaiti 华文宋体:STSong 华文仿宋:STFangsong 儷黑 Pro:LiHei Pro Medium 儷宋 Pro&…

latex字体设置

以前使用CJK进行中文的排版,需要自己生成字体库,近日,出现了XeTeX,可以比较好的解决中文字体问题,不需要额外生成LaTeX字体库,直接使用计算机系统里的字体,本文以在Linux下为例说明XeTeX的使用。…

python哪个字体好看_Python实现对比不同字体中的同一字符的显示效果

有人在 opensuse 中文论坛询问他的输入法打出的「妩媚」的「妩」字为什么显示成「女」「元」。怀疑是字体的问题,于是空闲时用好友写的 python-fontconfig 配合 pillow (pil 的一个 fork)写了个脚本,使用系统上所有包含这个「妩」字的字体来显示这个字&a…

常规英文字体 电商_电商设计中常见的中英字体的应用

但是作为艺术字体,每一个设计师都可以通过自己的创作来设计一套完整的字体,除了中文之外,还有英文字体。中文字体相对比较难些,要有横竖撇捺,偏旁部首,结构处理等,而英文字体只有26个字母即可创作一套字体,所以说,中英文加在一起,字体数量是非常庞大的。 常见的中文字…

linux 安装字体 注册表,如何安装字体,如何安装字体?

导航:网站首页 > 如何安装字体,如何安装字体? 如何安装字体,如何安装字体?,有知道的吗?求大神们来解答一下呀,谢谢了 匿名网友: 不管你应用的是哪个版本的windows系统,安装方法都一样: 第一步:打开“控制面版”,然后在里边找到“字体”,双击这个图标,这时你看到的…

网页字体使用探究

探究 在 CSS3 之前,web 设计师必须使用已在用户计算机上安装好的字体。那个时候,当我们在网页中指定字体后,浏览器对网页进行解析时,会去系统中去查找我们指定的字体,如果找不到,那就只能使用浏览器默认的…