getElectronicsheetConfig($param[ 'site_id' ]); $config_info = $config[ 'data' ][ 'value' ]; if (empty($config_info)) { return $this->error('', '请先配置电子面单'); } if (empty($param[ 'template_id' ])) { return $this->error('', '请先配置电子面单模板'); } //获取电子模板信息 $template = $electronicsheet_model->getExpressElectronicsheetInfo([ [ 'id', '=', $param[ 'template_id' ] ] ]); if (empty($template[ 'data' ])) { return $this->error('', '电子面单模板不存在'); } //获取店铺信息 $shop_model = new Shop(); $shop = $shop_model->getShopInfo([ [ 'site_id', '=', $param[ 'site_id' ] ] ]); $shop_info = $shop[ 'data' ]; if (empty($shop_info[ 'name' ])) { return $this->error('', '店铺联系地址中联系人姓名未设置'); } if (empty($shop_info[ 'province_name' ]) || empty($shop_info[ 'city_name' ]) || empty($shop_info[ 'district_name' ]) || empty($shop_info[ 'address' ])) { return $this->error('', '店铺联系地址中联系地址未设置'); } if (empty($shop_info[ 'telephone' ]) && empty($shop_info[ 'mobile' ])) { return $this->error('', '店铺联系地址中联系方式未设置'); } $result = $this->electronicsheetDelivery($param, $config_info, $template[ 'data' ], $shop_info); if (isset($result[ 'code' ]) && $result[ 'code' ] < 0) { return $result; } else { return $this->success($result); } } /** * 电子面单发货 * @param $delivery_id //包裹id * @param $config_info //快递鸟配置信息 * @param $template //电子面单模板 * @param $shop_info //发货人信息 * @param $goods_array //商品信息 * @return array */ public function electronicsheetDelivery($param, $config_info, $template, $shop_info) { //获取订单信息 $order_info = model('order')->getInfo([ [ 'order_id', '=', $param[ 'order_id' ] ] ]); //获取快递公司编码 $express_company = model('express_company_template')->getInfo([ [ 'company_id', '=', $template[ 'company_id' ] ] ], 'express_no,print_style'); $print_style = json_decode($express_company[ 'print_style' ], true); //获取商品信息 if (empty($param[ 'order_goods_id_array' ])) { $goods_array = model('order_goods')->getInfo( [ [ 'order_id', '=', $param[ 'order_id' ] ] ], 'sku_name as GoodsName,num as GoodsQuantity' ); } else { $goods_array = model('order_goods')->getInfo( [ [ 'order_goods_id', 'in', $param[ 'order_goods_id_array' ] ], [ 'order_id', '=', $param[ 'order_id' ] ] ], 'sku_name as GoodsName,num as GoodsQuantity' ); } //替换商品名称中的特殊字符 ' " # & + < > % \ $search = array ( "'", '"', '&', '+', '<', '>', '%', "\\", '#', "and" ); $goods_array[ 'GoodsName' ] = str_replace($search, '', $goods_array[ 'GoodsName' ]); //实例化快递鸟 $config = [ 'EBusinessID' => $config_info[ 'kdniao_user_id' ], 'AppKey' => $config_info[ 'kdniao_api_key' ] ]; $kdniao = new Kdniao($config); //构造电子面单提交信息 $eorder = []; $eorder[ 'CustomerName' ] = $template[ 'customer_name' ]; $eorder[ 'CustomerPwd' ] = $template[ 'customer_pwd' ]; $eorder[ 'SendSite' ] = $template[ 'send_site' ]; $eorder[ 'SendStaff' ] = $template[ 'send_staff' ]; $eorder[ 'MonthCode' ] = $template[ 'month_code' ]; $eorder[ 'ShipperCode' ] = $express_company[ 'express_no' ];//快递公司编码 $eorder[ 'OrderCode' ] = $order_info[ 'order_no' ];//订单号 $eorder[ 'PayType' ] = $template[ 'postage_payment_method' ]; //邮费支付方式 $eorder[ 'ExpType' ] = 1; //快递类型 $eorder[ 'TemplateSize' ] = $print_style[ $template[ 'print_style' ] ][ 'template_size' ]; //模板规格 //发货人信息 $sender = []; $sender[ 'Name' ] = $shop_info[ 'name' ]; $sender[ 'Mobile' ] = $shop_info[ 'mobile' ]; $sender[ 'Tel' ] = $shop_info[ 'telephone' ]; $sender[ 'ProvinceName' ] = $shop_info[ 'province_name' ]; $sender[ 'CityName' ] = $shop_info[ 'city_name' ]; $sender[ 'ExpAreaName' ] = $shop_info[ 'district_name' ]; $sender[ 'Address' ] = $shop_info[ 'address' ]; $sender[ 'PostCode' ] = '000000'; //获取收货人信息 $area_model = new Address(); $province_name = $area_model->getAreasInfo([ [ 'id', '=', $order_info[ 'province_id' ] ] ], 'name'); $city_name = $area_model->getAreasInfo([ [ 'id', '=', $order_info[ 'city_id' ] ] ], 'name'); $district_name = $area_model->getAreasInfo([ [ 'id', '=', $order_info[ 'district_id' ] ] ], 'name'); $receiver = []; $receiver[ 'Name' ] = $order_info[ 'name' ]; $receiver[ 'Mobile' ] = $order_info[ 'mobile' ]; $receiver[ 'ProvinceName' ] = $province_name[ 'data' ][ 'name' ]; $receiver[ 'CityName' ] = $city_name[ 'data' ][ 'name' ]; $receiver[ 'ExpAreaName' ] = empty($district_name[ 'data' ][ 'name' ]) ? '' : $district_name[ 'data' ][ 'name' ]; $receiver[ 'Address' ] = $order_info[ 'address' ]; $receiver[ 'PostCode' ] = '000000'; $commodity[] = $goods_array; $eorder[ 'Sender' ] = $sender; $eorder[ 'Receiver' ] = $receiver; $eorder[ 'Commodity' ] = $commodity; //商品信息 $eorder[ 'IsReturnPrintTemplate' ] = 1; //是否返回电子模板 $jsonResult = $kdniao->submitEOrder($eorder); $result = json_decode($jsonResult, true); if (isset($result[ 'ResultCode' ])) { if ($result[ 'ResultCode' ] == '100' || $result[ 'ResultCode' ] == '106') { return $result; } } return $this->error('', $result[ 'Reason' ]); } }