MtController.php 2.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192
  1. <?php
  2. namespace hd\controllers;
  3. use bizHd\meituan\classes\MtOrderClass;
  4. use common\components\arrayUtil;
  5. use Yii;
  6. use Abbotton\MeituanTakeaway\Application;
  7. use yii\helpers\Json;
  8. class MtController extends PublicController
  9. {
  10. public $guestAccess = [];
  11. private $config = [
  12. 'app_id' => '119094',
  13. 'app_secret' => 'b7e86d768391180f805621b40ec31e33',
  14. 'request_url' => '', // 默认 `https://waimaiopen.meituan.com/api/v1/`
  15. ];
  16. public function actionApi()
  17. {
  18. echo '开发中...';
  19. }
  20. public function actionNewOrder()
  21. {
  22. $post = Yii::$app->request->post();
  23. if(empty($post)) { // 无数据过来时,是美团对接口进行存活试探,请保留此段代码,好让请求在此被中断返回
  24. return Json::encode(['data' => 'ok']);
  25. }
  26. // 美团传入的订单数据,中文是 URL_encode 的,执行下解密
  27. foreach($post as $k => $val) {
  28. $post[$k] = urldecode($val);
  29. }
  30. $data = arrayUtil::humpUnderlineConversion($post, 1);
  31. $orderId = $data['orderId'];
  32. $mtOrder = MtOrderClass::getByCondition(['orderId' => $orderId]);
  33. if (!empty($mtOrder)) {
  34. Yii::warning('订单号已存在:' . $orderId);
  35. return Json::encode(['data' => 'ok']);
  36. }
  37. $mtOrder = MtOrderClass::add($data);
  38. $picArr = [];
  39. $app = new Application($this->config);
  40. $detail = $data['detail'];
  41. $items = json_decode($detail, true);
  42. foreach($items as $item){
  43. $appSpuCode = $item['app_spu_code'];
  44. $params = ['app_poi_code' => $data['appPoiCode'], 'app_spu_code' => $appSpuCode];
  45. $retailDetail = $app->retail->getDetail($params);
  46. Yii::info('retailDetail:' . $retailDetail);
  47. $retailDetail = json_decode($retailDetail, true);
  48. if (isset($retailDetail['error'])) {
  49. Yii::error('get retail fail:' . json_encode($params));
  50. } else {
  51. $picArr[$appSpuCode] = $retailDetail['data']['picture'];
  52. }
  53. }
  54. Yii::info('picture: ' . json_encode($picArr));
  55. return Json::encode(['data' => 'ok']);
  56. }
  57. public function actionCancelOrder()
  58. {
  59. $post = Yii::$app->request->post();
  60. if(!empty($post)) {
  61. Yii::warning('cancelOrder: ' . urldecode(json_encode($post)));
  62. }
  63. return Json::encode(['data' => 'ok']);
  64. }
  65. public function demo() {
  66. $app = new Application($this->config);
  67. $params = ['order_id' => '27061900338318741', 'is_mt_logistics' => 1];
  68. $orderDetail = $app->order->getOrderDetail($params);
  69. print_r(json_decode($orderDetail, true));
  70. // 商品类、活动类接口支持异步队列
  71. $app->goods->async()->create([]);
  72. }
  73. }