• 对接美团外卖开放平台


    话不多说 直接上代码

    # 再此之前 你需要在美团的外卖开放平台配置回调地址 及 推送地址。
    # 注意 美团推送的时候会有get请求,如果你的项目访问地址必带有"?" 在配置美团的时候 需要修改你的地址,apache下 修改项目根目录中的“.htaccess”文件;
    # 例:http://xxx.com.cn/?md=mt&cl=mt&at=mt 这是你项目访问地址,需要修改为 http://xxx.com.cn/md=mt/mt/mt.自己网上找下怎么样配置的




     <?php

     class MTController extends commonController {

    ######################################################### 必接接口 订单推送API START ########################################################
        const SANDBOX_APP_ID = '';
        const SANDBOX_APP_SECRET = '';
        const SANDBOX_URL = 'https://waimaiopen.meituan.com/api/v1/';
        const SANDBOX_STORE_ID = '';
    
        const APP_ID = '';
        const APP_SECRET = '';
        const URL = '';
        const STORE_ID = '';
        /**
         * 推送已确认订单 这里你可以操作获取订单信息存储数据库等 ;该信息由美团直接POST 推送到这个配置接口地址
    */ public function MTConfirmOrderAction() { $log = new Logging(); $log->lfile('MTConfirmOrder'); if($_POST && $_POST['sig'] && count((array)$_POST) > 0){ $url_detail = urldecode($_POST['detail']); $detail = json_decode($url_detail,true); $field['order_no'] = $_POST['order_id']; $field['shop_no'] = $_POST['app_poi_code']; $field['lat'] = $_POST['latitude']; $field['lng'] = $_POST['longitude']; $field['source'] = '美团'; $field['buyer'] = urldecode($_POST['recipient_name']); $field['receiver'] = urldecode($_POST['recipient_name']); $field['receiver_tel'] = $_POST['recipient_phone']; $field['receiver_address'] = urldecode($_POST['recipient_address']); $field['customre_memo'] = urldecode($_POST['caution']); $field['actual_pay'] = $_POST['total']; $field['order_time'] = $_POST['ctime']; $field['delivery_time'] = $_POST['delivery_time']; $field['consignment_sync'] = 'Y'; $field['status'] = 0; $field['shop_name'] = $_POST['wm_poi_name']; $field['ph_no'] = 'MT'.$_POST['order_id']; $field['pos_fee'] = $_POST['shipping_fee']; $field['createdt'] = 'now()'; $OID = $this->model->addItem($field, 'orders'); $field = []; foreach ($detail as $v){ $field['orders_id'] = $OID; $field['product_no'] = $v['app_food_code']; $field['product_name'] = $v['food_name']; $field['qty'] = $v['quantity']; $field['unit_price'] = $v['price']; $field['ph_no'] = 'MT'.$_POST['order_id']; $field['createdt'] = 'now()'; $this->model->addItem($field, 'orders_product'); } } $r = ['data'=>'ok']; $log->lwrite('reception:' . json_encode($_POST,JSON_UNESCAPED_UNICODE).'response:'.json_encode($r)); echo json_encode($r); } /** * 已完成订单推送回调 */ public function MTFinishStatusAction() { $log = new Logging(); $log->lfile('MTFinishStatus'); $r = ['data'=>'ok']; $log->lwrite('reception:' . json_encode($this->params,JSON_UNESCAPED_UNICODE).'response:'.json_encode($r)); echo json_encode($r); } /** * 订单配送状态回调 */ public function MTOrderStatusAction() { $log = new Logging(); $log->lfile('MTOrderStatus'); $r = ['data'=>'ok']; $log->lwrite('reception:' . json_encode($_POST,JSON_UNESCAPED_UNICODE).'response:'.json_encode($r)); echo json_encode($r); } /** * 推送已支付订单 */ public function MTPushPaidOrdersAction() { $log = new Logging(); $log->lfile('MTPushPaidOrders'); $this->MTConfirmAction($_POST['order_id']); # 直接确认订单 // $this->MTCancelAction($_POST['order_id']); # 直接取消订单 $r = ['data'=>'ok']; $log->lwrite('reception:' . json_encode($_POST,JSON_UNESCAPED_UNICODE).'response:'.json_encode($r)); echo json_encode($r); } /** * 推送催单消息 */ public function MTReminderAction() { $log = new Logging(); $log->lfile('MTReminder'); $r = ['data'=>'ok']; $log->lwrite('reception:' . json_encode($_POST,JSON_UNESCAPED_UNICODE).'response:'.json_encode($r)); echo json_encode($r); } ######################################################### 订单推送API END ######################################################## ######################################################### 取消订单推送API START ######################################################## /** * 推送取消订单消息 推送用户或客服取消订单 */ public function MTPushCancelOrderAction() { $log = new Logging(); $log->lfile('MTPushCancelOrder'); $r = ['data'=>'ok']; $log->lwrite('reception:' . json_encode($this->params,JSON_UNESCAPED_UNICODE).'response:'.json_encode($r)); echo json_encode($r); } ######################################################### 取消订单推送API END ######################################################## ######################################################### 必接接口 订单类API START ######################################################## /** * 商家确认订单 */ public function MTConfirmAction($order_id) { $Config = Config::getInstance(); $webSite = $Config->getWebSiteConfig(); $APP_ID = (($webSite['debug']) ? self::SANDBOX_APP_ID : self::APP_ID); $URL = (($webSite['debug']) ? self::SANDBOX_URL : self::URL).'order/confirm'; $parameter['order_id'] = $order_id; $parameter['timestamp'] = time(); $parameter['app_id'] = $APP_ID; $log = new Logging(); $log->lfile('MTConfirm'); $sign = $this->_sign($parameter,$URL); $Result = $this->getCurl($sign); $Data = json_decode($Result, true); $log->lwrite('reception:' . json_encode($Data,JSON_UNESCAPED_UNICODE).'response:'.json_encode($parameter,JSON_UNESCAPED_UNICODE)); } /** * 推送订单结算信息 */ public function MTOrderCloseAction() { $log = new Logging(); $log->lfile('MTOrderClose'); $r = ['data'=>'ok']; $log->lwrite('reception:' . json_encode($_POST,JSON_UNESCAPED_UNICODE).'response:'.json_encode($r)); echo json_encode($r); } /** * 驳回订单退款申请 */ public function MTRejectAction($order_id,$reason) { $log = new Logging(); $log->lfile('MTReject'); $Config = Config::getInstance(); $webSite = $Config->getWebSiteConfig(); $APP_ID = (($webSite['debug']) ? self::SANDBOX_APP_ID : self::APP_ID); $URL = (($webSite['debug']) ? self::SANDBOX_URL : self::URL).'order/refund/reject'; $parameter['order_id'] = $order_id; $parameter['reason'] = $reason; $parameter['timestamp'] = time(); $parameter['app_id'] = $APP_ID; $sign = $this->_sign($parameter,$URL); $Result = $this->getCurl($sign); $Data = json_decode($Result, true); $r = ['data'=>'ok']; $log->lwrite('reception:' . json_encode($Data,JSON_UNESCAPED_UNICODE).'response:'.json_encode($parameter,JSON_UNESCAPED_UNICODE)); echo json_encode($r); } /** * 订单确认退款请求 */ public function MTAgreeAction($order_id,$reason) { $log = new Logging(); $log->lfile('MTAgree'); $Config = Config::getInstance(); $webSite = $Config->getWebSiteConfig(); $APP_ID = (($webSite['debug']) ? self::SANDBOX_APP_ID : self::APP_ID); $URL = (($webSite['debug']) ? self::SANDBOX_URL : self::URL).'order/refund/agree'; $parameter['order_id'] = $order_id; $parameter['reason'] = $reason; $parameter['timestamp'] = time(); $parameter['app_id'] = $APP_ID; $sign = $this->_sign($parameter,$URL); $Result = $this->getCurl($sign); $Data = json_decode($Result, true); $log->lwrite('reception:' . json_encode($Data,JSON_UNESCAPED_UNICODE).'response:'.json_encode($parameter,JSON_UNESCAPED_UNICODE)); } /** * 订单配送中 改状态 */ public function MTAeliveringAction() { $Config = Config::getInstance(); $webSite = $Config->getWebSiteConfig(); $log = new Logging(); $log->lfile('MTAelivering'); $APP_ID = (($webSite['debug']) ? self::SANDBOX_APP_ID : self::APP_ID); $URL = (($webSite['debug']) ? self::SANDBOX_URL : self::URL).'order/delivering'; $parameter['order_id'] = '27009292362162587'; $parameter['timestamp'] = time(); $parameter['courier_name'] = '是我'; $parameter['courier_phone'] = 17321295203; $parameter['app_id'] = $APP_ID; $sign = $this->_sign($parameter,$URL); $Result = $this->getCurl($sign); $Data = json_decode($Result, true); $log->lwrite('reception:' . json_encode($Data,JSON_UNESCAPED_UNICODE).'response:'.json_encode($parameter)); } /** * 修改状态送达 */ public function MTArrivedAction() { $Config = Config::getInstance(); $webSite = $Config->getWebSiteConfig(); $log = new Logging(); $log->lfile('MTArrived'); $APP_ID = (($webSite['debug']) ? self::SANDBOX_APP_ID : self::APP_ID); $URL = (($webSite['debug']) ? self::SANDBOX_URL : self::URL).'order/arrived'; $parameter['order_id'] = '27009292362162587'; $parameter['timestamp'] = time(); $parameter['app_id'] = $APP_ID; $sign = $this->_sign($parameter,$URL); $Result = $this->getCurl($sign); $Data = json_decode($Result, true); $log->lwrite('reception:' . json_encode($Data,JSON_UNESCAPED_UNICODE).'response:'.json_encode($parameter)); } ######################################################### 订单类API END ######################################################## }
  • 相关阅读:
    go基础_defer
    go基础_函数
    go基础_控制语句
    go基础_数组
    go基础_切片
    go命令行参数
    Hdu2795Billboard线段树
    Hdu1394Minimum Inversion Number线段树
    Hdu1754单点更新
    Hdu1166单点更新线段树
  • 原文地址:https://www.cnblogs.com/G921123/p/12523782.html
Copyright © 2020-2023  润新知