LewaimaiHttp.php 7.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285
  1. <?php
  2. class LewaimaiHttp {
  3. //POST请求
  4. //参数1是请求的url
  5. //参数2是发送的数据的数组
  6. //参数3是其他POST选项
  7. public static function POST($url, array $post = array(), array $options = array())
  8. {
  9. $defaults = array(
  10. CURLOPT_POST => 1,
  11. CURLOPT_HEADER => 0,
  12. CURLOPT_URL => $url,
  13. CURLOPT_FRESH_CONNECT => 1,
  14. CURLOPT_RETURNTRANSFER => 1,
  15. CURLOPT_FORBID_REUSE => 1,
  16. CURLOPT_TIMEOUT => 30,
  17. CURLOPT_POSTFIELDS => http_build_query($post),
  18. CURLOPT_SSLVERSION => 1,
  19. CURLOPT_SSL_VERIFYPEER => 0,
  20. CURLOPT_SSL_VERIFYHOST => 2
  21. );
  22. $ch = curl_init();
  23. curl_setopt_array($ch, ($options + $defaults));
  24. $result = curl_exec($ch);
  25. if ($result === false)
  26. {
  27. Yii::log("POST ERROR:" . curl_error($ch));
  28. }
  29. curl_close($ch);
  30. return $result;
  31. }
  32. //GET请求
  33. //参数1是请求的url
  34. //参数2是发送的数据的数组
  35. //参数3是其他GET选项
  36. public static function GET($url, array $get = array(), array $options = array())
  37. {
  38. $defaults = array(
  39. CURLOPT_URL => $url . (strpos($url, '?') === FALSE ? '?' : '') . http_build_query($get),
  40. CURLOPT_HEADER => 0,
  41. CURLOPT_RETURNTRANSFER => TRUE,
  42. CURLOPT_TIMEOUT => 4,
  43. CURLOPT_SSLVERSION => 1,
  44. CURLOPT_SSL_VERIFYPEER => 0,
  45. CURLOPT_SSL_VERIFYHOST => 2
  46. );
  47. $ch = curl_init();
  48. curl_setopt_array($ch, ($options + $defaults));
  49. $result = curl_exec($ch);
  50. if ($result === false)
  51. {
  52. Yii::log("GET ERROR:" . curl_error($ch));
  53. }
  54. curl_close($ch);
  55. return $result;
  56. }
  57. public static function LESHUA_GET($url, array $get = array(), array $options = array()){
  58. $defaults = array(
  59. CURLOPT_URL => $url . (strpos($url, '?') === FALSE ? '?' : '') . http_build_query($get),
  60. CURLOPT_HEADER => false,
  61. CURLOPT_RETURNTRANSFER => TRUE,
  62. CURLOPT_TIMEOUT => 10,
  63. CURLOPT_SSLVERSION => 1,
  64. CURLOPT_VERBOSE => 1,
  65. CURLOPT_SSL_VERIFYPEER => false,
  66. CURLOPT_SSL_VERIFYHOST => false,
  67. CURLOPT_CAINFO => getcwd().'/protected/files/leshua/yeahka_ca.crt',
  68. CURLOPT_SSLCERT => getcwd().'/protected/files/leshua/leshua_apiclient_cert.pem',
  69. CURLOPT_SSLCERTPASSWD => 'lewaimai@yeahka.com',
  70. CURLOPT_SSLCERTTYPE => 'PEM',
  71. CURLOPT_SSLKEY => getcwd().'/protected/files/leshua/leshua_apiclient_key.pem',
  72. CURLOPT_SSLKEYPASSWD => 'lewaimai@yeahka.com',
  73. CURLOPT_SSLKEYTYPE => 'PEM'
  74. );
  75. $ch = curl_init();
  76. curl_setopt_array($ch, ($options + $defaults));
  77. $result = curl_exec($ch);
  78. if ($result === false)
  79. {
  80. Yii::log("GET ERROR:" . curl_error($ch));
  81. }
  82. curl_close($ch);
  83. return $result;
  84. }
  85. //异步POST
  86. public static function POST_ASYNC($url, array $post = array(), array $options = array())
  87. {
  88. /*
  89. $defaults = array(
  90. CURLOPT_POST => 1,
  91. CURLOPT_HEADER => 0,
  92. CURLOPT_URL => $url,
  93. CURLOPT_FRESH_CONNECT => 1,
  94. CURLOPT_RETURNTRANSFER => 1,
  95. CURLOPT_FORBID_REUSE => 1,
  96. CURLOPT_TIMEOUT => 4,
  97. CURLOPT_POSTFIELDS => http_build_query($post),
  98. CURLOPT_SSLVERSION => 1,
  99. CURLOPT_SSL_VERIFYPEER => 0,
  100. CURLOPT_SSL_VERIFYHOST => 2
  101. );
  102. $ch = curl_init();
  103. curl_setopt_array($ch, ($options + $defaults));
  104. $result = curl_exec($ch);
  105. if ($result === false)
  106. {
  107. Yii::log("POST ERROR:" . curl_error($ch));
  108. }
  109. curl_close($ch);
  110. return $result;
  111. */
  112. $argument = json_encode($post);
  113. $optionsargument = json_encode($options);
  114. $model = new HttpQueue();
  115. $model -> url = $url;
  116. $model -> argument = $argument;
  117. $model -> optionsargument = $optionsargument;
  118. $model -> type = 0;
  119. $model -> last_time = date('Y-m-d H:i:s');
  120. $result = $model -> save();
  121. return $result;
  122. }
  123. //异步GET
  124. public static function GET_ASYNC($url, array $get = array(), array $options = array())
  125. {
  126. /*
  127. $defaults = array(
  128. CURLOPT_URL => $url . (strpos($url, '?') === FALSE ? '?' : '') . http_build_query($get),
  129. CURLOPT_HEADER => 0,
  130. CURLOPT_RETURNTRANSFER => TRUE,
  131. CURLOPT_TIMEOUT => 4,
  132. CURLOPT_SSLVERSION => 1,
  133. CURLOPT_SSL_VERIFYPEER => 0,
  134. CURLOPT_SSL_VERIFYHOST => 2
  135. );
  136. $ch = curl_init();
  137. curl_setopt_array($ch, ($options + $defaults));
  138. $result = curl_exec($ch);
  139. if ($result === false)
  140. {
  141. Yii::log("GET ERROR:" . curl_error($ch));
  142. }
  143. curl_close($ch);
  144. return $result;
  145. */
  146. $argument = json_encode($get);
  147. $optionsargument = json_encode($options);
  148. $model = new HttpQueue();
  149. $model -> url = $url;
  150. $model -> argument = $argument;
  151. $model -> optionsargument = $optionsargument;
  152. $model -> type = 1;
  153. $model -> last_time = date('Y-m-d H:i:s');
  154. $result = $model -> save();
  155. return $result;
  156. }
  157. public static function POSTJSON($url, $json)
  158. {
  159. return self::POST($url, array(), array(CURLOPT_POSTFIELDS=>$json));
  160. }
  161. //发送短信
  162. public static function SendSMSMessage($phone, $content)
  163. {
  164. $content = str_replace('【','(',$content);
  165. $content = str_replace('】',')',$content);
  166. $content = $content . "【乐外卖】";
  167. $content = iconv("utf-8", "gb2312//TRANSLIT//IGNORE", $content);
  168. $flag = 0;
  169. //要post的数据
  170. $argv = array(
  171. 'sn'=>'SDK-JMR-010-00033', ////替换成您自己的序列号
  172. 'pwd'=>strtoupper(md5('SDK-JMR-010-00033'.'893025')), //此处密码需要加密 加密方式为 md5(sn+password) 32位大写
  173. 'mobile'=>$phone,//手机号 多个用英文的逗号隔开 post理论没有长度限制.推荐群发一次小于等于10000个手机号
  174. 'content'=>$content,//短信内容
  175. 'ext'=>'',
  176. 'stime'=>'',//定时时间 格式为2011-6-29 11:09:21
  177. 'rrid'=>''
  178. );
  179. //构造要post的字符串
  180. $params = "";
  181. foreach ($argv as $key=>$value) {
  182. if ($flag!=0) {
  183. $params .= "&";
  184. $flag = 1;
  185. }
  186. $params.= $key."="; $params.= urlencode($value);
  187. $flag = 1;
  188. }
  189. $length = strlen($params);
  190. //创建socket连接
  191. $fp = fsockopen("sdk2.entinfo.cn",8060,$errno,$errstr,10) or exit($errstr."--->".$errno);
  192. //构造post请求的头
  193. $header = "POST /webservice.asmx/mt HTTP/1.1\r\n";
  194. $header .= "Host:sdk2.entinfo.cn\r\n";
  195. $header .= "Content-Type: application/x-www-form-urlencoded\r\n";
  196. $header .= "Content-Length: ".$length."\r\n";
  197. $header .= "Connection: Close\r\n\r\n";
  198. //添加post的字符串
  199. $header .= $params."\r\n";
  200. //发送post的数据
  201. fputs($fp,$header);
  202. $inheader = 1;
  203. while (!feof($fp)) {
  204. $line = fgets($fp,1024); //去除请求包的头只显示页面的返回数据
  205. if ($inheader && ($line == "\n" || $line == "\r\n")) {
  206. $inheader = 0;
  207. }
  208. if ($inheader == 0) {
  209. // echo $line;
  210. }
  211. }
  212. //<string xmlns="http://tempuri.org/">-5</string>
  213. $line=str_replace("<string xmlns=\"http://tempuri.org/\">","",$line);
  214. $line=str_replace("</string>","",$line);
  215. $result=explode("-",$line);
  216. // echo $line."-------------";
  217. if(count($result)>1)
  218. {
  219. Yii::log('发送短信失败,手机号码:' . $phone . ' 发送内容:' . $content . "\n返回值为:".$line.',请查看webservice返回值对照表');
  220. return false;
  221. }
  222. else
  223. {
  224. //Yii::log('发送成功 返回值为:'.$line);
  225. return true;
  226. }
  227. }
  228. /*
  229. * 发送模板短信
  230. */
  231. public static function SendTemplateSMS($phone, $content, $tid=0)
  232. {
  233. $paramArray = array();
  234. $paramArray["phone"] = $phone;
  235. $paramArray["content"] = $content;
  236. $paramArray["tid"] = $tid;
  237. $retArray = LewaimaiRequestApi::SendCommon("/sms/sendtpsms", $paramArray);
  238. if (!$retArray)
  239. {
  240. return "网络或服务器错误";
  241. }
  242. if ($retArray["errcode"] == 0)
  243. {
  244. return true;
  245. }
  246. else
  247. {
  248. return $retArray["errmsg"];
  249. }
  250. }
  251. }