load->_model('Model_shop','shop'); $this->load->_model('Model_fullorder','fullorder'); $this->load->_model('Model_fullordertt','fullordertt'); $this->load->_model('Model_fullordersmt','fullordersmt'); $this->load->_model('Model_fullorderxw','fullorderxw'); $this->load->_model('Model_fullorder_2020','fullorder2020'); $this->load->_model('Model_fullordersmt_2020','fullordersmt2020'); $this->load->_model('Model_customersmt','customersmt'); $this->load->_model('Model_country','country'); $this->load->_model('Model_hl','hl'); $this->load->_model('Model_is','is'); $this->load->_model('Model_kdniao','kdniao'); $this->load->_model('Model_typeclass','typeclass'); $this->load->_model('Model_warehouse','warehouse'); $this->load->_model('Model_fullorderexcel','fullorderexcel'); $this->load->_model('Model_dhl','dhl'); $this->load->_model('Model_usps','usps'); $this->load->_model('Model_dhltest','dhltest'); $this->load->_model('Model_customer','customer'); $this->load->_model('Model_express','express'); $this->load->_model('Model_notice','notice'); $this->load->_model('Model_whlabel','whlabel'); $this->load->_model('Model_productdescribe','productdescribe'); $this->load->_model('Model_ljg','ljg'); $this->load->_model('Model_commodityread','commodityread'); $this->load->_model('Model_service','service'); $this->load->_model('Model_fedex','fedex'); $this->load->_model('Model_commodity','commodity'); $this->load->_model('Model_fullordersmtorder','fullordersmtorder'); $this->load->_model('Model_ali','ali'); $this->load->_model('Model_fullordersmthb','fullordersmthb'); $this->load->_model('Model_fullordersmtbf','fullordersmtbf'); $this->load->_model('Model_taxzhengzhou','taxzhengzhou'); $this->load->_model('Model_taxshanghai','taxshanghai'); $this->load->_model('Model_excel','excel'); $this->load->_model('Model_ups','ups'); $this->load->_model('Model_dpd','dpd'); $this->load->_model('Model_dpdold','dpdold'); $this->load->_model('Model_dpd_IOSS','dpd_IOSS'); $this->load->_model('Model_dpdxw','dpdxw'); $this->load->_model('Model_cne','cne'); $this->load->_model('Model_outbound','outbound'); $this->load->_model('Model_api','api'); $this->load->_model('Model_dhlhz','dhlhz'); $this->load->_model('Model_apismt','apismt'); $this->load->_model('Model_specialstock','specialstock'); $this->load->_model('Model_systemwigsout','systemwigsout'); $this->load->_model('Model_purchaseorder','purchaseorder'); $this->load->_model('Model_returns','returns'); $this->load->_model('Model_whlabellabel','whlabellabel'); $this->load->_model('Model_whlabelbarcode','whlabelbarcode'); $this->load->_model('Model_tjadd','tjadd'); $this->load->_model('Model_stafflist','stafflist'); $this->load->_model('Model_paypal','paypal'); $this->load->_model('Model_warehousefactory','warehousefactory'); $this->load->_model('Model_commodityread_del','commodityreaddel'); $this->load->_model('Model_als','als'); $this->load->_model('Model_allocation','allocation'); $this->load->_model('Model_17track','17track'); $this->load->_model('Model_hualei','hualei'); $this->load->_model('Model_ck','ck'); $this->load->_model('Model_colour','colour'); $this->load->_model('Model_color','color'); $this->load->_model('Model_emaildata','emaildata'); $this->load->_model('Model_wigprint','wigprint'); $this->load->_model('Model_weight','weight'); $this->load->_model('Model_whlabeltransport','whlabeltransport'); $this->load->_model('Model_pay','pay'); $this->load->_model('Model_orderurl','orderurl'); $this->load->_model('Model_classid','classid'); $this->load->_model('Model_apiyy','apiyy'); $this->load->_model('Model_purchase','purchase'); $this->load->_model('Model_apitt','apitt'); $this->load->_model('Model_whlabel_bh','whlabel_bh'); $this->load->_model('Model_whlabel_fc','whlabel_fc'); $this->load->_model('Model_systemtransfer','systemtransfer'); $this->load->_model('Model_systemtransfer_del','systemtransfer_del'); $this->load->_model('Model_power','power'); $this->load->_model('Model_fullorderexcel','fullorderexcel'); $this->load->_model('Model_fullorderexcelclassid','fullorderexcelclassid'); $this->load->_model('Model_awlgx','awlgx'); $this->load->_model('Model_shopsku','shopsku'); } //定义方法的调用规则 获取URI第二段值 public function _remap($arg,$arg_array) { if($arg == 'a') { $this->_a($arg_array); } else if($arg == 'ac') { $this->_ac($arg_array); } else if($arg == 'x') { $this->_x($arg_array); } else if($arg == 'x2') { $this->_x2($arg_array); } else if($arg == 'x3') { $this->_x3($arg_array); } else if($arg == 'xx') { $this->_xx($arg_array); } else if($arg == 'Token') { $this->_sku($arg_array); } } public function _a() { // 您的邮箱地址和密码 $username = 'service@asteriahair.com'; $password = '1026@asas.$1026'; // 阿里云邮箱的 IMAP 服务器地址和端口号 $hostname = '{imap.mxhichina.com:993/imap/ssl}INBOX'; // 尝试连接到阿里云邮箱的 IMAP 服务器 $inbox = imap_open($hostname, $username, $password); // 获取邮箱中的邮件数量 $total_emails = imap_num_msg($inbox); $data = array(); // 读取前10封邮件的内容 for ($i = 1; $i <= min($total_emails, 2); $i++) { // 获取邮件头信息 $header = imap_header($inbox, $i); // 获取邮件内容 $body = imap_fetchbody($inbox, $i, 1); // 参数2表示获取邮件的第1个部分,通常为邮件正文 // 获取邮件编码类型 $encoding = isset($header->encoding) ? $header->encoding : null; // 如果邮件内容是base64编码的,则解码 if ($encoding == 3) { $body = base64_decode($body); } $uid = imap_uid($inbox, $i); $data[] = array( "id"=>$header->from, "UID:"=>$uid, "标题:"=>$header->subject, "发送人:"=>$header->fromaddress, "时间:"=>$header->MailDate, "内容:"=>$body); // nl2br() 函数用于将换行符转换为 HTML 的换行标签 } // 关闭连接 imap_close($inbox); echo "
";
print_r($data);
exit;
$shop = $this->shop->read(35);
$url = 'https://open-api.tiktokglobalshop.com';
$link = '/authorization/202309/shops';
$time = time();
$queryParams = array();
//$queryParams['access_token'] = $shop['token'];
$queryParams['app_key'] = $shop['app_key'];
//$queryParams['shop_id'] = $shop['codeid'];
$queryParams['timestamp'] = $time;
//$queryParams['version'] = '202309';
$link .= '?' . http_build_query($queryParams);
$sign = $this->apitt->sign($link,$shop['token'],$shop['app_secret']);
$url .= $link.'&sign='.$sign;
$headers = array('x-tts-access-token:'.$shop['token']);
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'GET');
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
$res = curl_exec($ch);
curl_close($ch);
$res = json_decode($res,true);
echo "";
print_r($res);
exit;
$d = $this->fullordertt->get_number("TT-WK-40402-169");
$shop = $this->shop->read($d['shop']);
$url = 'https://open-api.tiktokglobalshop.com';
$link = '/customer_service/202309/conversations';
$time = time();
$post['buyer_user_id'] = $d['user_id'];
$queryParams['shop_cipher'] =$shop['shop_cipher'];
//$queryParams['shop_id'] =$shop['codeid'];
$queryParams['app_key'] =$shop['app_key'];
$queryParams['timestamp'] =$time;
$link .= '?'.http_build_query($queryParams);
$sign = $this->sign($link,$shop['app_secret'],$post);
$url .= $link.'&sign='.$sign;
$headers = array('Content-Type: application/json','x-tts-access-token:'.$shop['token']);
$res = $this->su_curl($post,$url,$headers);
$res = json_decode($res,true);
echo "";
print_r($res);
exit;
$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":""}}}';
$data = json_decode($data,true);
$data = $data['data'];
$webhookregister = 0;$cs = array();
$where = $data['where'];
$var = $data['var'];
$wlfs = array();
$shopid = $where['shop'];
@$this->allocation->insert(array('title'=>date('Y-m-d',time()).'-'.$shopid));
$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']."%'";//正式发送的时候开启这个"'
//$where = "shop = '".$where['shop']."' and waybill != '' and library = '2' and express = '3' and librarytime > '1636300800' and wlcontent not like '%".$where['wlcontent']."%'";//正式发送的时候开启这个"'
$data = $this->fullorder->find_all("number = 'ALIP-40410-155'");
$csck = array();
foreach ($data as $k=>$v)
{
$vexpress = $v['express'];
$shop = $this->shop->read($v['shop']);
$express = $this->express->read($v['express']);
$service = $this->service->read($express['service']);
$country = $this->country->read($v['country']);
$v['country'] = $country['ename'];
$express['servicename'] =$service['title'];//增加快递名称
$v['cxcode'] = strtolower($express['cxcode']);//增加快递服务商码
if($v['expressstate'] == $var['logisticstatus'] && $v['wlyc'] == '0' && $v['wltype'] != '1' && $v['source'] != '1')//获取快递状态等于模板状态、订单状态等于模板状态、出库时间大于-、未加入物流异常、允许发送邮件状态、非线下单
{
if($v['shop'] < '7')// && $v['shouldmoney'] > 100)
{
$wlfs[] = array('v'=>$v,'id'=>$var['id']);
//$go = $this->_sdfs($v,$var['id']);//更新顺带发送
}
continue;
}
if(($express['cxcode'] == '' && $v['exstateerror'] == '') || ($express['cxcode'] == '' && $v['exstateerror'] != ''))
{
continue;
}
else if($express['cxcode'] == 'fedex' || $express['cxcode'] == 'usps' || $express['cxcode'] == 'dhl')// || $express['cxcode'] == 'cne' || $express['cxcode'] == 'dpex' || $express['cxcode'] == 'dpd'
{
/**
if($express['cxcode'] == 'dpex' || $express['cxcode'] == 'dpd')
{
$express['cxcode'] = 'cne';
}
**/
$logistics = $express['cxcode'];
}
else if(($express['cxcode'] == 'ups' || $express['cxcode'] == '17track') && $v['webhookregister'] == 1)
{
continue;
}
else if(($express['cxcode'] == 'ups' || $express['cxcode'] == '17track') && $v['webhookregister'] < 1)//使用webhook注册模式 || $express['cxcode'] == '17track'
{
$logistics = $express['cxcode'];
$webhookregister = 1;
}
else
{
//暂时不启用第三方,这里直接跳出
$this->fullorder->save(array('expressstate'=>'99'),$v['id']);
continue;
//$logistics = 'apismt';
//$v['express'] = strtolower($express['cxcode']);//替换为快递服务商码
}
$v['servicename'] =$service['title'];//增加快递名称
$v['url'] = $express['url'];//增加快递链接
@$fs = $this->$logistics->get_logistics($v);
$csck[] = array($v['number'],$fs['f']);
if(!isset($fs['f']))
{
$fs = $this->$logistics->get_logistics($v);
if(!isset($fs['f']))
{
continue;
}
if($fs['f'] == '1')
{
$v['express'] = $vexpress;
if($fs['exstate'] > $v['expressstate'] || isset($fs['webhookregister']))
{
$this->fullorder->save(array('expressstate'=>$fs['exstate'],'excontent'=>$fs['data'],'webhookregister'=>$webhookregister),$v['id']);
}
if($fs['exstate'] == $var['logisticstatus'] && $v['wlyc'] == '0' && $v['wltype'] != '1' && $v['source'] != '1')//获取快递状态等于模板状态、订单状态等于模板状态、出库时间大于-、未加入物流异常、允许发送邮件状态、非线下单
{
if($v['shop'] < '7')// && $v['shouldmoney'] > 100)
{
$wlfs[] = array('v'=>$v,'id'=>$var['id']);
//$go = $this->_sdfs($v,$var['id']);//更新顺带发送
}
}
}
/**
if($logistics == 'apismt')//第三方未购买,第三方查询直接进入无法查询状态
{
$this->fullorder->save(array('expressstate'=>'99'),$v['id']);
}
**/
}
else
{
if($fs['f'] == '1')
{
$v['express'] = $vexpress;
if($fs['exstate'] > $v['expressstate'])
{
$this->fullorder->save(array('expressstate'=>$fs['exstate'],'excontent'=>$fs['data'],'webhookregister'=>$webhookregister),$v['id']);
}
if($fs['exstate'] == $var['logisticstatus'] && $v['wlyc'] == '0' && $v['wltype'] != '1' && $v['source'] != '1')//获取快递状态等于模板状态、订单状态等于模板状态、出库时间大于-、未加入物流异常、允许发送邮件状态、非线下单
{
if($v['shop'] < '7')// && $v['shouldmoney'] > 100)
{
$wlfs[] = array('v'=>$v,'id'=>$var['id']);
//$go = $this->_sdfs($v,$var['id']);//更新顺带发送
}
}
}
}
}
@$this->allocation->insert(array('title'=>$shopid.'-'.json_encode($csck)));
if($wlfs)
{
foreach ($wlfs as $k=>$v)
{
$t1 = microtime(true);
$this->_sdfs($v['v'],$v['id']);
$t2 = microtime(true);
$t3 = (40-($t2-$t1) < 1)?1:round(40-($t2-$t1));
sleep($t3);
echo 1;
}
}
}
public function _xx($arg_array)
{
$post = $this->input->post(NULL, TRUE);
$api = $this->input->get('api',true);
$dshop = $this->input->get('dshop',true);
$gethl = array();
/* 匹配加入 */
$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');
// 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)
$dtc = array();
foreach ($dictionaries as $v)
{
if(stripos($v['spare'],'|') !== false)//如果有多个值
{
$v['spare'] = explode('|',$v['spare']);
foreach ($v['spare'] as $k=>$vs)
{
if(stripos($v['zh'],'|') !== false)
{
$vzh = explode('|',$v['zh']);
$dtc[strtolower($vs)] = array('classid'=>$v['classid'],'zh'=>$vzh[$k],'id'=>$v['id'],'jm'=>$v['jm'],'spare'=>$vs);
}
else
{
$dtc[strtolower($vs)] = array('classid'=>$v['classid'],'zh'=>$v['zh'],'id'=>$v['id'],'jm'=>$v['jm'],'spare'=>$vs);
}
}
}
else
{
$dtc[strtolower($v['spare'])] = array('classid'=>$v['classid'],'zh'=>$v['zh'],'id'=>$v['id'],'jm'=>$v['jm'],'spare'=>$v['spare']);
}
}
$dictionaries2 = $this->typeclass->find_all();
foreach ($dictionaries2 as $v)
{
$dtctitle[$v['id']] = $v['title'];
}
/* 匹配结束 */
/* 价格加入 */
$money = array();
/**
$productdescribe = $this->productdescribe->find_all('1=1','number,purchase,cost,salesprice,title');
foreach ($productdescribe as $v)
{
$money[$v['number']] = array('purchase'=>$v['purchase'],'cost'=>$v['cost'],'salesprice'=>$v['salesprice'],'title'=>$v['title']);
}
**/
/* 价格加入 */
/* 匹配ID加入 */
$int = array();
$intdata = $this->typeclass->find_all('classid=14','id,spare');
foreach ($intdata as $v)
{
$v['spare'] = explode('|',$v['spare']);
$int[$v['id']] = $v['spare'][0];
}
/* 匹配ID结束 */
/* 国家加入键值-k */
$cuy = array();
$cuydata = $this->country->find_all('1=1','lb,id');
foreach ($cuydata as $v)
{
$cuy[$v['lb']] = $v['id'];//获取到国家ID
}
/* 国家加入键值-j */
$typeclass = array();
$tdata = $this->typeclass->find_all('classid=30','id,title');
foreach ($tdata as $v)
{
$typeclass[$v['title']] = $v['id'];
}
$ex = array();
$express = $this->express->find_all('1=1','id,title');
foreach ($express as $v)
{
$ex[$v['title']] = array('id'=>$v['id']);
}
/* 币种加入键值-j */
$zjsku = array();
$shopsku = $this->shopsku->find_all();
foreach ($shopsku as $val)
{
$ss = explode(',',trim($val['shop'],','));
foreach ($ss as $v)
{
if(isset($zjsku[$v]))
{
$zjsku[$v] .= ','.trim($val['sku'],',');
}
else
{
$zjsku[$v] = trim($val['sku'],',');
}
}
}
/* 支付方式-k */
$pay = array();$sd = array();
$tdata = $this->typeclass->find_all('classid=4','id,spare');
foreach ($tdata as $v)
{
$paytype = $this->pay->get_typeclass($v['id']);
if(isset($paytype['estimaterate']))
{
$estimaterate = $paytype['estimaterate'];
}
else
{
$estimaterate = 0;
}
if(stripos($v['spare'],'|') !== false)//如果有多个值
{
$v['spare'] = explode('|',$v['spare']);
foreach ($v['spare'] as $k=>$vs)
{
$pay[$vs] = array('id'=>$v['id'],'estimaterate'=>$estimaterate);
}
}
else
{
$pay[$v['spare']] = array('id'=>$v['id'],'estimaterate'=>$estimaterate);
}
}
$time = time();
$value = $this->shop->read($arg_array[0]);//TT店铺
$setting = $this->setting->get_settings();
$sjc = 15*3600+$setting['sctime'];//时间差
$num = $this->fullordertt->find_count('gtime = "'.date('Ymd',$time).'" and shop = "'.$value['id'].'"');
//$this->db->trans_begin();
$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
echo "";
print_r($res);
}
public function get_list($shop,$from,$to,$order_status,$cuy,$num,$dtc,$money,$int,$dtctitle,$pay,$typeclass,$ex,$sjc,$zjsku)//获取订单列表
{
$url = 'https://open-api.tiktokglobalshop.com';
$link = '/order/202309/orders/search';
$time = time();
$post['create_time_ge'] = $from;
$post['create_time_lt'] = $to;
$post['order_status'] = $order_status;
$queryParams['page_size'] = 100;
$queryParams['sort_order'] = 'ASC';
$queryParams['sort_field'] = 'create_time';
$queryParams['shop_cipher'] =$shop['shop_cipher'];
$queryParams['shop_id'] =$shop['codeid'];
$queryParams['app_key'] =$shop['app_key'];
$queryParams['shop_cipher'] =$shop['shop_cipher'];
$queryParams['timestamp'] =$time;
$link .= '?'.http_build_query($queryParams);
$sign = $this->sign($link,$shop['app_secret'],$post);
$url .= $link.'&sign='.$sign;
$headers = array('Content-Type: application/json','x-tts-access-token:'.$shop['token']);
$res = $this->su_curl($post,$url,$headers);
$res = json_decode($res,true);
$list = array();$page_token = '';$arr = array();
if(isset($res['data']['orders']))
{
if($res['data']['total_count'] > 100)
{
$n = ceil($res['data']['total_count']/100);
for($i=0;$i<$n;$i++)
{
$net_date = $this->get_next_list($shop,$from,$to,$order_status,$page_token);
$page_token = $net_date[1];
foreach ($net_date['0'] as $val)
{
$list[] = $val['id'];
}
}
}
else
{
foreach ($res['data']['orders'] as $val)
{
$list[] = $val['id'];
}
}
$cs = array();
if(count($list) > 50)
{
$n = ceil(count($list)/50);$x = 0;
for($i=0;$i<$n;$i++)
{
$k = ($i<1)?0:$i*50;
$data = array_slice($list,$k,50);
$d = $this->get_data($data,$shop);
$cs[] = $d;
if(isset($d['data']))
{
foreach ($d['data']['orders'] as $val)
{
$arr[$x] = $val;
$x++;
}
}
}
}
else
{
$d = $this->get_data($list,$shop);
if(isset($d['data']))
{
foreach ($d['data']['orders'] as $val)
{
$arr[] = $val;
}
}
}
}
$read = array();
$gnum = array();
foreach ($arr as $val)
{
$create_time = substr($val['create_time'],0,10)-$sjc;
if(isset($gnum[date('ymd',$create_time)]))
{
$gnum[date('ymd',$create_time)] += 1;
}
else
{
$num = $this->fullordertt->find_count('gtime = "'.date('Ymd',$create_time).'" and shop = "'.$shop['id'].'"');
$gnum[date('ymd',$create_time)] = $num+1;
}
$read[] = $val;
}
return array($read,$list);
}
public function get_next_list($shop,$from,$to,$order_status,$page_token='')//获取订单列表
{
$url = 'https://open-api.tiktokglobalshop.com';
$link = '/order/202309/orders/search';
$time = time();
$post['create_time_ge'] = $from;
$post['create_time_lt'] = $to;
$post['order_status'] = $order_status;
$queryParams['page_size'] = 100;
$queryParams['sort_order'] = 'ASC';
$queryParams['sort_field'] = 'create_time';
$queryParams['shop_cipher'] =$shop['shop_cipher'];
$queryParams['shop_id'] =$shop['codeid'];
$queryParams['app_key'] =$shop['app_key'];
$queryParams['shop_cipher'] =$shop['shop_cipher'];
$queryParams['timestamp'] =$time;
if($page_token)
{
$queryParams['page_token'] = $page_token;
}
$link .= '?'.http_build_query($queryParams);
$sign = $this->sign($link,$shop['app_secret'],$post);
$url .= $link.'&sign='.$sign;
$headers = array('Content-Type: application/json','x-tts-access-token:'.$shop['token']);
$res = $this->su_curl($post,$url,$headers);
$res = json_decode($res,true);
if(isset($res['data']['orders']))
{
return array($res['data']['orders'],$res['data']['next_page_token']);
}
}
public function get_data($list,$shop)
{
$url = 'https://open-api.tiktokglobalshop.com';
$link = '/order/202309/orders';
$time = time();
$ids = implode(",",$list);
$link .= '?shop_cipher='.$shop['shop_cipher'].'&app_key='.$shop['app_key'].'×tamp='.$time.'&ids='.$ids;
$sign = $this->sign($link,$shop['app_secret'],'');
$url .= $link.'&sign='.$sign;
$headers = array('Content-Type: application/json','x-tts-access-token:'.$shop['token']);
$res = $this->su_curl('',$url,$headers,$date_type='json',$timeout=300,$httptype="GET");
$res = json_decode($res,true);
return $res;
}
public function get_read($data,$time,$shop,$cuy,$num,$dtc,$money,$int,$dtctitle,$pay,$typeclass,$ex,$sjc,$zjsku)
{
$purl = 'https://shop.tiktok.com/view/product/';
$link = '';$product = '';$sku = '';$quantity = '';
$lpsq = array();
foreach ($data['line_items'] as $v)
{
if(isset($lpsq[$v['seller_sku']]))
{
$lpsq[$v['seller_sku']]['quantity'] += 1;
}
else
{
$lpsq[$v['seller_sku']] = array('link'=>$purl.$v['product_id'],'product'=>$v['product_name'],'sku'=>$v['seller_sku'],'quantity'=>1);
}
}
foreach ($lpsq as $v)
{
$link .= $v['link'].',';
$product .= $v['product'].',';
$sku .= $v['sku'].',';
$quantity .= $v['quantity'].';';
}
if($data['status'] == 'DELIVERED' || $data['status'] == 'IN_TRANSIT' || $data['status'] == 'COMPLETED')
{
$s = 216;
}
else if($data['status'] == 'AWAITING_SHIPMENT')
{
$s = 207;
}
else if($data['status'] == 'CANCELLED')
{
$s = 217;
}
else
{
$s = 283;
}
if(isset($zjsku[$shop['id']]))//判断是否找到店铺SKU
{
$sku = rtrim($sku,',').','.$zjsku[$shop['id']];
}
$post['user_id'] = $data['user_id'];
$post['state'] = $s;
$post['shop'] = $shop['id'];//店铺ID
$post['user'] = $shop['shopuser'];//店铺负责人
$post['product'] = rtrim($product,',');//产品名称
$post['link'] = rtrim($link,',');//产品链接
$post['issku'] = rtrim($sku,',');
$post['quantity'] = rtrim($quantity,';');
$post['clientremarks'] = $data['buyer_message'];//客户备注
$post['paypal'] = '';//交易号
$post['guarantee'] = '';//卖家保障
$post['parameter'] = '';//属性
$post['shippingmethod'] = $data['delivery_option_name'].' '.$data['payment']['shipping_fee'];//用户选择快递方式及运费金额
$post['source'] = 2;//订单类型
$post['type'] = 1;//发货仓库
$post['capital'] = 3;//资金支付状况,全部付款
$post['number'] = $shop['shortname'].'-'.substr(date('ymd',substr($data['create_time'],0,10)-$sjc),1).'-'.(substr(strval($num+1000),1,3));//编号
$post['orderinfo'] = $data['id'];//订单号
$post['insurance'] = 0;//运输保险费用
$address = $data['recipient_address']['address_detail'];
$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'];
$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'];
$post['country'] = $cuy[$data['recipient_address']['region_code']];//此国家的ID
$post['al'] = $data['recipient_address']['region_code'];//联邦名称
$post['bname'] = preg_replace('/( | | |\s)/',' ',$data['recipient_address']['name']);//名称
$post['sname'] = preg_replace('/( | | |\s)/',' ',$data['recipient_address']['name']);//名称
$post['client'] = preg_replace('/( | | |\s)/',' ',$data['recipient_address']['name']);//公司名称
$post['name'] = preg_replace('/( | | |\s)/',' ',$data['recipient_address']['name']);//收件人名称
$post['phone'] = preg_replace('/\D/s','',$data['recipient_address']['phone_number']);//收件人电话
$post['email'] = preg_replace('/( | | |\s)+/','',$data['buyer_email']);//客户邮箱
$post['zipcode'] = $data['recipient_address']['postal_code'];//收件人邮编
$post['province'] = $data['recipient_address']['district_info'][1]['address_name'];//收件人省份
$post['city'] = $data['recipient_address']['district_info'][3]['address_name'];//收件人城市
$post['address'] = $address;//收件人地址
$post['shouldmoney'] = $data['payment']['total_amount'];//应收金额
$post['skje'] = $post['shouldmoney'];//收款金额
$post['ismoney'] = $data['payment']['currency'].$post['shouldmoney'];//支付币种金额
$yga = $post['shouldmoney'];//金额
$post['cf'] = ($data['shipping_type']=='SELLER')?0:1;//是否仓发TIKTOK平台仓发 SELLER商家发,ERP中1平台仓发,0商家发
$post['budget'] = 0;
if(isset($data['pay']) && $yga > 0)
{
$post['pay'] = $pay[$data['pay']]['id'];
$ygc = $pay[$data['pay']]['estimaterate'];//预估到账公式
$post['estimaterate'] = $pay[$data['pay']]['estimaterate'];
$ifbudget = eval("return $yga*1.$ygc;");
if($ifbudget > 0)
{
$post['budget'] = eval("return $yga*1.$ygc;");//预估到帐金额
}
}
else if($yga > 0)
{
$post['pay'] = 0;
$ygb = $shop['estimaterate'];//店铺默认到账公式
$post['estimaterate'] = $shop['estimaterate'];
$ifbudget = eval("return $yga*1.$ygb;");
if($ifbudget > 0)
{
$post['budget'] = eval("return $yga*1.$ygb;");//预估到帐金额
}
}
$post['overtime'] = $data['shipping_due_time']-$sjc;//超时时间
$post['buytime'] = substr($data['paid_time'],0,10)-$sjc;//格式化付款时间
$post['dtime'] = substr($data['create_time'],0,10)-$sjc;//订单时间
$post['gtime'] = date('Ymd',substr($data['create_time'],0,10)-$sjc);//格式化订单时间
$post['currencytitle'] = $data['payment']['currency'];//结算币种名称
$post['currency'] = $typeclass[$data['payment']['currency']];//钱币ID
$post['time'] = time();//同步时间
$post['hl'] = '6.4';//汇率
if(isset($data['delivery_option_name']))
{
$post['express'] = (isset($ex[$data['delivery_option_name']]))?$ex[$data['delivery_option_name']]['id']:0;//快递方式
}
if(isset($data['line_items'][0]['tracking_number']))
{
$post['waybill'] = $data['line_items'][0]['tracking_number'];
}
$matching = $this->api->matching($post['quantity'],$post['issku'],$dtc,$money,$int,$dtctitle);
$post['shipremarks'] = $matching['title'];
$post['cost'] = $matching['cost'];
$post['purchase'] = $matching['purchase'];
$post['fpdata'] = $matching['product'];
$post['whlabel'] = $matching['whlabel'];
$post['slpx'] = $matching['wcslpx'];
return $post;
}
public function sign($url,$appSecret,$body='')
{
// 解析URL获取查询参数
$queryParams = array();
parse_str(parse_url($url, PHP_URL_QUERY), $queryParams);
// 排除'sign'和'access_token'
unset($queryParams['sign'], $queryParams['access_token']);
// 按字典顺序排序查询参数
ksort($queryParams);
// 拼接参数为{key}{value}格式
$input = '';
foreach ($queryParams as $key => $value)
{
$input .= $key . $value;
}
// 追加请求路径
$path = parse_url($url, PHP_URL_PATH);
$input = $path . $input;
if ($body)
{
$input .= json_encode($body);
}
// 使用app_secret包裹生成的字符串
$input = $appSecret . $input . $appSecret;
// 生成签名
$sign = hash_hmac('sha256', $input,$appSecret);
return $sign;
}
public function _aasd($arg_array)//DHL
{
$token_header = array(
'x-request-id: 605062090',
'Content-Type: application/json'
);
$ch = curl_init();
$url = 'https://webhub.cndhl.com/dps/dps-auth-server/api/gateway-token/generate';
curl_setopt($ch,CURLOPT_URL,$url);
curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);
curl_setopt($ch, CURLOPT_HTTPHEADER, $token_header);
//curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); //TRUE 将curl_exec()获取的信息以字符串返回,而不是直接输出。
//curl_setopt($ch, CURLOPT_HEADER, true); //返回response头部信息
curl_setopt($ch,CURLOPT_POST, 1);
curl_setopt($ch,CURLOPT_CONNECTTIMEOUT,600);
//设置post数据
$post = array();
$post['consumerCode'] = 'P_f7yzl4675s';
$post['key'] = 'wt)!ftX{1Co$/i{|';
$data = json_encode($post);
curl_setopt($ch, CURLOPT_POSTFIELDS,$data);
$res = curl_exec($ch);
curl_close($ch);
echo $res;
exit;
$y = $this->fullorder->get_number($arg_array[0]);
$fpdata = $y['fpdata'];
$weight = 0;
$fpdataweight = str_replace(array('-163-','-164-','-165-','-166-'),'-',$fpdata);
$list = $fpdataweight;
$list = explode(';',trim($list,';'));
$cs = array();
foreach ($list as $vv)
{
$asd = explode('|',trim($vv,'|'));
$c = explode(',',trim($asd[0],','));
if(!isset($c[1]))
{
continue;
}
else
{
$dweight = $this->weight->get_cc($c);
$cs[] = array($vv,$dweight);
$weight += $dweight*$asd[2];
}
}
echo "";
print_r($cs);
exit;
$w = $this->dhl->get_logistics($y);
echo "";
print_r($w);
echo "";
print_r($y);
exit;
$y = $this->fullorder->get_number("KISS-40318-068");
$express = $this->express->read($y['express']);
if($express['printcode'] == "DHLUSA" && $y['waybill'] != '')
{
$d = $this->dhl->get_data_9610($y);
if($d != 1)
{
$this->allocation->insert(array('order'=>1,'title'=>$y['number'],'content'=>$d));
return '9610失败,'.$d;exit;
}
$this->allocation->insert(array('order'=>9610,'title'=>$y['number']));
}
exit;
$d = $this->dhl->get_data_9610($data);
echo "";
print_r($d);
exit;
$list = $this->whlabel->find_pc("type != 0",'sku,features,warehouse','id,warehouse,sku,type,features');
foreach ($list as $v)
{
$a += $this->whlabel->find_count("sku = '".$v['sku']."' and features = '".$v['features']."' and warehouse = '".$v['warehouse']."' and type = '0'");
}
echo $a;
exit;
$t = $this->shop->token(2);
$data = '?';
//$data .= 'searchCriteria[filterGroups][0][filters][0][field]=Field';//字段名称
//$data .= '&searchCriteria[filterGroups][0][filters][0][value]=Value';//字段内容
//$data .= '&searchCriteria[filterGroups][0][filters][0][conditionType]=ConditionType';//字段类型
//$data .= '&';
$data .= 'searchCriteria[sortOrders][0][field]=created_at';
$data .= '&searchCriteria[sortOrders][0][direction]=DESC';
$data .= '&searchCriteria[pageSize]=10';
$data .= '&searchCriteria[currentPage]=1';
//$url = 'http://pc.hnwmzp.cn/rest/all/V1/orders/items'.$data;
$url = 'http://pc.hnwmzp.cn/rest/V1/orders/109933';
$a = $this->api->su_curl('',$url,$header=array("Authorization: Bearer ".$t,"Content-Type: application/json"),$date_type='json',$timeout=300,$httptype="GET",$userpwd='');
$a = json_decode($a,true);
echo "";
print_r($a);
exit;
/**
$ch = curl_init();
$post = array();
$ai['username'] = 'longyiapi';
$ai['password'] = 'longyi123';
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'http://pc.hnwmzp.cn/rest/V1/integration/admin/token');
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
curl_setopt($ch, CURLOPT_BINARYTRANSFER, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS,$ai);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch,CURLOPT_CONNECTTIMEOUT,900);
$res = curl_exec($ch);
curl_close($ch);
$res = json_decode($res ,true);
echo "";
print_r($res);
//echo $c['data']['order_list']['0']['order_line_list']['0']['tracking_number'];
/**
$y = $this->fullordertt->find_all("dtime < 1708012800 and (whlabel like '%x|%' or whlabel like '%u|%')",'number');
foreach ($y as $v)
{
$a = $this->whlabel->find_all("z");
}
$asd = '';
$a = $this->whlabel->find_all("zd like '%TT-%' and state = 0",'id,zd');
foreach ($a as $v)
{
$c = explode('-',$v['zd']);
if($c[2] < 40215)
{
//$this->whlabel->save(array('zd'=>''),$v['id']);
}
}
echo "";
print_r($asd);
**/
}
public function su_curl($data,$url,$header=array(),$date_type='json',$timeout=300,$httptype="POST",$userpwd='')
{
if ($date_type == 'http_build_query')
{
$data = http_build_query($data);
}
else if ($date_type == 'json')
{
$data = json_encode($data);
}
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_POSTFIELDS,$data);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HEADER, false);
switch ($httptype)
{
case "GET":
curl_setopt($ch, CURLOPT_HTTPGET, true);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "GET");
break;
case "POST":
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");
break;
case "PUT":
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "PUT");
break;
case "DELETE":
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "DELETE");
break;
}
$isSecure = strpos($url, "https://");
if ($isSecure === 0)
{
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
}
if(!empty($header))
{
curl_setopt($ch, CURLOPT_SSLVERSION , 6); //NEW ADDITION
curl_setopt($ch,CURLOPT_HTTPHEADER,$header);
}
if(!empty($userpwd))
{
curl_setopt($ch,CURLOPT_USERPWD,$userpwd);
}
curl_setopt($ch, CURLOPT_TIMEOUT, $timeout);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $timeout);
$result = curl_exec($ch);
curl_close($ch);
return $result;
}
}