<?php // require_once("aws/aws-autoloader.php"); // use Aws\S3\S3Client; //这里是下载zip文件 class TestController extends Controller { public $layout = 'site'; public $renderArr = array(); public function init() { //parent::init(); //check site off //Yii::app()->clientScript->registerCssFile(Yii::app()->baseUrl.CSS_PATH.'common.css'); } public function actionDate() { echo date('Y-m-d H:i:s',time()); } //西班牙邮政国际出单测试 public function actionEs($id) { header("Content-Type: text/html; charset=UTF-8"); $order = ServiceOrder::model()->findByPk($id); $Peso = array(); $DATOSADUANA = array(); foreach($order->Pacel as $pacel){ $Peso[] = array('TipoPeso'=>'R','Valor'=>$pacel->weight*1000); foreach($pacel->Items as $k=>$item){ $DATOSADUANA[] = array( "Cantidad"=>$item->num, "Descripcion"=>$item->cate, "Pesoneto"=>$item->weight*1000, "Valorneto"=>'0'.str_replace('.','',sprintf("%.2f",$item->value*$item->num)), ); } } $city_en = explode(',' ,$order->Ship->city_en); if(count($city_en) == 3){ $city = $city_en[1]; }else{ $city = $city_en[0]; } $params = array( "FechaOperacion"=>date('Y-m-d H:i:s',time()), "CodEtiquetador"=>'XXX1',//'5DDE',//'XXX1', "Care"=>"000000", "TotalBultos"=>1, "ModDevEtiqueta"=>2, "Remitente"=>array( "Identificacion"=>array( "Nombre"=>$order->Bill->fullname_en ), "DatosDireccion"=>array( "Direccion"=>$order->Bill->address1_en.' '.$order->Bill->address2_en, "Localidad"=>$order->Bill->city_en, "Provincia"=>$order->Bill->city_en ), "CP"=>$order->Bill->zip, "Telefonocontacto"=>$order->Bill->phone, "Email"=>$order->Bill->email ), "Destinatario"=>array( "Identificacion"=>array( "Nombre"=>$order->Ship->fullname_en ), "DatosDireccion"=>array( "Direccion"=>$order->Ship->address1_en, "Localidad"=>$city ), //"CP"=>"361000", "ZIP"=>$order->Ship->zip, "Pais"=>$order->Country->code, "Telefonocontacto"=>$order->Ship->phone, "Email"=>$order->Ship->email ), "Envio"=>array( "CodProducto"=>$order->Service->router_code, "TipoFranqueo"=>"FP", "ModalidadEntrega"=>"ST", "Pesos"=>array( "Peso"=>$Peso ), "ValoresAnadidos"=>array("ImporteSeguro"=>"0"), //"Largo"=>80, //intval($pacel->length), //"Alto"=>60, //intval($pacel->height), //"Ancho"=>60,//intval($pacel->width), "Observaciones1"=>"LALLALALALALLALALALALLALALALALLALALALALLALALA", "Observaciones2"=>"gdfgfdgfdgggdfgdfgdfgdfgdfgdfgfdgfdgfdsfdsfds", //"Observaciones3"=>"11111111111111111111111111111111111111111111", //"ReferenciaCliente"=>"test111", //"ReferenciaCliente2"=>"zzzzzz", //"ReferenciaCliente3"=>"555555", "InstruccionesDevolucion"=>"D", "Aduana"=>array( "TipoEnvio"=>2, "DescAduanera"=>array( "DATOSADUANA"=>$DATOSADUANA ), ), ) ); // print_r($params); // exit; $wsdl = "http://".$_SERVER['SERVER_NAME']."/attache/wsdl/PreRegistro.wsdl"; try{ $client = new SoapClient($wsdl, array( 'login' => 'wusutest',//'w0998456',//'wusutest', 'password' => 'mAHB9yi0',//'Vtz3GLGs',//'mAHB9yi0', 'exceptions' => 1, 'location'=>'https://preregistroenviospre.correos.es/preregistroenvios',//'https://preregistroenvios.correos.es/preregistroenvios',//"https://preregistroenviospre.correos.es/preregistroenvios", "stream_context" => stream_context_create(array( 'ssl' => array( 'verify_peer' => false, 'verify_peer_name' => false, ) ) ) )); //$client->__setLocation("https://preregistroenviospre.correos.es/preregistroenvios"); //$client->__setLocation("https://preregistroenvios.correos.es/preregistroenvios"); $result = $client->PreRegistro($params); // print_r($result);die(); if($result->Resultado==0){ $path = 'attache/orders/L/'.$id.'/'; if (!file_exists($path)) { mkdir($path, 0777, true); } $filename = $order->track.'.pdf'; $pdf = $result->Bulto->Etiqueta->Etiqueta_pdf->Fichero; file_put_contents($path.$filename,$pdf); // echo $path.$filename;die(); // $order->status = 2; // // // // $order->save(false); // // foreach ($order->Pacel as $pacel) { // $pacel->ems = $result->Bulto->CodEnvio; // $pacel->note = $result->Bulto->CodManifiesto; // $pacel->status = $order->status; // $pacel->save(false); // // } //保存cn23 pdf文件 $this->get_cn23($order,$path,$result->Bulto->CodEnvio); }else{ //var_dump($result);die(); $error = 'errorcode:'.$result->BultoError->Error.'error:'.$result->BultoError->DescError; $order->errors = $error; if($order->save(false)){ $re = array('status'=>0,'message'=>$error); echo CJSON::encode($re); Yii::app()->end(); } } }catch(SoapFault$e){ $order->errors = $e->getMessage(); if($order->save(false)){ //var_dump($e);die(); $re = array('status'=>0,'message'=>$e->getMessage()); echo CJSON::encode($re); Yii::app()->end(); } } } public function actionC23() { $params = [ 'codCertificado'=>"EJ000000924ES" ]; $wsdl = "https://preregistroenviospre.correos.es/preregistroenvios?wsdl"; $client = new SoapClient($wsdl, array( 'login' => 'wusutest', 'password' => 'mAHB9yi0', 'trace'=>1, 'location'=>"https://preregistroenviospre.correos.es/preregistroenvios", "stream_context" => stream_context_create(array( 'ssl' => array( 'verify_peer' => false, 'verify_peer_name' => false, ) ) ) )); //$client->__setLocation("https://preregistroenviospre.correos.es/preregistroenvios"); try{ $result = $client->DocumentacionAduaneraCN23CP71Op($params); //var_dump($client);die(); if($result->Resultado==0){ print_r($result); }else{ die(CJSON::encode(array('status'=>0,'msg'=>$result->MotivoError))); } }catch(SoapFault $e){ var_dump($e);die(); die(CJSON::encode(array('status'=>0,'msg'=>$e->getMessage()))); } } public function get_cn23($order,$path,$ems) { $params = [ 'codCertificado'=>$ems ]; $wsdl = "https://preregistroenviospre.correos.es/preregistroenvios?wsdl"; $client = new SoapClient($wsdl, array( 'login' => 'wusutest', 'password' => 'mAHB9yi0', 'trace'=>1, 'location'=>"https://preregistroenviospre.correos.es/preregistroenvios", "stream_context" => stream_context_create(array( 'ssl' => array( 'verify_peer' => false, 'verify_peer_name' => false, ) ) ) )); //$client->__setLocation("https://preregistroenviospre.correos.es/preregistroenvios"); try{ $result = $client->DocumentacionAduaneraCN23CP71Op($params); if($result->Resultado==0){ $filename = "cn23_".$ems.".pdf"; $pdf = $result->Fichero; file_put_contents($path.$filename,$pdf); echo $path.$filename;die(); return $path.$filename; }else{ die(CJSON::encode(array('status'=>0,'msg'=>$result->MotivoError))); } }catch(SoapFault $e){ die(CJSON::encode(array('status'=>0,'msg'=>$e->getMessage()))); } } public function actionJn() { header("Content-Type: text/html; charset=UTF-8"); ini_set('soap.wsdl_cache_enabled',0); ini_set('soap.wsdl_cache_ttl',0); $order = ServiceOrder::model()->findByPk(1489); $Peso = array(); $DATOSADUANA = array(); foreach($order->Pacel as $pacel){ $Peso[] = array('TipoPeso'=>'R','Valor'=>$pacel->weight*1000); foreach($pacel->Items as $k=>$item){ $DATOSADUANA[] = array( "Cantidad"=>$item->num, "Descripcion"=>$item->cate, "Pesoneto"=>$item->weight*1000, "Valorneto"=>'0'.str_replace('.','',$item->value) ); } } $city_en = explode(',' ,$order->Ship->city_en); if(count($city_en) == 3){ $city = $city_en[1]; }else{ $city = $city_en[0]; } $params = array( "FechaOperacion"=>date('Y-m-d H:i:s',time()), "CodEtiquetador"=>'XXX1',//'XXX1', "Care"=>"000000", "TotalBultos"=>1, "ModDevEtiqueta"=>2, "Remitente"=>array( "Identificacion"=>array( "Nombre"=>$order->Bill->fullname_en ), "DatosDireccion"=>array( "Direccion"=>$order->Bill->address1_en.' '.$order->Bill->address2_en, "Localidad"=>$order->Bill->city_en, "Provincia"=>$order->Bill->city_en ), "CP"=>$order->Bill->zip, "Telefonocontacto"=>$order->Bill->phone, "Email"=>$order->Bill->email ), "Destinatario"=>array( "Identificacion"=>array( "Nombre"=>$order->Ship->fullname_en ), "DatosDireccion"=>array( "Direccion"=>$order->Ship->address1_en, "Localidad"=>$city ), //"CP"=>$order->Ship->zip, "ZIP"=>$order->Ship->zip, "Pais"=>$order->Country->code, "Telefonocontacto"=>$order->Ship->phone, "Email"=>$order->Ship->email ), "Envio"=>array( "CodProducto"=>$order->Service->router_code, "TipoFranqueo"=>"FP", "ModalidadEntrega"=>"ST", "Pesos"=>array( "Peso"=>$Peso ), "ValoresAnadidos"=>array("ImporteSeguro"=>"090050"), // "Largo"=> intval($pacel->length), // "Alto"=> intval($pacel->height), // "Ancho"=>intval($pacel->width), "ReferenciaCliente"=>$pacel->ref, "InstruccionesDevolucion"=>"D", "Aduana"=>array( "TipoEnvio"=>$pacel->shipment_type, "DescAduanera"=>array( "DATOSADUANA"=>$DATOSADUANA ), ), ) ); //print_r($params);die(); $wsdl = "http://".$_SERVER['SERVER_NAME']."/attache/wsdl/PreRegistro.wsdl"; try{ $client = new SoapClient($wsdl, array( 'login' => 'wusutest', 'password' => 'mAHB9yi0', 'exceptions' => 1, 'location'=>"https://preregistroenviospre.correos.es/preregistroenvios", "stream_context" => stream_context_create(array( 'ssl' => array( 'verify_peer' => false, 'verify_peer_name' => false, ) ) ) )); //$client->__setLocation("https://preregistroenviospre.correos.es/preregistroenvios"); $result = $client->PreRegistro($params); //print_r($result);die(); if($result->Resultado==0){ $filename = $order->track.'11111.pdf'; $pdf = $result->Bulto->Etiqueta->Etiqueta_pdf->Fichero; $path = 'attache/orders/L/test/'; if (!file_exists($path)) { mkdir($path, 0777, true); } file_put_contents($path.$filename,$pdf); echo $path.$filename;die(); $files[] = $path.$filename; $order->status = 2; $order->save(false); foreach ($order->Pacel as $pacel) { $pacel->ems = $result->Bulto->CodEnvio; $pacel->note = $result->Bulto->CodManifiesto; $pacel->status = $order->status; $pacel->save(false); } //保存cn23 pdf文件 echo $path.$filename; }else{ $error = 'errorcode:'.$result->BultoError->Error.'error:'.$result->BultoError->DescError; $order->errors = $error; if($order->save(false)){ $re = array('status'=>0,'message'=>$error); echo CJSON::encode($re); Yii::app()->end(); } } }catch(SoapFault$e){ $order->errors = $e->getMessage(); if($order->save(false)){ $re = array('status'=>0,'message'=>$e->getMessage()); echo CJSON::encode($re); Yii::app()->end(); } } } public function actionMailSend() { $order = ServiceOrder::model()->findByPk(1049); //var_dump($order->Pacel);die(); $track = array(); foreach ($order->Pacel as $value) { $track[] = $value->ems; } $maildata=array('email'=>$order->Member->first_name.$order->Member->last_name,'track'=>implode(',',$track));} public function actionUps($id){ $order = ServiceOrder::model()->findByPk($id); $path = 'attache/orders/L/' . $id . '/'; if (!file_exists($path)) { mkdir($path, 0777, true); } require_once('ups/init.php'); $pf = new Ups(); // if ($order->is_bookPu == 0) { // $pickup_responjson = $pf->pickupViaJson('test', $order); // // $pickup_res = json_decode($pickup_responjson); // if ($pickup_res->PickupCreationResponse->Response->ResponseStatus->Code == '1') { // // $order->is_bookPu = 1; // $order->pickup_code = $pickup_res->PickupCreationResponse->PRN; // $order->save(false); // $is_book = true; // } else { // $order->errors = $order->errors . '/[ups data error]' . $pickup_res->Fault->detail->Errors->ErrorDetail->PrimaryErrorCode->Description; // $order->save(false); // $re = array('status' => 0, 'message' => 'ups data error, UPS pickup cannot be booked.' . $pickup_res->Fault->detail->Errors->ErrorDetail->PrimaryErrorCode->Description); // echo CJSON::encode($re); // Yii::app()->end(); // } // // } else { // $is_book = true; // } $is_book = true; if ($is_book) { $imgpath = 'attache/image/L/' . $order->id; // print_r($res); // exit; $i = 0; while (true) { usleep(500000);//0.5秒 $i++; $responjson = $pf->shipmentViaJson('test', $order); //print_r($responjson); //exit; if ($responjson) { $html2pdf = Yii::app()->ePdf->HTML2PDF('P', 'A4', 'en', true, 'UTF-8', 0); $html2pdf->SetDefaultFont('stsongstdlight'); $html2pdf->pdf->SetDisplayMode('fullpage'); $res = json_decode($responjson); if ($res->ShipmentResponse->Response->ResponseStatus->Code == '1') { if (!file_exists($imgpath)) { mkdir($imgpath, 0777, true); } $order->ukcode = $res->ShipmentResponse->ShipmentResults->ShipmentIdentificationNumber; $order->save(false); $imgs = array(); if (is_array($res->ShipmentResponse->ShipmentResults->PackageResults)) { foreach ($res->ShipmentResponse->ShipmentResults->PackageResults as $key => $packageResult) { $order->Pacel[$key]->ems = $packageResult->TrackingNumber; $order->Pacel[$key]->save(false); $data = base64_decode($packageResult->ShippingLabel->GraphicImage); //TrackingNumber //echo '<img alt="Embedded Image" src="https://img-blog.csdnimg.cn/2022010618283477275.gif'.$packageResult->ShippingLabel->GraphicImage.'" />'; $filepath = $imgpath . '/' . $packageResult->TrackingNumber . '.gif'; file_put_contents($filepath, $data); $thumb = new Imagick(); $thumb->readImage($filepath); $thumb->resizeImage(1200, 686, Imagick::FILTER_LANCZOS, 1); $thumb->writeImage($filepath); $thumb->clear(); $thumb->destroy(); array_push($imgs, $filepath); } } else { $order->Pacel[0]->ems = $res->ShipmentResponse->ShipmentResults->PackageResults->TrackingNumber; $data = base64_decode($res->ShipmentResponse->ShipmentResults->PackageResults->ShippingLabel->GraphicImage); $filepath = $imgpath . '/' . $res->ShipmentResponse->ShipmentResults->PackageResults->TrackingNumber . '.gif'; file_put_contents($filepath, $data); $thumb = new Imagick(); $thumb->readImage($filepath); $thumb->resizeImage(1200, 686, Imagick::FILTER_LANCZOS, 1); $thumb->writeImage($filepath); $thumb->clear(); $thumb->destroy(); array_push($imgs, $filepath); //array_push($imgs, $res->ShipmentResponse->ShipmentResults->PackageResults->ShippingLabel->GraphicImage); //echo '<img alt="Embedded Image" src="https://img-blog.csdnimg.cn/2022010618283477275.gif'.$res->ShipmentResponse->ShipmentResults->PackageResults->ShippingLabel->GraphicImage.'" />'; } $upslabels = array(); $upslabels['img'] = $imgs; // print_r($labels); // exit; $html2pdf->writeHTML($this->renderPartial('/label/ups', array('labels' => $upslabels), true)); $filename = $order->ukcode . '.pdf'; $html2pdf->Output($path . $filename, 'F'); $files[] = $path . $filename; break; } else { if ($res->Fault) { // print_r($res->Fault); $order->errors = $order->errors . '/[ups data error]' . $res->Fault->detail->Errors->ErrorDetail->PrimaryErrorCode->Description; $order->save(false); $re = array('status' => 0, 'message' => 'ups data error, UPS label cannot be created.'); echo CJSON::encode($re); Yii::app()->end(); //echo '/[ups data error]'.$res->Fault->detail->Errors->ErrorDetail->PrimaryErrorCode->Description; } } exit(); } if ($i == 20) { $order->errors = $order->errors . '/[ups server connect error]'; $order->save(false); //echo '/[ups server connect error]'; $re = array('status' => 0, 'message' => 'ups server connect error, UPS label cannot be created.'); echo CJSON::encode($re); Yii::app()->end(); } } } print_r($files);exit; } public function actionPdfBToZip(){ $invoiceB = Invoiceb::model()->findAll(); $files = []; foreach($invoiceB as $item){ if($item->path && file_exists($item->path)){ $files[] = $item->path; } } $path = 'attache/'.time().'.zip'; $zip = new ZipArchive(); $res = $zip->open($path, ZipArchive::CREATE); if ($res === TRUE) { foreach ($files as $file) { //这里直接用原文件的名字进行打包,也可以直接命名,需要注意如果文件名字一样会导致后面文件覆盖前面的文件,所以建议重新命名 $new_filename = substr($file, strrpos($file, '/') + 1); $zip->addFile($file, $new_filename); } } //关闭文件 $zip->close(); echo $path; } public function actionPdfToZip(){ $invoice = Invoice::model()->findAll(); $files = []; foreach($invoice as $item){ if($item->path && file_exists($item->path)){ $files[] = $item->path; } } $path = 'attache/'.time().'.zip'; $zip = new ZipArchive(); $res = $zip->open($path, ZipArchive::CREATE); if ($res === TRUE) { foreach ($files as $file) { //这里直接用原文件的名字进行打包,也可以直接命名,需要注意如果文件名字一样会导致后面文件覆盖前面的文件,所以建议重新命名 $new_filename = substr($file, strrpos($file, '/') + 1); $zip->addFile($file, $new_filename); } } //关闭文件 $zip->close(); echo $path; } public function actionInvoiceC($id) { $invoice = Invoicec::model()->findByPk($id); $this->renderPartial('cinvoice',['invoice'=>$invoice]); } public function actionCHtmlToZip() { $path = 'attache/20190315/'; if (!file_exists($path)) { mkdir($path, 0777, true); } $invoice = Invoicec::model()->findAll(array('condition'=>"id>=118")); $files = []; foreach($invoice as $one){ $url = 'http://old.espost.es/'.$this->createUrl("test/invoicec",array('id'=>$one->id)); $fileName = 'C_invoice_'.$one->id.'.pdf'; $comment = "wkhtmltopdf --margin-bottom 20 --page-size A4 "."'$url'"." ".$path.$fileName." 2>&1"; exec($comment); $files[] = $path . $fileName; } $path = 'attache/'.time().'.zip'; $zip = new ZipArchive(); $res = $zip->open($path, ZipArchive::CREATE); if ($res === TRUE) { foreach ($files as $file) { //这里直接用原文件的名字进行打包,也可以直接命名,需要注意如果文件名字一样会导致后面文件覆盖前面的文件,所以建议重新命名 $new_filename = substr($file, strrpos($file, '/') + 1); $zip->addFile($file, $new_filename); } } //关闭文件 $zip->close(); echo $path; } }
转载于:https://my.oschina.net/u/2423404/blog/3022919