MtController.php 4.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128
  1. <?php
  2. namespace hd\controllers;
  3. use bizHd\meituan\classes\MtOrderClass;
  4. use common\components\arrayUtil;
  5. use Yii;
  6. use Shishaoqi\MeituanFlashPurchase\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. //部分退款
  17. public function actionPartRefund()
  18. {
  19. $post = Yii::$app->request->post();
  20. if (empty($post)) { // 无数据过来时,是美团对接口进行存活试探,请保留此段代码,好让请求在此被中断返回
  21. return Json::encode(['data' => 'ok']);
  22. }
  23. $data = arrayUtil::humpUnderlineConversion($post, 1);
  24. Yii::warning('partRefund: ' . urldecode(json_encode($data))); // 想要知道美团请求中带过来哪些参数,查看此日志输出
  25. }
  26. //全部退款
  27. public function actionAllRefund()
  28. {
  29. $post = Yii::$app->request->post();
  30. if (empty($post)) { // 无数据过来时,是美团对接口进行存活试探,请保留此段代码,好让请求在此被中断返回
  31. return Json::encode(['data' => 'ok']);
  32. }
  33. $data = arrayUtil::humpUnderlineConversion($post, 1);
  34. Yii::warning('allRefund: ' . urldecode(json_encode($data))); // 想要知道美团请求中带过来哪些参数,查看此日志输出
  35. }
  36. //已确认订单通知
  37. public function actionConfirmOrder()
  38. {
  39. $post = Yii::$app->request->post();
  40. if (empty($post)) { // 无数据过来时,是美团对接口进行存活试探,请保留此段代码,好让请求在此被中断返回
  41. return Json::encode(['data' => 'ok']);
  42. }
  43. $data = arrayUtil::humpUnderlineConversion($post, 1);
  44. Yii::warning('confirmOrder: ' . urldecode(json_encode($data))); // 想要知道美团请求中带过来哪些参数,查看此日志输出
  45. }
  46. public function actionNewOrder()
  47. {
  48. $post = Yii::$app->request->post();
  49. if (empty($post)) { // 无数据过来时,是美团对接口进行存活试探,请保留此段代码,好让请求在此被中断返回
  50. return Json::encode(['data' => 'ok']);
  51. }
  52. Yii::warning('newOrder2: ' . json_encode($post));
  53. // 美团传入的订单数据,中文是 URL_encode 的,执行下解密
  54. foreach ($post as $k => $val) {
  55. $post[$k] = urldecode($val);
  56. }
  57. $data = arrayUtil::humpUnderlineConversion($post, 1);
  58. Yii::warning('newOrder: ' . urldecode(json_encode($data))); // 想要知道美团请求中带过来哪些参数,查看此日志输出
  59. $orderId = $data['orderId'];
  60. $mtOrder = MtOrderClass::getByCondition(['orderId' => $orderId]);
  61. if (!empty($mtOrder)) {
  62. Yii::warning('订单号已存在:' . $orderId);
  63. return Json::encode(['data' => 'ok']);
  64. }
  65. // TODO 通过 app_poi_code 查询批发商的美团商家帐号,获取 access_token 与 refresh_token
  66. // TODO 做到上一步,要实现好批发商把他的美团商家账号授权给花掌柜
  67. $mtOrder = MtOrderClass::add($data);
  68. $picArr = [];
  69. $app = new Application($this->config);
  70. $detail = $data['detail'];
  71. $items = json_decode($detail, true);
  72. foreach ($items as $item) {
  73. $appSpuCode = $item['app_spu_code'];
  74. // access_token 是商家授权后,获取到的
  75. $params = ['app_poi_code' => $data['appPoiCode'], 'app_spu_code' => $appSpuCode, 'access_token' => 'token_pOgHs0-h06JUsIrMJ3ZKyQ'];
  76. $retailDetail = $app->retail->getDetail($params);
  77. $retailDetail = json_decode($retailDetail, true);
  78. if (isset($retailDetail['error'])) {
  79. Yii::error('get retail fail:' . json_encode($params));
  80. } else {
  81. $picArr[$appSpuCode] = $retailDetail['data']['picture'];
  82. }
  83. }
  84. Yii::info('picture: ' . json_encode($picArr)); // 订单商品图片
  85. return Json::encode(['data' => 'ok']);
  86. }
  87. public function actionCancelOrder()
  88. {
  89. $post = Yii::$app->request->post();
  90. if (empty($post)) {
  91. return Json::encode(['data' => 'ok']);
  92. }
  93. Yii::warning('cancelOrder: ' . urldecode(json_encode($post)));
  94. return Json::encode(['data' => 'ok']);
  95. }
  96. public function demo()
  97. {
  98. $app = new Application($this->config);
  99. $params = ['order_id' => '27061900338318741', 'is_mt_logistics' => 1];
  100. $orderDetail = $app->order->getOrderDetail($params);
  101. print_r(json_decode($orderDetail, true));
  102. // 商品类、活动类接口支持异步队列
  103. $app->goods->async()->create([]);
  104. }
  105. }