LewaimaiRequestApi.php 13 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429
  1. <?php
  2. class LewaimaiRequestApi
  3. {
  4. /*
  5. * www项目中用于调用api接口的函数封装
  6. * $url_path,请求的动作,例如/push/waimaiorder
  7. * $paramArray 要传递的接口数组
  8. */
  9. public static function Send($url_path, $paramArray)
  10. {
  11. if (isset($paramArray["username"]) || isset($paramArray["timestamp"]) || isset($paramArray["nonce"]) || isset($paramArray["url"]))
  12. {
  13. Yii::log("param error!");
  14. return false;
  15. }
  16. $username = 'lewaimai';
  17. $password = md5('lewaimai201800');
  18. $timestamp = time();
  19. $nonce = LewaimaiString::create_noncestr(6);
  20. // $url = API_CENTER_DOMAIN . "/www" . $url_path;
  21. $domain = Yii::app()->params['api'];
  22. $url = $domain . "/www" . $url_path;
  23. //将url加入计算签名
  24. $paramArray["username"] = $username;
  25. $paramArray["timestamp"] = $timestamp;
  26. $paramArray["nonce"] = $nonce;
  27. //对参与签名的参数进行排序
  28. $stringArray = array();
  29. foreach ($paramArray as $key => $value)
  30. {
  31. $string = $key . "=" . $value;
  32. array_push($stringArray, $string);
  33. }
  34. array_push($stringArray, "url=" . $url);
  35. sort($stringArray, SORT_STRING);
  36. $query = "";
  37. $count = count($stringArray);
  38. $num = 0;
  39. foreach ($stringArray as $key => $value)
  40. {
  41. $query = $query . $value;
  42. $num++;
  43. if ($num < $count)
  44. {
  45. $query = $query . "&";
  46. }
  47. }
  48. $query = $query . strtoupper($password);
  49. $sign = strtoupper(md5($query));
  50. $paramArray["sign"] = $sign;
  51. $ret = LewaimaiHttp::POST($url, $paramArray);
  52. if (!$ret)
  53. {
  54. Yii::log("post api failed!");
  55. return false;
  56. }
  57. $retArray = json_decode($ret, true);
  58. if (!$retArray || !is_array($retArray))
  59. {
  60. return false;
  61. }
  62. return $retArray;
  63. }
  64. /*
  65. * 这个专用于发送请求给api里面的common这个module
  66. */
  67. public static function SendCommon($url_path, $paramArray)
  68. {
  69. if (isset($paramArray["username"]) || isset($paramArray["timestamp"]) || isset($paramArray["nonce"]) || isset($paramArray["url"]))
  70. {
  71. Yii::log("param error!");
  72. return false;
  73. }
  74. $paramArray["username"] = "common";
  75. $paramArray["timestamp"] = time();
  76. $paramArray["nonce"] = LewaimaiString::create_noncestr(8);
  77. //$paramArray["url"] = API_CENTER_DOMAIN . "/common" . $url_path;
  78. $domain = Yii::app()->params['api'];
  79. //$domain = "https://lewaimai-api-app-svc";
  80. $paramArray['url'] = $domain . "/common" . $url_path;
  81. //对参与签名的参数进行排序
  82. $stringArray = array();
  83. foreach ($paramArray as $key => $value)
  84. {
  85. $string = $key . "=" . $value;
  86. array_push($stringArray, $string);
  87. }
  88. sort($stringArray, SORT_STRING);
  89. $query = "";
  90. $count = count($stringArray);
  91. $num = 0;
  92. foreach ($stringArray as $key => $value)
  93. {
  94. $query = $query . $value;
  95. $num++;
  96. if ($num < $count)
  97. {
  98. $query = $query . "&";
  99. }
  100. }
  101. $query = $query . strtoupper(LEWAIMAI_API_KEY);
  102. $sign = strtoupper(md5($query));
  103. $paramArray["sign"] = $sign;
  104. unset($paramArray["url"]);
  105. //LewaimaiDebug::LogArray($paramArray);
  106. //$domain = Yii::app()->params['api'];
  107. //将参数一起POST到url上
  108. $ret = LewaimaiHttp::POST($domain . "/common" . $url_path, $paramArray);
  109. Logger::errorMult('请求接口3453543', $domain, $url_path, $paramArray, $ret);
  110. if (!$ret)
  111. {
  112. Logger::errorMult('请求失败');
  113. return false;
  114. }
  115. //Yii::log("ret:" . $ret);
  116. $retArray = json_decode($ret, true);
  117. if (!$retArray || !is_array($retArray))
  118. {
  119. return false;
  120. }
  121. return $retArray;
  122. }
  123. /*
  124. * 这个专用于发送请求给api里面的common这个module
  125. */
  126. public static function SendRcCommon($url_path, $paramArray)
  127. {
  128. if (isset($paramArray["username"]) || isset($paramArray["timestamp"]) || isset($paramArray["nonce"]) || isset($paramArray["url"]))
  129. {
  130. Yii::log("param error!");
  131. return false;
  132. }
  133. $paramArray["username"] = "common";
  134. $paramArray["timestamp"] = time();
  135. $paramArray["nonce"] = LewaimaiString::create_noncestr(8);
  136. //$paramArray["url"] = API_CENTER_DOMAIN . "/common" . $url_path;
  137. if(isset($paramArray['is_rc']) && $paramArray['is_rc'] == 1) {
  138. $domain = "https://api-g.lewaimai.com";
  139. } else {
  140. $domain = Yii::app()->params['apiGray'];
  141. }
  142. //$domain = "https://lewaimai-api-app-svc";
  143. $paramArray['url'] = $domain . "/common" . $url_path;
  144. //对参与签名的参数进行排序
  145. $stringArray = array();
  146. foreach ($paramArray as $key => $value)
  147. {
  148. $string = $key . "=" . $value;
  149. array_push($stringArray, $string);
  150. }
  151. sort($stringArray, SORT_STRING);
  152. $query = "";
  153. $count = count($stringArray);
  154. $num = 0;
  155. foreach ($stringArray as $key => $value)
  156. {
  157. $query = $query . $value;
  158. $num++;
  159. if ($num < $count)
  160. {
  161. $query = $query . "&";
  162. }
  163. }
  164. $query = $query . strtoupper(LEWAIMAI_API_KEY);
  165. $sign = strtoupper(md5($query));
  166. $paramArray["sign"] = $sign;
  167. unset($paramArray["url"]);
  168. //LewaimaiDebug::LogArray($paramArray);
  169. //$domain = Yii::app()->params['api'];
  170. //将参数一起POST到url上
  171. Yii::log("send请求参数");
  172. Yii::log($domain . "/common" . $url_path);
  173. Yii::log(json_encode($paramArray));
  174. //echo"<pre>";print_r([$domain . "/common" . $url_path, $paramArray]);
  175. $ret = LewaimaiHttp::POST($domain . "/common" . $url_path, $paramArray);
  176. Yii::log("ret: " . $ret);
  177. if (!$ret)
  178. {
  179. Yii::log("bbbbbbbbbbbbbbbbb");
  180. return false;
  181. }
  182. //Yii::log("ret:" . $ret);
  183. $retArray = json_decode($ret, true);
  184. if (!$retArray || !is_array($retArray))
  185. {
  186. return false;
  187. }
  188. return $retArray;
  189. }
  190. /**
  191. * admin项目中用于调用api接口的函数封装
  192. * $url_path,请求的动作,例如/push/waimaiorder
  193. * $paramArray 要传递的接口数组
  194. */
  195. public static function SendAdmin($url_path, $paramArray = [])
  196. {
  197. if (isset($paramArray["username"]) || isset($paramArray["timestamp"]) || isset($paramArray["nonce"]) || isset($paramArray["url"]))
  198. {
  199. Yii::log("param error!");
  200. return false;
  201. }
  202. $username = Yii::app()->user->getState('username');
  203. $password = Yii::app()->user->getState('password');
  204. $timestamp = time();
  205. $nonce = LewaimaiString::create_noncestr(6);
  206. // $url = API_CENTER_DOMAIN . "/admin" . $url_path;
  207. //$url = "https://api-test.lewaimai.com/admin" . $url_path;
  208. $domain = Yii::app()->params['api'];
  209. $url = $domain . "/admin" . $url_path;
  210. LewaimaiDebug::LogArray($url);
  211. //将url加入计算签名
  212. $paramArray["username"] = $username;
  213. $paramArray["timestamp"] = $timestamp;
  214. $paramArray["nonce"] = $nonce;
  215. //对参与签名的参数进行排序
  216. $stringArray = array();
  217. foreach ($paramArray as $key => $value)
  218. {
  219. $string = $key . "=" . $value;
  220. array_push($stringArray, $string);
  221. }
  222. array_push($stringArray, "url=" . $url);
  223. sort($stringArray, SORT_STRING);
  224. $query = "";
  225. $count = count($stringArray);
  226. $num = 0;
  227. foreach ($stringArray as $key => $value)
  228. {
  229. $query = $query . $value;
  230. $num++;
  231. if ($num < $count)
  232. {
  233. $query = $query . "&";
  234. }
  235. }
  236. $query = $query . strtoupper($password);
  237. $sign = strtoupper(md5($query));
  238. $paramArray["sign"] = $sign;
  239. LewaimaiDebug::LogArray($url);
  240. LewaimaiDebug::LogArray($paramArray);
  241. $ret = LewaimaiHttp::POST($url, $paramArray);
  242. if (!$ret)
  243. {
  244. Yii::log("post api failed!");
  245. return false;
  246. }
  247. //Yii::log("ret:" . $ret);
  248. $retArray = json_decode($ret, true);
  249. if (!$retArray || !is_array($retArray))
  250. {
  251. return false;
  252. }
  253. return $retArray;
  254. }
  255. /**
  256. * admin项目中用于调用api接口的函数封装
  257. * $url_path,请求的动作,例如/push/waimaiorder
  258. * $paramArray 要传递的接口数组
  259. */
  260. public static function SendAdmins($url_path, $paramArray = [])
  261. {
  262. // $url = API_CENTER_DOMAIN . "/admin" . $url_path;
  263. //$url = "https://api-test.lewaimai.com/admin" . $url_path;
  264. $domain = Yii::app()->params['api'];
  265. $url = $domain . "/admin" . $url_path;
  266. LewaimaiDebug::LogArray($url);
  267. $ret = LewaimaiHttp::POST($url, $paramArray);
  268. if (!$ret)
  269. {
  270. Yii::log("post api failed!");
  271. return false;
  272. }
  273. //Yii::log("ret:" . $ret);
  274. $retArray = json_decode($ret, true);
  275. if (!$retArray || !is_array($retArray))
  276. {
  277. return false;
  278. }
  279. return $retArray;
  280. }
  281. /*
  282. * 用于将任务发送到lewaimai-new的api处理器
  283. */
  284. public static function SendApi($url_path, $paramArray)
  285. {
  286. $paramArray['admin_id'] = Yii::app()->user->_id;
  287. $signArr = LewaimaiUtility::buildSignForApiRequest($paramArray);
  288. //将参数一起POST到url上
  289. $ret = LewaimaiHttp::POST(API_BASE_URL . "/admin" . $url_path, $paramArray + $signArr);
  290. if (!$ret)
  291. {
  292. Yii::log('SendApi request fail url= '.API_BASE_URL . "/admin" . $url_path.',params='.json_encode($paramArray + $signArr));
  293. return false;
  294. }
  295. //Yii::log("ret:" . $ret);
  296. $retArray = json_decode($ret, true);
  297. if (!$retArray || !is_array($retArray))
  298. {
  299. return false;
  300. }
  301. return $retArray;
  302. }
  303. /*
  304. * 用于将任务发送到lewaimai-new的api处理器
  305. */
  306. public static function sendHuifuApi($url_path, $paramArray)
  307. {
  308. $signArr = LewaimaiUtility::buildSignForApiRequest($paramArray);
  309. //将参数一起POST到url上
  310. //var_dump(API_BASE_URL . "/admin" . $url_path, $paramArray + $signArr);exit;
  311. //$ret = LewaimaiHttp::POST("https://api-dev.lewaimai.com/admin" . $url_path, $paramArray + $signArr);
  312. $api = Yii::app()->params['api'];
  313. $env = Yii::app()->params['env'];
  314. if($env=='prod'){
  315. $options = [
  316. CURLOPT_COOKIE => "lwm_gray_tag=rc;",
  317. ];
  318. $ret = LewaimaiHttp::POST($api."/admin".$url_path, $paramArray + $signArr,$options);
  319. }else{
  320. $ret = LewaimaiHttp::POST($api. "/admin".$url_path, $paramArray + $signArr);
  321. }
  322. Yii::log('提交汇付,url= '.$api. "/admin".$url_path);
  323. Yii::log(json_encode($ret));
  324. if (!$ret)
  325. {
  326. Yii::log('SendApi request fail url= '.$api. "/admin" . $url_path.',params='.json_encode($paramArray + $signArr));
  327. return false;
  328. }
  329. //Yii::log("ret:" . $ret);
  330. $retArray = json_decode($ret, true);
  331. if (!$retArray || !is_array($retArray))
  332. {
  333. return false;
  334. }
  335. return $retArray;
  336. }
  337. /**
  338. * notify项目中用于调用api接口的函数封装
  339. * $url_path,请求的动作,例如/push/waimaiorder
  340. * $paramArray 要传递的接口数组
  341. */
  342. public static function SendNotify($url_path, $paramArray = [])
  343. {
  344. LewaimaiDebug::Log("post notify!");
  345. $domain = Yii::app()->params['api'];
  346. $url = $domain . "/notify" . $url_path;
  347. $ret = LewaimaiHttp::POST($url, $paramArray);
  348. LewaimaiDebug::LogArray($ret);
  349. if (!$ret)
  350. {
  351. Yii::log("post api failed!");
  352. return false;
  353. }
  354. //Yii::log("ret:" . $ret);
  355. $retArray = json_decode($ret, true);
  356. if (!$retArray || !is_array($retArray))
  357. {
  358. return false;
  359. }
  360. return $retArray;
  361. }
  362. }