express) { return [ 'code' => 1, 'msg' => '请选择快递公司' ]; } $order_type = 0; if ((int)$this->type === 0) { $order_id = $this->order_id; } else { if (((int)$this->type === 2)) { $supplier_form = new SupplierForm(); $supplier_form->order_id = (string)$this->order_id; $res = $supplier_form->supplierOrderList($this->order->supplier_id); if ($res['code'] === 0) { $cloud_order = $res['data']['list'][0]; } else { return [ 'code' => 1, 'msg' => '订单信息错误' . $res['msg'] ]; } } else { $supplier_form = new SupplierForm(); $supplier_form->order_id = $this->order_id; $res = $supplier_form->supplierPurchaseOrderList(); if ($res['code'] === 0) { $cloud_order = $res['data']['list'][0]; $order_id = OrderTransit::findOne(['cloud_order_id' => $cloud_order['id']])->order_id; } else { return [ 'code' => 1, 'msg' => '订单信息错误' . $res['msg'] ]; } } } if (in_array((int)$this->type, [0, 1])) { $order = Order::findOne([ 'id' => $order_id, 'mch_id' => get_mch_id(), ]); } else { $order = PurchaseOrder::findOne([ 'cloud_order_id' => $this->order_id, 'is_delete' => 0 ]); } if (!$order) { return [ 'code' => 1, 'msg' => '订单错误' ]; } if (isset($cloud_order)) { $order->order_no = $cloud_order['order_no']; } $express = Express::getOne($this->express); if (!$express) { return [ 'code' => 1, 'msg' => '快递公司不正确' ]; } $where = [ 'order_id' => $order->id, 'order_type' => $order_type ]; if (get_supplier_id()) { $kdniao_mch_id = Option::get('kdniao_mch_id', get_supplier_id(), 'supplier'); $where['supplier_id'] = get_supplier_id(); } else { $kdniao_mch_id = Option::get('kdniao_mch_id', $this->store_id, 'store'); $where['store_id'] = $this->store_id; } $where['EBusinessID'] = $kdniao_mch_id['value']; $orderExpressList = OrderExpress::find()->where($where) ->all(); if (!empty($orderExpressList)) { foreach ($orderExpressList as $orderExpress) { if ($orderExpress->express_code == $express['code']) { $result = [ 'EBusinessID' => $orderExpress->EBusinessID, 'Order' => json_decode($orderExpress->order, true), 'PrintTemplate' => $orderExpress->printTeplate ]; return [ 'code' => 0, 'msg' => '成功', 'data' => $result ]; } } $orderCode = $order->order_no . "-" . count($orderExpressList); } else { $orderCode = $order->order_no; } // 构造电子面单提交信息 $eorder = []; if (get_supplier_id()) { $delivery = Delivery::findOne(['express_id' => $express['id'], 'is_delete' => 0, 'supplier_id' => get_supplier_id()]); } else { $delivery = Delivery::findOne(['express_id' => $express['id'], 'is_delete' => 0, 'store_id' => $this->store_id]); } if (!$delivery) { $delivery_id = 0; $pay_type = 1; } else { $delivery_id = $delivery->id; $pay_type = 3; $eorder['CustomerName'] = $delivery->customer_name; $eorder['CustomerPwd'] = $delivery->customer_pwd; $eorder['SendSite'] = $delivery->send_site; $eorder['MonthCode'] = $delivery->month_code; if ($delivery->template_size) { $eorder["TemplateSize"] = $delivery->template_size; } } if (get_supplier_id()) { $sender_list = Sender::findOne(['delivery_id' => $delivery_id, 'is_delete' => 0, 'supplier_id' => get_supplier_id()]); } else { $sender_list = Sender::findOne(['delivery_id' => $delivery_id, 'is_delete' => 0, 'store_id' => $this->store_id]); } if (!$sender_list) { return [ 'code' => 1, 'msg' => '请先设置发件人信息' ]; } $eorder["ShipperCode"] = $express['code']; $eorder["OrderCode"] = $orderCode; $eorder["PayType"] = $pay_type; $eorder["ExpType"] = 1; $eorder["IsReturnPrintTemplate"] = 1; $eorder["IsSendMessage"] = 1; $sender = []; $sender["Company"] = $sender_list->company; $sender["Name"] = $sender_list->name; $sender["Mobile"] = $sender_list->mobile ? $sender_list->mobile : $sender_list->tel; $sender["ProvinceName"] = $sender_list->province; $sender["CityName"] = $sender_list->city; $sender["ExpAreaName"] = $sender_list->exp_area; $sender["Address"] = $sender_list->address; $sender["PostCode"] = $sender_list->post_code; $receiver = []; $receiver["Name"] = $order->name; $receiver["Mobile"] = $order->mobile; $address = ['province' => '空', 'city' => '空', 'district' => '空', 'detail' => $order->address]; $receiver_address = $order->address_data ? json_decode($order->address_data, true) : $address; $receiver["ProvinceName"] = $receiver_address['province']; $receiver["CityName"] = $receiver_address['city']; $receiver["ExpAreaName"] = $receiver_address['district']; $receiver["Address"] = str_replace(PHP_EOL, '', $receiver_address['detail']); $receiver["PostCode"] = $this->post_code; if (isset($cloud_order)) { $good_list = $cloud_order['goods_list']; } else { $form = new OrderListForm(); $good_list = $form->getOrderGoodsList($order->id); } $good = $good_list[0]; $commodity = []; // TODO 商品信息暂时不显示 foreach ($good_list as $index => $good) { $commodityOne = []; $desc = ""; $good['attr_list'] = ($good['attr']['attr_list'] ?? $good['attr']) ?? $good['attr_list']; if (is_string($good['attr_list'])) { $good['attr_list'] = json_decode($good['attr_list'], true); } foreach ($good['attr_list'] as $key => $value) { $desc .= ','; $desc .= ($value['attr_group_name'] ?? '') . '' . $value['attr_name']; } $commodityOne["GoodsName"] = $good['name'] .'_'. $desc; // $commodityOne["GoodsName"] = '商品'; $commodityOne["GoodsCode"] = ""; $commodityOne["Goodsquantity"] = $good['num']; $commodityOne["GoodsPrice"] = ""; $commodityOne["GoodsWeight"] = number_format($good['weight'] / 1000, 2, '.', ''); $commodityOne['GoodsDesc'] = ""; $commodityOne['GoodsVol'] = ""; $commodity[] = $commodityOne; } $eorder["Sender"] = $sender; $eorder["Receiver"] = $receiver; $eorder["Commodity"] = $commodity; // 调用电子面单 $jsonParam = Json::encode($eorder); // $jsonParam = JSON($eorder);//兼容php5.2(含)以下 // echo "电子面单接口提交内容:
".$jsonParam; $jsonResult = KdOrder::submitEOrder($jsonParam, $this->store_id, get_supplier_id()); // echo "

电子面单提交结果:
".$jsonResult; //解析电子面单返回结果 $result = json_decode($jsonResult, true); // echo "

返回码:".$result["ResultCode"]; if ($result["ResultCode"] == "100" || $result["ResultCode"] == '106') { // echo "
是否成功:".$result["Success"]; $form = new OrderExpress(); $form->store_id = $this->store_id; $form->supplier_id = get_supplier_id(); $form->order_id = $order->id; $form->EBusinessID = $result['EBusinessID']; $form->order = Json::encode($result['Order']); $form->printTeplate = $result['PrintTemplate']; $form->is_delete = 0; $form->order_type = $order_type; $form->express_code = $express['code']; $form->save(); return [ 'code' => 0, 'msg' => '成功', 'data' => $result ]; } else { // echo "
电子面单下单失败"; return [ 'code' => 1, 'msg' => $result['Reason'], 'data' => $result ]; } } private function getExpressCode($express, $type) { $express_afters = [ '快递', '快运', '物流', '速运', ]; $express = Express::find()->orderBy('sort')->where([ 'name' => $express, 'type' => $type, ])->one(); if ($express) { return $express->code; } foreach ($express_afters as $after) { $express = str_replace($after, '', $express); } $express = Express::find()->orderBy('sort')->where([ 'AND', ['LIKE', 'name', $express,], ['type' => $type,] ])->one(); if ($express) { return $express; } return ''; } }