Aa.php 38 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017
  1. <?php defined('BASEPATH') OR exit('No direct script access allowed');
  2. class Aa extends Start_Controller {
  3. public function __construct(){
  4. parent::__construct();
  5. $this->load->_model('Model_shop','shop');
  6. $this->load->_model('Model_fullorder','fullorder');
  7. $this->load->_model('Model_fullordertt','fullordertt');
  8. $this->load->_model('Model_fullordersmt','fullordersmt');
  9. $this->load->_model('Model_fullorderxw','fullorderxw');
  10. $this->load->_model('Model_fullorder_2020','fullorder2020');
  11. $this->load->_model('Model_fullordersmt_2020','fullordersmt2020');
  12. $this->load->_model('Model_customersmt','customersmt');
  13. $this->load->_model('Model_country','country');
  14. $this->load->_model('Model_hl','hl');
  15. $this->load->_model('Model_is','is');
  16. $this->load->_model('Model_kdniao','kdniao');
  17. $this->load->_model('Model_typeclass','typeclass');
  18. $this->load->_model('Model_warehouse','warehouse');
  19. $this->load->_model('Model_fullorderexcel','fullorderexcel');
  20. $this->load->_model('Model_dhl','dhl');
  21. $this->load->_model('Model_usps','usps');
  22. $this->load->_model('Model_dhltest','dhltest');
  23. $this->load->_model('Model_customer','customer');
  24. $this->load->_model('Model_express','express');
  25. $this->load->_model('Model_notice','notice');
  26. $this->load->_model('Model_whlabel','whlabel');
  27. $this->load->_model('Model_productdescribe','productdescribe');
  28. $this->load->_model('Model_ljg','ljg');
  29. $this->load->_model('Model_commodityread','commodityread');
  30. $this->load->_model('Model_service','service');
  31. $this->load->_model('Model_fedex','fedex');
  32. $this->load->_model('Model_commodity','commodity');
  33. $this->load->_model('Model_fullordersmtorder','fullordersmtorder');
  34. $this->load->_model('Model_ali','ali');
  35. $this->load->_model('Model_fullordersmthb','fullordersmthb');
  36. $this->load->_model('Model_fullordersmtbf','fullordersmtbf');
  37. $this->load->_model('Model_taxzhengzhou','taxzhengzhou');
  38. $this->load->_model('Model_taxshanghai','taxshanghai');
  39. $this->load->_model('Model_excel','excel');
  40. $this->load->_model('Model_ups','ups');
  41. $this->load->_model('Model_dpd','dpd');
  42. $this->load->_model('Model_dpdold','dpdold');
  43. $this->load->_model('Model_dpd_IOSS','dpd_IOSS');
  44. $this->load->_model('Model_dpdxw','dpdxw');
  45. $this->load->_model('Model_cne','cne');
  46. $this->load->_model('Model_outbound','outbound');
  47. $this->load->_model('Model_api','api');
  48. $this->load->_model('Model_dhlhz','dhlhz');
  49. $this->load->_model('Model_apismt','apismt');
  50. $this->load->_model('Model_specialstock','specialstock');
  51. $this->load->_model('Model_systemwigsout','systemwigsout');
  52. $this->load->_model('Model_purchaseorder','purchaseorder');
  53. $this->load->_model('Model_returns','returns');
  54. $this->load->_model('Model_whlabellabel','whlabellabel');
  55. $this->load->_model('Model_whlabelbarcode','whlabelbarcode');
  56. $this->load->_model('Model_tjadd','tjadd');
  57. $this->load->_model('Model_stafflist','stafflist');
  58. $this->load->_model('Model_paypal','paypal');
  59. $this->load->_model('Model_warehousefactory','warehousefactory');
  60. $this->load->_model('Model_commodityread_del','commodityreaddel');
  61. $this->load->_model('Model_als','als');
  62. $this->load->_model('Model_allocation','allocation');
  63. $this->load->_model('Model_17track','17track');
  64. $this->load->_model('Model_hualei','hualei');
  65. $this->load->_model('Model_ck','ck');
  66. $this->load->_model('Model_colour','colour');
  67. $this->load->_model('Model_color','color');
  68. $this->load->_model('Model_emaildata','emaildata');
  69. $this->load->_model('Model_wigprint','wigprint');
  70. $this->load->_model('Model_weight','weight');
  71. $this->load->_model('Model_whlabeltransport','whlabeltransport');
  72. $this->load->_model('Model_pay','pay');
  73. $this->load->_model('Model_orderurl','orderurl');
  74. $this->load->_model('Model_classid','classid');
  75. $this->load->_model('Model_apiyy','apiyy');
  76. $this->load->_model('Model_purchase','purchase');
  77. $this->load->_model('Model_apitt','apitt');
  78. $this->load->_model('Model_whlabel_bh','whlabel_bh');
  79. $this->load->_model('Model_whlabel_fc','whlabel_fc');
  80. $this->load->_model('Model_systemtransfer','systemtransfer');
  81. $this->load->_model('Model_systemtransfer_del','systemtransfer_del');
  82. $this->load->_model('Model_power','power');
  83. $this->load->_model('Model_fullorderexcel','fullorderexcel');
  84. $this->load->_model('Model_fullorderexcelclassid','fullorderexcelclassid');
  85. $this->load->_model('Model_awlgx','awlgx');
  86. $this->load->_model('Model_shopsku','shopsku');
  87. }
  88. //定义方法的调用规则 获取URI第二段值
  89. public function _remap($arg,$arg_array)
  90. {
  91. if($arg == 'a')
  92. {
  93. $this->_a($arg_array);
  94. }
  95. else if($arg == 'ac')
  96. {
  97. $this->_ac($arg_array);
  98. }
  99. else if($arg == 'x')
  100. {
  101. $this->_x($arg_array);
  102. }
  103. else if($arg == 'x2')
  104. {
  105. $this->_x2($arg_array);
  106. }
  107. else if($arg == 'x3')
  108. {
  109. $this->_x3($arg_array);
  110. }
  111. else if($arg == 'xx')
  112. {
  113. $this->_xx($arg_array);
  114. }
  115. else if($arg == 'Token')
  116. {
  117. $this->_sku($arg_array);
  118. }
  119. }
  120. public function _a()
  121. {
  122. // 您的邮箱地址和密码
  123. $username = 'service@asteriahair.com';
  124. $password = '1026@asas.$1026';
  125. // 阿里云邮箱的 IMAP 服务器地址和端口号
  126. $hostname = '{imap.mxhichina.com:993/imap/ssl}INBOX';
  127. // 尝试连接到阿里云邮箱的 IMAP 服务器
  128. $inbox = imap_open($hostname, $username, $password);
  129. // 获取邮箱中的邮件数量
  130. $total_emails = imap_num_msg($inbox);
  131. $data = array();
  132. // 读取前10封邮件的内容
  133. for ($i = 1; $i <= min($total_emails, 2); $i++)
  134. {
  135. // 获取邮件头信息
  136. $header = imap_header($inbox, $i);
  137. // 获取邮件内容
  138. $body = imap_fetchbody($inbox, $i, 1); // 参数2表示获取邮件的第1个部分,通常为邮件正文
  139. // 获取邮件编码类型
  140. $encoding = isset($header->encoding) ? $header->encoding : null;
  141. // 如果邮件内容是base64编码的,则解码
  142. if ($encoding == 3)
  143. {
  144. $body = base64_decode($body);
  145. }
  146. $uid = imap_uid($inbox, $i);
  147. $data[] = array(
  148. "id"=>$header->from,
  149. "UID:"=>$uid,
  150. "标题:"=>$header->subject,
  151. "发送人:"=>$header->fromaddress,
  152. "时间:"=>$header->MailDate,
  153. "内容:"=>$body); // nl2br() 函数用于将换行符转换为 HTML 的换行标签
  154. }
  155. // 关闭连接
  156. imap_close($inbox);
  157. echo "<pre>";
  158. print_r($data);
  159. exit;
  160. $shop = $this->shop->read(35);
  161. $url = 'https://open-api.tiktokglobalshop.com';
  162. $link = '/authorization/202309/shops';
  163. $time = time();
  164. $queryParams = array();
  165. //$queryParams['access_token'] = $shop['token'];
  166. $queryParams['app_key'] = $shop['app_key'];
  167. //$queryParams['shop_id'] = $shop['codeid'];
  168. $queryParams['timestamp'] = $time;
  169. //$queryParams['version'] = '202309';
  170. $link .= '?' . http_build_query($queryParams);
  171. $sign = $this->apitt->sign($link,$shop['token'],$shop['app_secret']);
  172. $url .= $link.'&sign='.$sign;
  173. $headers = array('x-tts-access-token:'.$shop['token']);
  174. $ch = curl_init();
  175. curl_setopt($ch, CURLOPT_URL, $url);
  176. curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
  177. curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'GET');
  178. curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
  179. curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
  180. $res = curl_exec($ch);
  181. curl_close($ch);
  182. $res = json_decode($res,true);
  183. echo "<pre>";
  184. print_r($res);
  185. exit;
  186. $d = $this->fullordertt->get_number("TT-WK-40402-169");
  187. $shop = $this->shop->read($d['shop']);
  188. $url = 'https://open-api.tiktokglobalshop.com';
  189. $link = '/customer_service/202309/conversations';
  190. $time = time();
  191. $post['buyer_user_id'] = $d['user_id'];
  192. $queryParams['shop_cipher'] =$shop['shop_cipher'];
  193. //$queryParams['shop_id'] =$shop['codeid'];
  194. $queryParams['app_key'] =$shop['app_key'];
  195. $queryParams['timestamp'] =$time;
  196. $link .= '?'.http_build_query($queryParams);
  197. $sign = $this->sign($link,$shop['app_secret'],$post);
  198. $url .= $link.'&sign='.$sign;
  199. $headers = array('Content-Type: application/json','x-tts-access-token:'.$shop['token']);
  200. $res = $this->su_curl($post,$url,$headers);
  201. $res = json_decode($res,true);
  202. echo "<pre>";
  203. print_r($res);
  204. exit;
  205. $data = '{"url":"http:\/\/a33.wepolicy.cn\/api\/wlfs?v=158","data":{"where":{"shop":"3","expressstate":"4","wlcontent":"AP-\u5373\u5c06\u6d3e\u9001\u3001\u63d0\u9192\u7b7e\u6536\u6a21\u677f"},"var":{"id":"158","shop":"3","title":"AP-\u5373\u5c06\u6d3e\u9001\u3001\u63d0\u9192\u7b7e\u6536\u6a21\u677f","type":"2","message":"1","email":"3","ordertatus":"0","logisticstatus":"4","marketing":"0","carried":"0","repeattime":"0","sending":"0","timeinterval":"0","ktime":"1713888000","jtime":"1751212800","state":"1","statetime":"1713951981","emailtitle":"Your Alipearl hair\u00a0package will\u00a0be\u00a0delivered\u00a0ASAP","tab":"0","thq":"","thh":"","content":"Hey dear $firstName,Sorry for bothering you.<\/span><\/p>Your order has been shipped out by $expressCompany , the tracking number is $trackingNumber.<\/span><\/p>According to the tracking information, it has arrived in your country.Normally, the carrier company will arrange the final delivery for you in about 1 day. Please note that package delivery.<\/span><\/p>Note: It is better to schedule the delivery time and sign for the package so that you can get it safe and sound.<\/span><\/span><\/p>Have a good day. \u2765<\/span><\/p>","js":"","express":""}}}';
  206. $data = json_decode($data,true);
  207. $data = $data['data'];
  208. $webhookregister = 0;$cs = array();
  209. $where = $data['where'];
  210. $var = $data['var'];
  211. $wlfs = array();
  212. $shopid = $where['shop'];
  213. @$this->allocation->insert(array('title'=>date('Y-m-d',time()).'-'.$shopid));
  214. $where = "shop = '".$where['shop']."' and waybill != '' and library = '2' and expressstate <= '".$where['expressstate']."' and librarytime > '".(time()-22*24*3600)."' and wlcontent not like '%".$where['wlcontent']."%'";//正式发送的时候开启这个"'
  215. //$where = "shop = '".$where['shop']."' and waybill != '' and library = '2' and express = '3' and librarytime > '1636300800' and wlcontent not like '%".$where['wlcontent']."%'";//正式发送的时候开启这个"'
  216. $data = $this->fullorder->find_all("number = 'ALIP-40410-155'");
  217. $csck = array();
  218. foreach ($data as $k=>$v)
  219. {
  220. $vexpress = $v['express'];
  221. $shop = $this->shop->read($v['shop']);
  222. $express = $this->express->read($v['express']);
  223. $service = $this->service->read($express['service']);
  224. $country = $this->country->read($v['country']);
  225. $v['country'] = $country['ename'];
  226. $express['servicename'] =$service['title'];//增加快递名称
  227. $v['cxcode'] = strtolower($express['cxcode']);//增加快递服务商码
  228. if($v['expressstate'] == $var['logisticstatus'] && $v['wlyc'] == '0' && $v['wltype'] != '1' && $v['source'] != '1')//获取快递状态等于模板状态、订单状态等于模板状态、出库时间大于-、未加入物流异常、允许发送邮件状态、非线下单
  229. {
  230. if($v['shop'] < '7')// && $v['shouldmoney'] > 100)
  231. {
  232. $wlfs[] = array('v'=>$v,'id'=>$var['id']);
  233. //$go = $this->_sdfs($v,$var['id']);//更新顺带发送
  234. }
  235. continue;
  236. }
  237. if(($express['cxcode'] == '' && $v['exstateerror'] == '') || ($express['cxcode'] == '' && $v['exstateerror'] != ''))
  238. {
  239. continue;
  240. }
  241. else if($express['cxcode'] == 'fedex' || $express['cxcode'] == 'usps' || $express['cxcode'] == 'dhl')// || $express['cxcode'] == 'cne' || $express['cxcode'] == 'dpex' || $express['cxcode'] == 'dpd'
  242. {
  243. /**
  244. if($express['cxcode'] == 'dpex' || $express['cxcode'] == 'dpd')
  245. {
  246. $express['cxcode'] = 'cne';
  247. }
  248. **/
  249. $logistics = $express['cxcode'];
  250. }
  251. else if(($express['cxcode'] == 'ups' || $express['cxcode'] == '17track') && $v['webhookregister'] == 1)
  252. {
  253. continue;
  254. }
  255. else if(($express['cxcode'] == 'ups' || $express['cxcode'] == '17track') && $v['webhookregister'] < 1)//使用webhook注册模式 || $express['cxcode'] == '17track'
  256. {
  257. $logistics = $express['cxcode'];
  258. $webhookregister = 1;
  259. }
  260. else
  261. {
  262. //暂时不启用第三方,这里直接跳出
  263. $this->fullorder->save(array('expressstate'=>'99'),$v['id']);
  264. continue;
  265. //$logistics = 'apismt';
  266. //$v['express'] = strtolower($express['cxcode']);//替换为快递服务商码
  267. }
  268. $v['servicename'] =$service['title'];//增加快递名称
  269. $v['url'] = $express['url'];//增加快递链接
  270. @$fs = $this->$logistics->get_logistics($v);
  271. $csck[] = array($v['number'],$fs['f']);
  272. if(!isset($fs['f']))
  273. {
  274. $fs = $this->$logistics->get_logistics($v);
  275. if(!isset($fs['f']))
  276. {
  277. continue;
  278. }
  279. if($fs['f'] == '1')
  280. {
  281. $v['express'] = $vexpress;
  282. if($fs['exstate'] > $v['expressstate'] || isset($fs['webhookregister']))
  283. {
  284. $this->fullorder->save(array('expressstate'=>$fs['exstate'],'excontent'=>$fs['data'],'webhookregister'=>$webhookregister),$v['id']);
  285. }
  286. if($fs['exstate'] == $var['logisticstatus'] && $v['wlyc'] == '0' && $v['wltype'] != '1' && $v['source'] != '1')//获取快递状态等于模板状态、订单状态等于模板状态、出库时间大于-、未加入物流异常、允许发送邮件状态、非线下单
  287. {
  288. if($v['shop'] < '7')// && $v['shouldmoney'] > 100)
  289. {
  290. $wlfs[] = array('v'=>$v,'id'=>$var['id']);
  291. //$go = $this->_sdfs($v,$var['id']);//更新顺带发送
  292. }
  293. }
  294. }
  295. /**
  296. if($logistics == 'apismt')//第三方未购买,第三方查询直接进入无法查询状态
  297. {
  298. $this->fullorder->save(array('expressstate'=>'99'),$v['id']);
  299. }
  300. **/
  301. }
  302. else
  303. {
  304. if($fs['f'] == '1')
  305. {
  306. $v['express'] = $vexpress;
  307. if($fs['exstate'] > $v['expressstate'])
  308. {
  309. $this->fullorder->save(array('expressstate'=>$fs['exstate'],'excontent'=>$fs['data'],'webhookregister'=>$webhookregister),$v['id']);
  310. }
  311. if($fs['exstate'] == $var['logisticstatus'] && $v['wlyc'] == '0' && $v['wltype'] != '1' && $v['source'] != '1')//获取快递状态等于模板状态、订单状态等于模板状态、出库时间大于-、未加入物流异常、允许发送邮件状态、非线下单
  312. {
  313. if($v['shop'] < '7')// && $v['shouldmoney'] > 100)
  314. {
  315. $wlfs[] = array('v'=>$v,'id'=>$var['id']);
  316. //$go = $this->_sdfs($v,$var['id']);//更新顺带发送
  317. }
  318. }
  319. }
  320. }
  321. }
  322. @$this->allocation->insert(array('title'=>$shopid.'-'.json_encode($csck)));
  323. if($wlfs)
  324. {
  325. foreach ($wlfs as $k=>$v)
  326. {
  327. $t1 = microtime(true);
  328. $this->_sdfs($v['v'],$v['id']);
  329. $t2 = microtime(true);
  330. $t3 = (40-($t2-$t1) < 1)?1:round(40-($t2-$t1));
  331. sleep($t3);
  332. echo 1;
  333. }
  334. }
  335. }
  336. public function _xx($arg_array)
  337. {
  338. $post = $this->input->post(NULL, TRUE);
  339. $api = $this->input->get('api',true);
  340. $dshop = $this->input->get('dshop',true);
  341. $gethl = array();
  342. /* 匹配加入 */
  343. $dictionaries = $this->typeclass->find_all('spare!= "" and classid != 1 and classid != 2 and classid != 3 and classid != 4 and classid != 5 and classid != 11 and classid != 16 and classid != 17 and classid != 20 and classid != 21 and classid != 23 and classid != 24 and classid != 29 and classid != 30 and classid != 31 and classid != 32 and classid != 36');
  344. // and (classid=13 or classid=22 or classid=8 or classid=15 or classid=27 or classid=25 or classid=26 or classid=18 or classid=14 or classid=9 or classid=12 or classid=10 or classid=6 or classid=100 or classid=999)
  345. $dtc = array();
  346. foreach ($dictionaries as $v)
  347. {
  348. if(stripos($v['spare'],'|') !== false)//如果有多个值
  349. {
  350. $v['spare'] = explode('|',$v['spare']);
  351. foreach ($v['spare'] as $k=>$vs)
  352. {
  353. if(stripos($v['zh'],'|') !== false)
  354. {
  355. $vzh = explode('|',$v['zh']);
  356. $dtc[strtolower($vs)] = array('classid'=>$v['classid'],'zh'=>$vzh[$k],'id'=>$v['id'],'jm'=>$v['jm'],'spare'=>$vs);
  357. }
  358. else
  359. {
  360. $dtc[strtolower($vs)] = array('classid'=>$v['classid'],'zh'=>$v['zh'],'id'=>$v['id'],'jm'=>$v['jm'],'spare'=>$vs);
  361. }
  362. }
  363. }
  364. else
  365. {
  366. $dtc[strtolower($v['spare'])] = array('classid'=>$v['classid'],'zh'=>$v['zh'],'id'=>$v['id'],'jm'=>$v['jm'],'spare'=>$v['spare']);
  367. }
  368. }
  369. $dictionaries2 = $this->typeclass->find_all();
  370. foreach ($dictionaries2 as $v)
  371. {
  372. $dtctitle[$v['id']] = $v['title'];
  373. }
  374. /* 匹配结束 */
  375. /* 价格加入 */
  376. $money = array();
  377. /**
  378. $productdescribe = $this->productdescribe->find_all('1=1','number,purchase,cost,salesprice,title');
  379. foreach ($productdescribe as $v)
  380. {
  381. $money[$v['number']] = array('purchase'=>$v['purchase'],'cost'=>$v['cost'],'salesprice'=>$v['salesprice'],'title'=>$v['title']);
  382. }
  383. **/
  384. /* 价格加入 */
  385. /* 匹配ID加入 */
  386. $int = array();
  387. $intdata = $this->typeclass->find_all('classid=14','id,spare');
  388. foreach ($intdata as $v)
  389. {
  390. $v['spare'] = explode('|',$v['spare']);
  391. $int[$v['id']] = $v['spare'][0];
  392. }
  393. /* 匹配ID结束 */
  394. /* 国家加入键值-k */
  395. $cuy = array();
  396. $cuydata = $this->country->find_all('1=1','lb,id');
  397. foreach ($cuydata as $v)
  398. {
  399. $cuy[$v['lb']] = $v['id'];//获取到国家ID
  400. }
  401. /* 国家加入键值-j */
  402. $typeclass = array();
  403. $tdata = $this->typeclass->find_all('classid=30','id,title');
  404. foreach ($tdata as $v)
  405. {
  406. $typeclass[$v['title']] = $v['id'];
  407. }
  408. $ex = array();
  409. $express = $this->express->find_all('1=1','id,title');
  410. foreach ($express as $v)
  411. {
  412. $ex[$v['title']] = array('id'=>$v['id']);
  413. }
  414. /* 币种加入键值-j */
  415. $zjsku = array();
  416. $shopsku = $this->shopsku->find_all();
  417. foreach ($shopsku as $val)
  418. {
  419. $ss = explode(',',trim($val['shop'],','));
  420. foreach ($ss as $v)
  421. {
  422. if(isset($zjsku[$v]))
  423. {
  424. $zjsku[$v] .= ','.trim($val['sku'],',');
  425. }
  426. else
  427. {
  428. $zjsku[$v] = trim($val['sku'],',');
  429. }
  430. }
  431. }
  432. /* 支付方式-k */
  433. $pay = array();$sd = array();
  434. $tdata = $this->typeclass->find_all('classid=4','id,spare');
  435. foreach ($tdata as $v)
  436. {
  437. $paytype = $this->pay->get_typeclass($v['id']);
  438. if(isset($paytype['estimaterate']))
  439. {
  440. $estimaterate = $paytype['estimaterate'];
  441. }
  442. else
  443. {
  444. $estimaterate = 0;
  445. }
  446. if(stripos($v['spare'],'|') !== false)//如果有多个值
  447. {
  448. $v['spare'] = explode('|',$v['spare']);
  449. foreach ($v['spare'] as $k=>$vs)
  450. {
  451. $pay[$vs] = array('id'=>$v['id'],'estimaterate'=>$estimaterate);
  452. }
  453. }
  454. else
  455. {
  456. $pay[$v['spare']] = array('id'=>$v['id'],'estimaterate'=>$estimaterate);
  457. }
  458. }
  459. $time = time();
  460. $value = $this->shop->read($arg_array[0]);//TT店铺
  461. $setting = $this->setting->get_settings();
  462. $sjc = 15*3600+$setting['sctime'];//时间差
  463. $num = $this->fullordertt->find_count('gtime = "'.date('Ymd',$time).'" and shop = "'.$value['id'].'"');
  464. //$this->db->trans_begin();
  465. $res = $this->get_list($value,$time-5*24*3600,$time,'AWAITING_SHIPMENT',$cuy,$num,$dtc,$money,$int,$dtctitle,$pay,$typeclass,$ex,$sjc,$zjsku);//装运 AWAITING_SHIPMENT(111) ;-等待收集 AWAITING_COLLECTION (112);在途 IN_TRANSIT (121);-已交付 DELIVERED (122);- DELIVERED COMPLETED
  466. echo "<pre>";
  467. print_r($res);
  468. }
  469. public function get_list($shop,$from,$to,$order_status,$cuy,$num,$dtc,$money,$int,$dtctitle,$pay,$typeclass,$ex,$sjc,$zjsku)//获取订单列表
  470. {
  471. $url = 'https://open-api.tiktokglobalshop.com';
  472. $link = '/order/202309/orders/search';
  473. $time = time();
  474. $post['create_time_ge'] = $from;
  475. $post['create_time_lt'] = $to;
  476. $post['order_status'] = $order_status;
  477. $queryParams['page_size'] = 100;
  478. $queryParams['sort_order'] = 'ASC';
  479. $queryParams['sort_field'] = 'create_time';
  480. $queryParams['shop_cipher'] =$shop['shop_cipher'];
  481. $queryParams['shop_id'] =$shop['codeid'];
  482. $queryParams['app_key'] =$shop['app_key'];
  483. $queryParams['shop_cipher'] =$shop['shop_cipher'];
  484. $queryParams['timestamp'] =$time;
  485. $link .= '?'.http_build_query($queryParams);
  486. $sign = $this->sign($link,$shop['app_secret'],$post);
  487. $url .= $link.'&sign='.$sign;
  488. $headers = array('Content-Type: application/json','x-tts-access-token:'.$shop['token']);
  489. $res = $this->su_curl($post,$url,$headers);
  490. $res = json_decode($res,true);
  491. $list = array();$page_token = '';$arr = array();
  492. if(isset($res['data']['orders']))
  493. {
  494. if($res['data']['total_count'] > 100)
  495. {
  496. $n = ceil($res['data']['total_count']/100);
  497. for($i=0;$i<$n;$i++)
  498. {
  499. $net_date = $this->get_next_list($shop,$from,$to,$order_status,$page_token);
  500. $page_token = $net_date[1];
  501. foreach ($net_date['0'] as $val)
  502. {
  503. $list[] = $val['id'];
  504. }
  505. }
  506. }
  507. else
  508. {
  509. foreach ($res['data']['orders'] as $val)
  510. {
  511. $list[] = $val['id'];
  512. }
  513. }
  514. $cs = array();
  515. if(count($list) > 50)
  516. {
  517. $n = ceil(count($list)/50);$x = 0;
  518. for($i=0;$i<$n;$i++)
  519. {
  520. $k = ($i<1)?0:$i*50;
  521. $data = array_slice($list,$k,50);
  522. $d = $this->get_data($data,$shop);
  523. $cs[] = $d;
  524. if(isset($d['data']))
  525. {
  526. foreach ($d['data']['orders'] as $val)
  527. {
  528. $arr[$x] = $val;
  529. $x++;
  530. }
  531. }
  532. }
  533. }
  534. else
  535. {
  536. $d = $this->get_data($list,$shop);
  537. if(isset($d['data']))
  538. {
  539. foreach ($d['data']['orders'] as $val)
  540. {
  541. $arr[] = $val;
  542. }
  543. }
  544. }
  545. }
  546. $read = array();
  547. $gnum = array();
  548. foreach ($arr as $val)
  549. {
  550. $create_time = substr($val['create_time'],0,10)-$sjc;
  551. if(isset($gnum[date('ymd',$create_time)]))
  552. {
  553. $gnum[date('ymd',$create_time)] += 1;
  554. }
  555. else
  556. {
  557. $num = $this->fullordertt->find_count('gtime = "'.date('Ymd',$create_time).'" and shop = "'.$shop['id'].'"');
  558. $gnum[date('ymd',$create_time)] = $num+1;
  559. }
  560. $read[] = $val;
  561. }
  562. return array($read,$list);
  563. }
  564. public function get_next_list($shop,$from,$to,$order_status,$page_token='')//获取订单列表
  565. {
  566. $url = 'https://open-api.tiktokglobalshop.com';
  567. $link = '/order/202309/orders/search';
  568. $time = time();
  569. $post['create_time_ge'] = $from;
  570. $post['create_time_lt'] = $to;
  571. $post['order_status'] = $order_status;
  572. $queryParams['page_size'] = 100;
  573. $queryParams['sort_order'] = 'ASC';
  574. $queryParams['sort_field'] = 'create_time';
  575. $queryParams['shop_cipher'] =$shop['shop_cipher'];
  576. $queryParams['shop_id'] =$shop['codeid'];
  577. $queryParams['app_key'] =$shop['app_key'];
  578. $queryParams['shop_cipher'] =$shop['shop_cipher'];
  579. $queryParams['timestamp'] =$time;
  580. if($page_token)
  581. {
  582. $queryParams['page_token'] = $page_token;
  583. }
  584. $link .= '?'.http_build_query($queryParams);
  585. $sign = $this->sign($link,$shop['app_secret'],$post);
  586. $url .= $link.'&sign='.$sign;
  587. $headers = array('Content-Type: application/json','x-tts-access-token:'.$shop['token']);
  588. $res = $this->su_curl($post,$url,$headers);
  589. $res = json_decode($res,true);
  590. if(isset($res['data']['orders']))
  591. {
  592. return array($res['data']['orders'],$res['data']['next_page_token']);
  593. }
  594. }
  595. public function get_data($list,$shop)
  596. {
  597. $url = 'https://open-api.tiktokglobalshop.com';
  598. $link = '/order/202309/orders';
  599. $time = time();
  600. $ids = implode(",",$list);
  601. $link .= '?shop_cipher='.$shop['shop_cipher'].'&app_key='.$shop['app_key'].'&timestamp='.$time.'&ids='.$ids;
  602. $sign = $this->sign($link,$shop['app_secret'],'');
  603. $url .= $link.'&sign='.$sign;
  604. $headers = array('Content-Type: application/json','x-tts-access-token:'.$shop['token']);
  605. $res = $this->su_curl('',$url,$headers,$date_type='json',$timeout=300,$httptype="GET");
  606. $res = json_decode($res,true);
  607. return $res;
  608. }
  609. public function get_read($data,$time,$shop,$cuy,$num,$dtc,$money,$int,$dtctitle,$pay,$typeclass,$ex,$sjc,$zjsku)
  610. {
  611. $purl = 'https://shop.tiktok.com/view/product/';
  612. $link = '';$product = '';$sku = '';$quantity = '';
  613. $lpsq = array();
  614. foreach ($data['line_items'] as $v)
  615. {
  616. if(isset($lpsq[$v['seller_sku']]))
  617. {
  618. $lpsq[$v['seller_sku']]['quantity'] += 1;
  619. }
  620. else
  621. {
  622. $lpsq[$v['seller_sku']] = array('link'=>$purl.$v['product_id'],'product'=>$v['product_name'],'sku'=>$v['seller_sku'],'quantity'=>1);
  623. }
  624. }
  625. foreach ($lpsq as $v)
  626. {
  627. $link .= $v['link'].',';
  628. $product .= $v['product'].',';
  629. $sku .= $v['sku'].',';
  630. $quantity .= $v['quantity'].';';
  631. }
  632. if($data['status'] == 'DELIVERED' || $data['status'] == 'IN_TRANSIT' || $data['status'] == 'COMPLETED')
  633. {
  634. $s = 216;
  635. }
  636. else if($data['status'] == 'AWAITING_SHIPMENT')
  637. {
  638. $s = 207;
  639. }
  640. else if($data['status'] == 'CANCELLED')
  641. {
  642. $s = 217;
  643. }
  644. else
  645. {
  646. $s = 283;
  647. }
  648. if(isset($zjsku[$shop['id']]))//判断是否找到店铺SKU
  649. {
  650. $sku = rtrim($sku,',').','.$zjsku[$shop['id']];
  651. }
  652. $post['user_id'] = $data['user_id'];
  653. $post['state'] = $s;
  654. $post['shop'] = $shop['id'];//店铺ID
  655. $post['user'] = $shop['shopuser'];//店铺负责人
  656. $post['product'] = rtrim($product,',');//产品名称
  657. $post['link'] = rtrim($link,',');//产品链接
  658. $post['issku'] = rtrim($sku,',');
  659. $post['quantity'] = rtrim($quantity,';');
  660. $post['clientremarks'] = $data['buyer_message'];//客户备注
  661. $post['paypal'] = '';//交易号
  662. $post['guarantee'] = '';//卖家保障
  663. $post['parameter'] = '';//属性
  664. $post['shippingmethod'] = $data['delivery_option_name'].' '.$data['payment']['shipping_fee'];//用户选择快递方式及运费金额
  665. $post['source'] = 2;//订单类型
  666. $post['type'] = 1;//发货仓库
  667. $post['capital'] = 3;//资金支付状况,全部付款
  668. $post['number'] = $shop['shortname'].'-'.substr(date('ymd',substr($data['create_time'],0,10)-$sjc),1).'-'.(substr(strval($num+1000),1,3));//编号
  669. $post['orderinfo'] = $data['id'];//订单号
  670. $post['insurance'] = 0;//运输保险费用
  671. $address = $data['recipient_address']['address_detail'];
  672. $post['baddress'] = $address.','.$data['recipient_address']['district_info'][3]['address_name'].','.$data['recipient_address']['district_info'][1]['address_name'].','.$data['recipient_address']['postal_code'].','.$data['recipient_address']['region_code'].','.$data['recipient_address']['phone_number'];
  673. $post['saddress'] = $address.','.$data['recipient_address']['district_info'][3]['address_name'].','.$data['recipient_address']['district_info'][1]['address_name'].','.$data['recipient_address']['postal_code'].','.$data['recipient_address']['region_code'].','.$data['recipient_address']['phone_number'];
  674. $post['country'] = $cuy[$data['recipient_address']['region_code']];//此国家的ID
  675. $post['al'] = $data['recipient_address']['region_code'];//联邦名称
  676. $post['bname'] = preg_replace('/( | | |\s)/',' ',$data['recipient_address']['name']);//名称
  677. $post['sname'] = preg_replace('/( | | |\s)/',' ',$data['recipient_address']['name']);//名称
  678. $post['client'] = preg_replace('/( | | |\s)/',' ',$data['recipient_address']['name']);//公司名称
  679. $post['name'] = preg_replace('/( | | |\s)/',' ',$data['recipient_address']['name']);//收件人名称
  680. $post['phone'] = preg_replace('/\D/s','',$data['recipient_address']['phone_number']);//收件人电话
  681. $post['email'] = preg_replace('/( | | |\s)+/','',$data['buyer_email']);//客户邮箱
  682. $post['zipcode'] = $data['recipient_address']['postal_code'];//收件人邮编
  683. $post['province'] = $data['recipient_address']['district_info'][1]['address_name'];//收件人省份
  684. $post['city'] = $data['recipient_address']['district_info'][3]['address_name'];//收件人城市
  685. $post['address'] = $address;//收件人地址
  686. $post['shouldmoney'] = $data['payment']['total_amount'];//应收金额
  687. $post['skje'] = $post['shouldmoney'];//收款金额
  688. $post['ismoney'] = $data['payment']['currency'].$post['shouldmoney'];//支付币种金额
  689. $yga = $post['shouldmoney'];//金额
  690. $post['cf'] = ($data['shipping_type']=='SELLER')?0:1;//是否仓发TIKTOK平台仓发 SELLER商家发,ERP中1平台仓发,0商家发
  691. $post['budget'] = 0;
  692. if(isset($data['pay']) && $yga > 0)
  693. {
  694. $post['pay'] = $pay[$data['pay']]['id'];
  695. $ygc = $pay[$data['pay']]['estimaterate'];//预估到账公式
  696. $post['estimaterate'] = $pay[$data['pay']]['estimaterate'];
  697. $ifbudget = eval("return $yga*1.$ygc;");
  698. if($ifbudget > 0)
  699. {
  700. $post['budget'] = eval("return $yga*1.$ygc;");//预估到帐金额
  701. }
  702. }
  703. else if($yga > 0)
  704. {
  705. $post['pay'] = 0;
  706. $ygb = $shop['estimaterate'];//店铺默认到账公式
  707. $post['estimaterate'] = $shop['estimaterate'];
  708. $ifbudget = eval("return $yga*1.$ygb;");
  709. if($ifbudget > 0)
  710. {
  711. $post['budget'] = eval("return $yga*1.$ygb;");//预估到帐金额
  712. }
  713. }
  714. $post['overtime'] = $data['shipping_due_time']-$sjc;//超时时间
  715. $post['buytime'] = substr($data['paid_time'],0,10)-$sjc;//格式化付款时间
  716. $post['dtime'] = substr($data['create_time'],0,10)-$sjc;//订单时间
  717. $post['gtime'] = date('Ymd',substr($data['create_time'],0,10)-$sjc);//格式化订单时间
  718. $post['currencytitle'] = $data['payment']['currency'];//结算币种名称
  719. $post['currency'] = $typeclass[$data['payment']['currency']];//钱币ID
  720. $post['time'] = time();//同步时间
  721. $post['hl'] = '6.4';//汇率
  722. if(isset($data['delivery_option_name']))
  723. {
  724. $post['express'] = (isset($ex[$data['delivery_option_name']]))?$ex[$data['delivery_option_name']]['id']:0;//快递方式
  725. }
  726. if(isset($data['line_items'][0]['tracking_number']))
  727. {
  728. $post['waybill'] = $data['line_items'][0]['tracking_number'];
  729. }
  730. $matching = $this->api->matching($post['quantity'],$post['issku'],$dtc,$money,$int,$dtctitle);
  731. $post['shipremarks'] = $matching['title'];
  732. $post['cost'] = $matching['cost'];
  733. $post['purchase'] = $matching['purchase'];
  734. $post['fpdata'] = $matching['product'];
  735. $post['whlabel'] = $matching['whlabel'];
  736. $post['slpx'] = $matching['wcslpx'];
  737. return $post;
  738. }
  739. public function sign($url,$appSecret,$body='')
  740. {
  741. // 解析URL获取查询参数
  742. $queryParams = array();
  743. parse_str(parse_url($url, PHP_URL_QUERY), $queryParams);
  744. // 排除'sign'和'access_token'
  745. unset($queryParams['sign'], $queryParams['access_token']);
  746. // 按字典顺序排序查询参数
  747. ksort($queryParams);
  748. // 拼接参数为{key}{value}格式
  749. $input = '';
  750. foreach ($queryParams as $key => $value)
  751. {
  752. $input .= $key . $value;
  753. }
  754. // 追加请求路径
  755. $path = parse_url($url, PHP_URL_PATH);
  756. $input = $path . $input;
  757. if ($body)
  758. {
  759. $input .= json_encode($body);
  760. }
  761. // 使用app_secret包裹生成的字符串
  762. $input = $appSecret . $input . $appSecret;
  763. // 生成签名
  764. $sign = hash_hmac('sha256', $input,$appSecret);
  765. return $sign;
  766. }
  767. public function _aasd($arg_array)//DHL
  768. {
  769. $token_header = array(
  770. 'x-request-id: 605062090',
  771. 'Content-Type: application/json'
  772. );
  773. $ch = curl_init();
  774. $url = 'https://webhub.cndhl.com/dps/dps-auth-server/api/gateway-token/generate';
  775. curl_setopt($ch,CURLOPT_URL,$url);
  776. curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);
  777. curl_setopt($ch, CURLOPT_HTTPHEADER, $token_header);
  778. //curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); //TRUE 将curl_exec()获取的信息以字符串返回,而不是直接输出。
  779. //curl_setopt($ch, CURLOPT_HEADER, true); //返回response头部信息
  780. curl_setopt($ch,CURLOPT_POST, 1);
  781. curl_setopt($ch,CURLOPT_CONNECTTIMEOUT,600);
  782. //设置post数据
  783. $post = array();
  784. $post['consumerCode'] = 'P_f7yzl4675s';
  785. $post['key'] = 'wt)!ftX{1Co$/i{|';
  786. $data = json_encode($post);
  787. curl_setopt($ch, CURLOPT_POSTFIELDS,$data);
  788. $res = curl_exec($ch);
  789. curl_close($ch);
  790. echo $res;
  791. exit;
  792. $y = $this->fullorder->get_number($arg_array[0]);
  793. $fpdata = $y['fpdata'];
  794. $weight = 0;
  795. $fpdataweight = str_replace(array('-163-','-164-','-165-','-166-'),'-',$fpdata);
  796. $list = $fpdataweight;
  797. $list = explode(';',trim($list,';'));
  798. $cs = array();
  799. foreach ($list as $vv)
  800. {
  801. $asd = explode('|',trim($vv,'|'));
  802. $c = explode(',',trim($asd[0],','));
  803. if(!isset($c[1]))
  804. {
  805. continue;
  806. }
  807. else
  808. {
  809. $dweight = $this->weight->get_cc($c);
  810. $cs[] = array($vv,$dweight);
  811. $weight += $dweight*$asd[2];
  812. }
  813. }
  814. echo "<pre>";
  815. print_r($cs);
  816. exit;
  817. $w = $this->dhl->get_logistics($y);
  818. echo "<pre>";
  819. print_r($w);
  820. echo "<pre>";
  821. print_r($y);
  822. exit;
  823. $y = $this->fullorder->get_number("KISS-40318-068");
  824. $express = $this->express->read($y['express']);
  825. if($express['printcode'] == "DHLUSA" && $y['waybill'] != '')
  826. {
  827. $d = $this->dhl->get_data_9610($y);
  828. if($d != 1)
  829. {
  830. $this->allocation->insert(array('order'=>1,'title'=>$y['number'],'content'=>$d));
  831. return '9610失败,'.$d;exit;
  832. }
  833. $this->allocation->insert(array('order'=>9610,'title'=>$y['number']));
  834. }
  835. exit;
  836. $d = $this->dhl->get_data_9610($data);
  837. echo "<pre>";
  838. print_r($d);
  839. exit;
  840. $list = $this->whlabel->find_pc("type != 0",'sku,features,warehouse','id,warehouse,sku,type,features');
  841. foreach ($list as $v)
  842. {
  843. $a += $this->whlabel->find_count("sku = '".$v['sku']."' and features = '".$v['features']."' and warehouse = '".$v['warehouse']."' and type = '0'");
  844. }
  845. echo $a;
  846. exit;
  847. $t = $this->shop->token(2);
  848. $data = '?';
  849. //$data .= 'searchCriteria[filterGroups][0][filters][0][field]=Field';//字段名称
  850. //$data .= '&searchCriteria[filterGroups][0][filters][0][value]=Value';//字段内容
  851. //$data .= '&searchCriteria[filterGroups][0][filters][0][conditionType]=ConditionType';//字段类型
  852. //$data .= '&';
  853. $data .= 'searchCriteria[sortOrders][0][field]=created_at';
  854. $data .= '&searchCriteria[sortOrders][0][direction]=DESC';
  855. $data .= '&searchCriteria[pageSize]=10';
  856. $data .= '&searchCriteria[currentPage]=1';
  857. //$url = 'http://pc.hnwmzp.cn/rest/all/V1/orders/items'.$data;
  858. $url = 'http://pc.hnwmzp.cn/rest/V1/orders/109933';
  859. $a = $this->api->su_curl('',$url,$header=array("Authorization: Bearer ".$t,"Content-Type: application/json"),$date_type='json',$timeout=300,$httptype="GET",$userpwd='');
  860. $a = json_decode($a,true);
  861. echo "<pre>";
  862. print_r($a);
  863. exit;
  864. /**
  865. $ch = curl_init();
  866. $post = array();
  867. $ai['username'] = 'longyiapi';
  868. $ai['password'] = 'longyi123';
  869. $ch = curl_init();
  870. curl_setopt($ch, CURLOPT_URL, 'http://pc.hnwmzp.cn/rest/V1/integration/admin/token');
  871. curl_setopt($ch, CURLOPT_POST, 1);
  872. curl_setopt($ch, CURLOPT_HEADER, 0);
  873. curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
  874. curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
  875. curl_setopt($ch, CURLOPT_BINARYTRANSFER, 1);
  876. curl_setopt($ch, CURLOPT_POSTFIELDS,$ai);
  877. curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
  878. curl_setopt($ch,CURLOPT_CONNECTTIMEOUT,900);
  879. $res = curl_exec($ch);
  880. curl_close($ch);
  881. $res = json_decode($res ,true);
  882. echo "<pre>";
  883. print_r($res);
  884. //echo $c['data']['order_list']['0']['order_line_list']['0']['tracking_number'];
  885. /**
  886. $y = $this->fullordertt->find_all("dtime < 1708012800 and (whlabel like '%x|%' or whlabel like '%u|%')",'number');
  887. foreach ($y as $v)
  888. {
  889. $a = $this->whlabel->find_all("z");
  890. }
  891. $asd = '';
  892. $a = $this->whlabel->find_all("zd like '%TT-%' and state = 0",'id,zd');
  893. foreach ($a as $v)
  894. {
  895. $c = explode('-',$v['zd']);
  896. if($c[2] < 40215)
  897. {
  898. //$this->whlabel->save(array('zd'=>''),$v['id']);
  899. }
  900. }
  901. echo "<pre>";
  902. print_r($asd);
  903. **/
  904. }
  905. public function su_curl($data,$url,$header=array(),$date_type='json',$timeout=300,$httptype="POST",$userpwd='')
  906. {
  907. if ($date_type == 'http_build_query')
  908. {
  909. $data = http_build_query($data);
  910. }
  911. else if ($date_type == 'json')
  912. {
  913. $data = json_encode($data);
  914. }
  915. $ch = curl_init();
  916. curl_setopt($ch, CURLOPT_URL, $url);
  917. curl_setopt($ch, CURLOPT_POSTFIELDS,$data);
  918. curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
  919. curl_setopt($ch, CURLOPT_HEADER, false);
  920. switch ($httptype)
  921. {
  922. case "GET":
  923. curl_setopt($ch, CURLOPT_HTTPGET, true);
  924. curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "GET");
  925. break;
  926. case "POST":
  927. curl_setopt($ch, CURLOPT_POST, true);
  928. curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");
  929. break;
  930. case "PUT":
  931. curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "PUT");
  932. break;
  933. case "DELETE":
  934. curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "DELETE");
  935. break;
  936. }
  937. $isSecure = strpos($url, "https://");
  938. if ($isSecure === 0)
  939. {
  940. curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
  941. curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
  942. }
  943. if(!empty($header))
  944. {
  945. curl_setopt($ch, CURLOPT_SSLVERSION , 6); //NEW ADDITION
  946. curl_setopt($ch,CURLOPT_HTTPHEADER,$header);
  947. }
  948. if(!empty($userpwd))
  949. {
  950. curl_setopt($ch,CURLOPT_USERPWD,$userpwd);
  951. }
  952. curl_setopt($ch, CURLOPT_TIMEOUT, $timeout);
  953. curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $timeout);
  954. $result = curl_exec($ch);
  955. curl_close($ch);
  956. return $result;
  957. }
  958. }