From d00b478958f7fecdc5fd88d135488f257333ad6d Mon Sep 17 00:00:00 2001 From: lyt Date: Mon, 20 May 2019 13:32:01 +0800 Subject: [PATCH 01/35] =?UTF-8?q?=E6=B5=8B=E8=AF=95=E8=B4=A6=E5=8F=B7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- webht/third_party/vendorPlanSync/controllers/Tulanduo.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/webht/third_party/vendorPlanSync/controllers/Tulanduo.php b/webht/third_party/vendorPlanSync/controllers/Tulanduo.php index 330f6b24..92750fce 100644 --- a/webht/third_party/vendorPlanSync/controllers/Tulanduo.php +++ b/webht/third_party/vendorPlanSync/controllers/Tulanduo.php @@ -29,8 +29,8 @@ class Tulanduo extends CI_Controller */ private $send_host = array( "30" => array( - "userId" => 512 - ,"key" => "4d9bde5ce79d6093e4a98bebbd3892c2" + "userId" => 6035 + ,"key" => "3bd16efd5f4165378f144da1f4829996" ) ,"1" => array( "userId" => 512 From 8da48d918018b8416cfd12ae52a0bdafef794f7f Mon Sep 17 00:00:00 2001 From: lyt Date: Tue, 21 May 2019 09:47:36 +0800 Subject: [PATCH 02/35] =?UTF-8?q?=E6=9C=AA=E5=AE=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../vendorPlanSync/controllers/Tulanduo.php | 98 +++++++++++++------ .../vendorPlanSync/controllers/index.php | 9 +- .../vendorPlanSync/libraries/trippest.php | 2 - .../models/BIZ_orders_model.php | 23 ++++- .../vendorPlanSync/models/Group_model.php | 21 ++-- 5 files changed, 105 insertions(+), 48 deletions(-) diff --git a/webht/third_party/vendorPlanSync/controllers/Tulanduo.php b/webht/third_party/vendorPlanSync/controllers/Tulanduo.php index 92750fce..427937c9 100644 --- a/webht/third_party/vendorPlanSync/controllers/Tulanduo.php +++ b/webht/third_party/vendorPlanSync/controllers/Tulanduo.php @@ -3,6 +3,8 @@ if (!defined('BASEPATH')) exit('No direct script access allowed'); +GLOBAL $__HAINA_VEI__; + class Tulanduo extends CI_Controller { /** Live */ @@ -56,6 +58,7 @@ class Tulanduo extends CI_Controller parent::__construct(); mb_regex_encoding("UTF-8"); bcscale(4); + $GLOBALS['__HAINA_VEI__'] = 30561; $this->load->helper('array'); $this->load->library('trippest'); $this->load->model('Group_model'); @@ -65,7 +68,7 @@ class Tulanduo extends CI_Controller $this->load->model('TuLanDuo_addOrUpdateRouteOrderContentBuilder', 'tldOrderBuilder'); // $this->output->enable_profiler(TRUE); - $this->vendor_ids = $this->trippest->tulanduo_vei_sn; + $this->vendor_ids = array(1343,30548,29188); } public function order_push($order=null) @@ -243,6 +246,7 @@ class Tulanduo extends CI_Controller */ public function push_trippest($vas=null) { +log_message('error',__LINE__); // return "[Tulanduo>push_trippest] Done. "; // test /** 目的地 */ $userId = $this->send_host["30"]["userId"]; @@ -262,33 +266,63 @@ class Tulanduo extends CI_Controller $orderinfo = $this->BIZ_order->get_orderinfo_detail($gri_sn, $vei_sn_str); if(empty($orderinfo)) {return "[Tulanduo>push_trippest] Not found order detail. ";} $COLI_ID = $orderinfo[0]->COLI_ID; - $set_pvt = strval($orderinfo[0]->COLI_PVT); - $travelFees = $this->BIZ_order->get_paymentDetails($COLI_ID); + $set_pvt = strval($orderinfo[0]->is_pvt); + // TODO 增加收款方参数, 增加代收款项 +log_message('error',__LINE__); + $vei_with_haina = $GLOBALS['__HAINA_VEI__'] . "," . $vei_sn_str; + $all_payment = $this->BIZ_order->get_paymentDetails($COLI_ID, $vei_with_haina); + $travel_fees = array(); + $replace_collections = array(); +log_message('error',__LINE__); + foreach ($all_payment as $kall => $vall) { + if (in_array($vall->payment_vei, array($GLOBALS['__HAINA_VEI__'], 0)) ) { + $travel_fees[] = $vall; + } else { + $replace_collections[] = $vall; + } + } +log_message('error',__LINE__); // 按产品拆分 todo:按订单类型拆分? 单团/拼团 $fill_order = array(); $processed_date = array(); $processed_cold = array(); foreach ($orderinfo as $ko => $cold) { + // $cold->package_info = array(); if ( ! in_array($cold->COLD_SN, $processed_cold) && $cold->pag_code != '') { $processed_cold[] = $cold->COLD_SN; $all_package = $this->trippest->tour_code($cold->pag_code); $pag_info = $this->BIZ_order->get_packageDetails(my_implode("'",",",$all_package)); if ($set_pvt==='1') { + // $cold->package_info[] = $cold->pag_code; $fill_order[0]["cold"][] = $cold; - $fill_order[0]["package_info"] = $pag_info; // todo ??? 这里是否丢失了产品 + // $fill_order[0]["package_info"] = $pag_info; // todo ??? 这里是否丢失了产品 } else { $fill_order[$cold->pag_code]["cold"][] = $cold; $fill_order[$cold->pag_code]["package_info"] = $pag_info; } } } + // 多产品PVT的合并 + $pvt_pagcode = array(); + if ($set_pvt==='1') { + foreach ($fill_order[0]['cold'] as $kcd => $vcd) { + $multi_package = $this->trippest->tour_code($vcd->pag_code); + $pvt_pagcode = array_merge($pvt_pagcode, $multi_package); + } + $fill_order[0]["package_info"] = $this->BIZ_order->get_packageDetails(my_implode("'",",",$pvt_pagcode)); + } // $fill_order = array_values($fill_order); $i=0; $take_apart = count($fill_order)>1 ? true : false; foreach ($fill_order as $kf => $vf) { $i++; $this->tldOrderBuilder->resetBizContent(); - $order_type = intval($vf["package_info"][0]->PAG_ExtendType)===39009 ? 1 : 2; + $order_type = $set_pvt; + if ($set_pvt==='0') { + $code_type_arr = array_map(function($pag) { return intval($pag->PAG_ExtendType); }, $vf["package_info"]); + $order_type = in_array(39009, $code_type_arr) ? 1 : 2; + // $order_type = intval($vf["package_info"][0]->PAG_ExtendType)===39009 ? 1 : 2; + } $last_code = count($vf["package_info"])-1; $last_date = count($vf["cold"])-1; $tour_code = ""; @@ -306,10 +340,8 @@ class Tulanduo extends CI_Controller $tour_code = mb_strtoupper($vf["cold"][0]->pag_code); } $agcOrderNo .= "(" . $vf["cold"][0]->operator . ")"; - $order_remark = ""; - if (trim($vf['cold'][0]->GUT_TEL) != "") { - $order_remark = "预定人电话:" . trim($vf["cold"][0]->GUT_TEL); - } + $order_remark = ""; // todo + $COLD_SN_str = implode(',', array_map( function($element){return $element->COLD_SN;}, $vf["cold"] )) ; $guestlist = $this->BIZ_order->get_guestlist($COLD_SN_str); $this->tldOrderBuilder->setUserId($userId) @@ -329,12 +361,23 @@ class Tulanduo extends CI_Controller // ->setToTraffic($toTraffic) // ->setBackTraffic($backTraffic) ; + // 客人列表 foreach ($guestlist as $key => $vg) { + $this_otherinfo = ""; $this->tldOrderBuilder->setCustomersName($key, $vg->BPE_FirstName . " " . $vg->BPE_LastName ) ->setCustomersPeopleType($key, ($vg->BPE_GuestType==1 ? "成人" : "儿童")) ->setCustomersDocumentType($key, "护照") // Passport No. ->setCustomersDocumentNo($key, $vg->BPE_Passport) - ->setCustomersOtherInfo($key, $this->BIZ_order->GetNationalityName($vg->BPE_Nationality)); + // ->setCustomersOtherInfo($key, $this->BIZ_order->GetNationalityName($vg->BPE_Nationality)) + ; + $this_otherinfo .= $this->BIZ_order->GetNationalityName($vg->BPE_Nationality); + if (trim($vf['cold'][0]->GUT_TEL) != "" && $key===0) { + // $order_remark = "预定人电话:" . trim($vf["cold"][0]->GUT_TEL); + $this_otherinfo .= "; 电话:"; + $this_otherinfo .= trim($vf["cold"][0]->GUT_POST)!=="" ? "+".trim($vf["cold"][0]->GUT_POST) : "" ; + $this_otherinfo .= " " . trim($vf["cold"][0]->GUT_TEL); + $this->tldOrderBuilder->setCustomersOtherInfo($key, $this_otherinfo); + } } $scheduleDetails = $this->BIZ_order->get_scheduleDetails($COLD_SN_str); $schedule_obj = array(); @@ -363,6 +406,8 @@ class Tulanduo extends CI_Controller if (trim($hotels[0]->POI_HotelAddress) != "") { $this_content .= "\r\n酒店地址:" . $hotels[0]->POI_HotelAddress; } + $this_content .= trim($hotels[0]->POI_HotelCheckInName)!=="" ? "\r\n入住人:".$hotels[0]->POI_HotelCheckInName : ""; + $this_content .= trim($hotels[0]->POI_HotelCheckIn)!=="" ? "\r\n入住日期:".$hotels[0]->POI_HotelCheckIn : ""; if ($hotels[0]->POI_FlightsNo) { $this_content .= "\r\n航/车次:" . $hotels[0]->POI_FlightsNo; if ($hotels[0]->POI_FromCity || $hotels[0]->POI_ToCity) { @@ -457,7 +502,7 @@ class Tulanduo extends CI_Controller } // 拆分的订单团款录第一个 if ($i===1) { - foreach ($travelFees as $kf => $vf) { + foreach ($travel_fees as $kf => $vf) { $this->tldOrderBuilder->setTravelFeesType($kf, "Per Group") ->setTravelFeesMoney($kf, $vf->GAI_SSJE) ->setTravelFeesNum($kf, 1) @@ -465,32 +510,21 @@ class Tulanduo extends CI_Controller ->setTravelFeesSumMoney($kf, $vf->GAI_SSJE) ->setTravelFeesRemark($kf, $vf->GAI_Memo); } + foreach ($replace_collections as $krc => $vrc) { + $this->tldOrderBuilder->setReplaceCollectionsType($krc, "Per Group") + ->setReplaceCollectionsMoney($krc, $vrc->GAI_SSJE) + ->setReplaceCollectionsRemark($krc, $vrc->GAI_Memo); + } } - // 查询是否变更 + // 查询是否变更 TODO deprecated $sync_orderstate = 10; $vps_sn = 0; $vendor_orderid = 0; - $plan_detail_page_url = "http://p.mycht.cn/Cooperate/Plan_Detail.aspx?GSN=" . $gri_sn; - $plan_detail_page = "
计划下载:$plan_detail_page_url
"; - if (intval($is_send_vary)===1) { - $vps = $this->Group_model->get_sync_info($vas_sn, $tour_code); - if ( ! empty($vps)) { - $vps_sn = $vps->VPS_SN; - $vendor_orderid = $vps->VPS_externalId; - $sync_orderstate = 11; - $modifyLogInfo = "$plan_detail_page
$change_info
"; - $this->tldOrderBuilder->setOrderId($vendor_orderid) - ->setModifyLogInfo($modifyLogInfo) - ; - } - } else { - $modifyLogInfo = $plan_detail_page; - $this->tldOrderBuilder->clearModifyLogInfo(); - $this->tldOrderBuilder->setModifyLogInfo($modifyLogInfo) - ; - } + $this->tldOrderBuilder->clearModifyLogInfo(); $resp = $this->excute_curl($this->neworder_url, $this->tldOrderBuilder); // $resp = '{"status":1,"errMsg":"","responseData":{"orderId":' . rand(1000,9999) . '}}'; // test +echo $this->tldOrderBuilder->getBizContent(); +log_message('error',$resp); $response = json_decode($resp); if ($response->status == 1) { /** VendorPlanSync */ @@ -516,7 +550,7 @@ class Tulanduo extends CI_Controller $this->Group_model->set_plan_received($vas_sn); } } - return "[Tulanduo>push_trippest] Done. "; + return "[Tulanduo>push_trippest] Done. " . $COLI_ID; } public function tourguide_update($input, $vps, $eva) diff --git a/webht/third_party/vendorPlanSync/controllers/index.php b/webht/third_party/vendorPlanSync/controllers/index.php index 95f4d734..243df62d 100644 --- a/webht/third_party/vendorPlanSync/controllers/index.php +++ b/webht/third_party/vendorPlanSync/controllers/index.php @@ -21,10 +21,10 @@ class Index extends CI_Controller { * * 使用供应商平台登陆账号获取接口的key */ - public function index() + public function index($GRI_SN=0) { $auto_vendor_str = implode(",", $this->vendor->auto_vendor); - return $this->push(0, $auto_vendor_str); + return $this->push($GRI_SN, $auto_vendor_str); } public function push($GRI_SN=0, $vendor_str=null) @@ -32,6 +32,7 @@ class Index extends CI_Controller { $start_date = date('Y-m-d'); $end_date = date('Y-m-d 23:59:59', strtotime("+2 months")); $ready_to_send = $this->Group_model->get_plan_not_received(1, $GRI_SN, $vendor_str, $start_date, $end_date); +log_message('error',var_export($ready_to_send, 1)); if (empty($ready_to_send)) { return $this->output->set_output("empty"); } @@ -41,8 +42,8 @@ class Index extends CI_Controller { require_once($controller_name . ".php"); $vendor_class = new $controller_name(); $call_fun = $vendor_class->order_push($order); - log_message('error',"Call [$controller_name>order_push] " . $order->GRI_SN); - return $this->output->set_output($call_fun . $order->GRI_SN); + log_message('error',"Call [$controller_name>order_push] " . $order->GRI_SN . ". " . $call_fun); + return $this->output->set_output($call_fun . ". " . $order->GRI_SN); } return $this->output->set_output("Not found vendor function. " . $order->GRI_SN); } diff --git a/webht/third_party/vendorPlanSync/libraries/trippest.php b/webht/third_party/vendorPlanSync/libraries/trippest.php index dfc48fe6..ebba5748 100644 --- a/webht/third_party/vendorPlanSync/libraries/trippest.php +++ b/webht/third_party/vendorPlanSync/libraries/trippest.php @@ -10,8 +10,6 @@ class Trippest $this->ci =& get_instance(); } - public $tulanduo_vei_sn = array(1343,30548,29188); - public function tour_name($pag_code) { $name = ""; diff --git a/webht/third_party/vendorPlanSync/models/BIZ_orders_model.php b/webht/third_party/vendorPlanSync/models/BIZ_orders_model.php index bef796ca..9e3cf896 100644 --- a/webht/third_party/vendorPlanSync/models/BIZ_orders_model.php +++ b/webht/third_party/vendorPlanSync/models/BIZ_orders_model.php @@ -41,6 +41,7 @@ class BIZ_Orders_model extends CI_Model { cold.COLD_ServiceSN2, cold.COLD_ServiceCity, gut.GUT_NationalityID, + isnull(COLI_PVT, 0) is_pvt, (select opi2_name from tourmanager.dbo.operatorinfo2 where opi2_opi_sn=coli_opi_id and opi2_lgc=2) as operator, * FROM BIZ_ConfirmLineInfo coli @@ -102,18 +103,32 @@ class BIZ_Orders_model extends CI_Model { $sql = "SELECT * from BIZ_PackageOrderInfo poi where poi.POI_COLD_SN IN ($COLD_SN_str)"; +log_message('error',$sql); return $this->HT->query($sql)->result(); } - public function get_paymentDetails($COLI_ID) + /*! + * [get_paymentDetails description] + * @date 2019-05-22 + * VEI: + * * 30561 桂林海纳国旅 + * GAI_Type + * * 15006 地接代收 + * * 15008 现付 + * * 15017 内部转账 + * * 15020 地接社代收 + */ + public function get_paymentDetails($COLI_ID, $vei_sn_str) { - $sql = "SELECT * + $sql = "SELECT ISNULL(bgai.GAI_VEI_SN,0) payment_vei + ,* FROM BIZ_GroupAccountInfo bgai INNER JOIN BIZ_ConfirmLineInfo coli ON bgai.GAI_COLI_SN=coli.COLI_SN - WHERE bgai.DeleteFlag=0 AND bgai.GAI_Type NOT IN (15006,15008,15017) - AND ISNULL(bgai.GAI_VEI_SN,0)<>1343 + WHERE bgai.DeleteFlag=0 --AND bgai.GAI_Type NOT IN (15006,15008,15017) + AND ISNULL(bgai.GAI_VEI_SN,0) in (0,$vei_sn_str) AND bgai.GAI_SQJE > 0 AND coli_ID = '$COLI_ID'"; +log_message('error',$sql); $query = $this->HT->query($sql); return $query->result(); } diff --git a/webht/third_party/vendorPlanSync/models/Group_model.php b/webht/third_party/vendorPlanSync/models/Group_model.php index e17b8b5e..18ed0239 100644 --- a/webht/third_party/vendorPlanSync/models/Group_model.php +++ b/webht/third_party/vendorPlanSync/models/Group_model.php @@ -24,14 +24,16 @@ class Group_model extends CI_Model { $sql .= $gri_sn!==0 ? $gri_sql : " and VAS_IsCancel=0 and VAS_Delete=0 and vas.DeleteFlag=0 and VAS_IsSendSucceed=1 - and VAS_IsConfirm=0 + -- and VAS_IsConfirm=0 and EOI_GetDate between '$start_date' and '$end_date' and VAS_VEI_SN in ($vendor_str) - and GRI_operator in (161,443,61) -- test - and GRI_OrderType=227002 -- test - and (VAS_IsReceive=0 or (VAS_SendTime > ISNULL(VAS_ReceiveTime,0))) "; - $sql .= " order by EOI_GetDate asc, vas.VAS_IsConfirm asc"; -// log_message('error',$sql); + and GRI_operator in (161,443,61) -- test + and GRI_OrderType=227002 -- test + and (VAS_IsReceive=0 -- or (VAS_SendTime > ISNULL(VAS_ReceiveTime,0)) + ) + "; + $sql .= " order by EOI_GetDate asc,vas.VAS_SendTime asc, vas.VAS_IsConfirm asc"; +log_message('error',$sql); return $this->HT->query($sql)->result(); } @@ -229,6 +231,8 @@ class Group_model extends CI_Model { public function set_plan_received($vas_sn=0) { $sql = "UPDATE VendorArrangeState set VAS_IsReceive=1,VAS_ReceiveTime=GETDATE() where VAS_SN=? "; +log_message('error',$sql); + return $sql; // testing return $this->HT->query($sql, array($vas_sn)); } @@ -256,6 +260,9 @@ class Group_model extends CI_Model { public function insert_VendorPlanSync($sync_arr=array()) { + $ss = $this->HT->insert_string('VendorPlanSendout', $sync_arr); // testing +log_message('error',$ss); + return $ss; $this->HT->insert('VendorPlanSendout', $sync_arr); return $this->HT->query("SELECT MAX(VPS_SN) VPS_SN from VendorPlanSendout") ->row()->VPS_SN; @@ -265,6 +272,8 @@ class Group_model extends CI_Model { { $where = " VPS_SN=" . $vps; $update_sql = $this->HT->update_string('VendorPlanSendout', $sync_arr, $where); +log_message('error',$update_sql); + return $update_sql; // testing return $this->HT->query($update_sql); } From 8f7044c9f038acca771a9ddb4e5c7a7d677aca8b Mon Sep 17 00:00:00 2001 From: lyt Date: Thu, 23 May 2019 10:18:51 +0800 Subject: [PATCH 03/35] =?UTF-8?q?Trippest=E8=87=AA=E5=8A=A8=E7=94=9F?= =?UTF-8?q?=E6=88=90:=E5=88=A0=E9=99=A4=E5=A4=9A=E4=BD=99=E7=9A=84?= =?UTF-8?q?=E6=97=A5=E6=9C=9F=E6=9D=A1=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- webht/third_party/trippestOrderSync/models/orders_model.php | 2 -- 1 file changed, 2 deletions(-) diff --git a/webht/third_party/trippestOrderSync/models/orders_model.php b/webht/third_party/trippestOrderSync/models/orders_model.php index 54a1c821..8e490339 100644 --- a/webht/third_party/trippestOrderSync/models/orders_model.php +++ b/webht/third_party/trippestOrderSync/models/orders_model.php @@ -192,8 +192,6 @@ class Orders_model extends CI_Model { LEFT JOIN BIZ_ConfirmLineDetail cold ON cold.COLD_COLI_SN=coli.COLI_SN where GCI_combineNo is not null and GCI_combineNo not in ('cancel','forbidden') - -- 今天更新一次 - and gci.GCI_createTime < '$last_update_time' -- 已生成账单的不再自动同步 and NOT exists ( select 1 from report_order where ordernumber=COLI_ID and orderstats=1 From 75928b61cc1c44f91db79480d4ca30e480c742d8 Mon Sep 17 00:00:00 2001 From: lyt Date: Thu, 23 May 2019 10:25:33 +0800 Subject: [PATCH 04/35] =?UTF-8?q?Trippest=E8=87=AA=E5=8A=A8=E7=94=9F?= =?UTF-8?q?=E6=88=90=E8=B4=A6=E5=8D=95:=E5=88=A0=E9=99=A4=E4=BB=8A?= =?UTF-8?q?=E5=A4=A9=E7=9A=84=E6=9B=B4=E6=96=B0=E6=97=A5=E6=9C=9F=E6=9D=A1?= =?UTF-8?q?=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- webht/third_party/trippestOrderSync/models/orders_model.php | 2 -- 1 file changed, 2 deletions(-) diff --git a/webht/third_party/trippestOrderSync/models/orders_model.php b/webht/third_party/trippestOrderSync/models/orders_model.php index 54a1c821..8e490339 100644 --- a/webht/third_party/trippestOrderSync/models/orders_model.php +++ b/webht/third_party/trippestOrderSync/models/orders_model.php @@ -192,8 +192,6 @@ class Orders_model extends CI_Model { LEFT JOIN BIZ_ConfirmLineDetail cold ON cold.COLD_COLI_SN=coli.COLI_SN where GCI_combineNo is not null and GCI_combineNo not in ('cancel','forbidden') - -- 今天更新一次 - and gci.GCI_createTime < '$last_update_time' -- 已生成账单的不再自动同步 and NOT exists ( select 1 from report_order where ordernumber=COLI_ID and orderstats=1 From 9a98e63bb83734992047689bf0751159883e2c5f Mon Sep 17 00:00:00 2001 From: lyt Date: Thu, 23 May 2019 13:57:07 +0800 Subject: [PATCH 05/35] =?UTF-8?q?pvt=E5=9B=A2=E8=A1=8C=E7=A8=8B=E4=BA=A7?= =?UTF-8?q?=E5=93=81=E5=90=88=E5=B9=B6;=E4=BB=A3=E6=94=B6=E9=87=91?= =?UTF-8?q?=E9=A2=9D=E8=AE=B0=E5=BD=95;=E8=AE=A2=E5=8D=95=E6=97=A5?= =?UTF-8?q?=E5=BF=97;=E8=AE=A2=E5=8D=95=E5=A4=87=E6=B3=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../vendorPlanSync/controllers/Tulanduo.php | 25 +++++++++---------- .../models/BIZ_orders_model.php | 19 ++++++++++++++ 2 files changed, 31 insertions(+), 13 deletions(-) diff --git a/webht/third_party/vendorPlanSync/controllers/Tulanduo.php b/webht/third_party/vendorPlanSync/controllers/Tulanduo.php index 427937c9..abb2979c 100644 --- a/webht/third_party/vendorPlanSync/controllers/Tulanduo.php +++ b/webht/third_party/vendorPlanSync/controllers/Tulanduo.php @@ -246,7 +246,6 @@ class Tulanduo extends CI_Controller */ public function push_trippest($vas=null) { -log_message('error',__LINE__); // return "[Tulanduo>push_trippest] Done. "; // test /** 目的地 */ $userId = $this->send_host["30"]["userId"]; @@ -267,13 +266,11 @@ log_message('error',__LINE__); if(empty($orderinfo)) {return "[Tulanduo>push_trippest] Not found order detail. ";} $COLI_ID = $orderinfo[0]->COLI_ID; $set_pvt = strval($orderinfo[0]->is_pvt); - // TODO 增加收款方参数, 增加代收款项 -log_message('error',__LINE__); + // 增加收款方参数, 增加代收款项 $vei_with_haina = $GLOBALS['__HAINA_VEI__'] . "," . $vei_sn_str; $all_payment = $this->BIZ_order->get_paymentDetails($COLI_ID, $vei_with_haina); $travel_fees = array(); $replace_collections = array(); -log_message('error',__LINE__); foreach ($all_payment as $kall => $vall) { if (in_array($vall->payment_vei, array($GLOBALS['__HAINA_VEI__'], 0)) ) { $travel_fees[] = $vall; @@ -281,28 +278,24 @@ log_message('error',__LINE__); $replace_collections[] = $vall; } } -log_message('error',__LINE__); - // 按产品拆分 todo:按订单类型拆分? 单团/拼团 + // 按产品拆分 按订单类型拆分? 单团/拼团; 未设置则按产品类型:接送 $fill_order = array(); $processed_date = array(); $processed_cold = array(); foreach ($orderinfo as $ko => $cold) { - // $cold->package_info = array(); if ( ! in_array($cold->COLD_SN, $processed_cold) && $cold->pag_code != '') { $processed_cold[] = $cold->COLD_SN; $all_package = $this->trippest->tour_code($cold->pag_code); $pag_info = $this->BIZ_order->get_packageDetails(my_implode("'",",",$all_package)); if ($set_pvt==='1') { - // $cold->package_info[] = $cold->pag_code; $fill_order[0]["cold"][] = $cold; - // $fill_order[0]["package_info"] = $pag_info; // todo ??? 这里是否丢失了产品 } else { $fill_order[$cold->pag_code]["cold"][] = $cold; $fill_order[$cold->pag_code]["package_info"] = $pag_info; } } } - // 多产品PVT的合并 + // 多产品PVT的合并,避免丢失产品 $pvt_pagcode = array(); if ($set_pvt==='1') { foreach ($fill_order[0]['cold'] as $kcd => $vcd) { @@ -314,14 +307,15 @@ log_message('error',__LINE__); // $fill_order = array_values($fill_order); $i=0; $take_apart = count($fill_order)>1 ? true : false; + $coli_sn = 0; foreach ($fill_order as $kf => $vf) { $i++; + $coli_sn = $vf['cold'][0]->COLI_SN; $this->tldOrderBuilder->resetBizContent(); $order_type = $set_pvt; if ($set_pvt==='0') { $code_type_arr = array_map(function($pag) { return intval($pag->PAG_ExtendType); }, $vf["package_info"]); $order_type = in_array(39009, $code_type_arr) ? 1 : 2; - // $order_type = intval($vf["package_info"][0]->PAG_ExtendType)===39009 ? 1 : 2; } $last_code = count($vf["package_info"])-1; $last_date = count($vf["cold"])-1; @@ -340,7 +334,11 @@ log_message('error',__LINE__); $tour_code = mb_strtoupper($vf["cold"][0]->pag_code); } $agcOrderNo .= "(" . $vf["cold"][0]->operator . ")"; - $order_remark = ""; // todo + $order_remark = ""; + if ($i===1) { // 只写一次备注.备注中可能包含代收信息,避免多次收取 + $order_remark_arr = array_filter(array_map( function($element){return $element->COLD_vendorMemo;}, $vf["cold"] )) ; + $order_remark = empty($order_remark_arr) ? "" : implode("\n", $order_remark_arr) ; + } $COLD_SN_str = implode(',', array_map( function($element){return $element->COLD_SN;}, $vf["cold"] )) ; $guestlist = $this->BIZ_order->get_guestlist($COLD_SN_str); @@ -356,7 +354,6 @@ log_message('error',__LINE__); ->setTravelDate(strstr($vf["cold"][0]->COLD_StartDate, " ", true)) ->setLeavedDate($end_date) ->setOrderRemark($order_remark) - // ->setOrderRemark(trim($orderinfo[0]->COLI_Memo . "\r\n" . $orderinfo[0]->COLD_Memo . "\r\n" . $orderinfo[0]->COLD_MemoText)) // todo 抵离交通 // ->setToTraffic($toTraffic) // ->setBackTraffic($backTraffic) @@ -543,8 +540,10 @@ log_message('error',$resp); ); if ($vps_sn === 0) { $sync_id = $this->Group_model->insert_VendorPlanSync($sync_ret); + $this->BIZ_orders_model->insert_biz_order_log($coli_sn, "vendorPlanSendout_" . $tour_code); } else { $update = $this->Group_model->update_VendorPlanSync($vps_sn, $sync_ret); + $this->BIZ_orders_model->insert_biz_order_log($coli_sn, "vendorPlanUpdateSendout_" . $tour_code); } /** VendorArrangeState VAS_IsReceive */ $this->Group_model->set_plan_received($vas_sn); diff --git a/webht/third_party/vendorPlanSync/models/BIZ_orders_model.php b/webht/third_party/vendorPlanSync/models/BIZ_orders_model.php index 9e3cf896..3765469a 100644 --- a/webht/third_party/vendorPlanSync/models/BIZ_orders_model.php +++ b/webht/third_party/vendorPlanSync/models/BIZ_orders_model.php @@ -35,6 +35,7 @@ class BIZ_Orders_model extends CI_Model { public function get_orderinfo_detail($gri_sn, $vei_sn_str) { $sql = "SELECT coli.COLI_ID, + coli.COLI_SN, coli.COLI_Department, cold.COLD_ServiceSN, (select PAG_Code from biz_packageinfo where PAG_SN=cold.COLD_ServiceSN) as pag_code, @@ -1831,5 +1832,23 @@ log_message('error',$sql); $query = $this->HT->query($sql); } + /*! + * 写入商务订单操作记录 + * @param [int] $coli_sn + * @param [string] $log_info varchar(100) + */ + public function insert_biz_order_log($coli_sn, $log_info) + { + $db_column = array( + "BOL_COLI_SN" => $coli_sn + ,"BOL_OPI_SN" => 29 + ,"BOL_OPType" => $log_info + ,"BOL_OPTime" => date('Y-m-d H:i:s') + ,"BOL_Creator" => 29 + ,"BOL_CreateTime" => date('Y-m-d H:i:s') + ); + return $this->HT->insert("BIZ_OrderOperationLog", $db_column); + } + } From 1f5d2652ab44a3afd766c53aa7f96f1891c7d2f5 Mon Sep 17 00:00:00 2001 From: lyt Date: Thu, 23 May 2019 16:06:38 +0800 Subject: [PATCH 06/35] =?UTF-8?q?=E6=94=B6=E6=AC=BE=E8=AE=B0=E5=BD=95,?= =?UTF-8?q?=E4=BB=A3=E6=94=B6=E5=9B=A2=E6=AC=BE=E8=AE=B0=E5=BD=95:?= =?UTF-8?q?=E5=88=86=E5=88=AB=E5=90=88=E5=B9=B6=E4=B8=BA=E4=B8=80=E6=9D=A1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../vendorPlanSync/controllers/Tulanduo.php | 46 ++++++++++++------- 1 file changed, 29 insertions(+), 17 deletions(-) diff --git a/webht/third_party/vendorPlanSync/controllers/Tulanduo.php b/webht/third_party/vendorPlanSync/controllers/Tulanduo.php index abb2979c..23f9b2b3 100644 --- a/webht/third_party/vendorPlanSync/controllers/Tulanduo.php +++ b/webht/third_party/vendorPlanSync/controllers/Tulanduo.php @@ -269,15 +269,31 @@ class Tulanduo extends CI_Controller // 增加收款方参数, 增加代收款项 $vei_with_haina = $GLOBALS['__HAINA_VEI__'] . "," . $vei_sn_str; $all_payment = $this->BIZ_order->get_paymentDetails($COLI_ID, $vei_with_haina); - $travel_fees = array(); - $replace_collections = array(); + $paid_to_trippest = array(); + $pay_to_vendor = array(); foreach ($all_payment as $kall => $vall) { if (in_array($vall->payment_vei, array($GLOBALS['__HAINA_VEI__'], 0)) ) { - $travel_fees[] = $vall; + $paid_to_trippest[] = $vall; } else { - $replace_collections[] = $vall; + $pay_to_vendor[] = $vall; } } + // 收款合并为一条 + $travel_fees = new stdClass(); + $travel_fees = $paid_to_trippest[0]; + $travel_fees->GAI_SSJE = 0; + foreach ($paid_to_trippest as $ktf => $vtf) { + $travel_fees->GAI_SSJE = bcadd($travel_fees->GAI_SSJE, $vtf->GAI_SSJE); + } + // 代收合并为一条 + $replace_collections = new stdClass(); + $replace_collections = $pay_to_vendor[0]; + $replace_collections->GAI_SSJE = 0; + $replace_collections->GAI_Memo = ""; + foreach ($pay_to_vendor as $ktv => $vtv) { + $replace_collections->GAI_SSJE = bcadd($replace_collections->GAI_SSJE, $vtv->GAI_SSJE); + $replace_collections->GAI_Memo .= $vtv->GAI_Memo; + } // 按产品拆分 按订单类型拆分? 单团/拼团; 未设置则按产品类型:接送 $fill_order = array(); $processed_date = array(); @@ -499,19 +515,15 @@ class Tulanduo extends CI_Controller } // 拆分的订单团款录第一个 if ($i===1) { - foreach ($travel_fees as $kf => $vf) { - $this->tldOrderBuilder->setTravelFeesType($kf, "Per Group") - ->setTravelFeesMoney($kf, $vf->GAI_SSJE) - ->setTravelFeesNum($kf, 1) - ->setTravelFeesUnit($kf, 1) - ->setTravelFeesSumMoney($kf, $vf->GAI_SSJE) - ->setTravelFeesRemark($kf, $vf->GAI_Memo); - } - foreach ($replace_collections as $krc => $vrc) { - $this->tldOrderBuilder->setReplaceCollectionsType($krc, "Per Group") - ->setReplaceCollectionsMoney($krc, $vrc->GAI_SSJE) - ->setReplaceCollectionsRemark($krc, $vrc->GAI_Memo); - } + $this->tldOrderBuilder->setTravelFeesType(0, "Per Group") + ->setTravelFeesMoney(0, $travel_fees->GAI_SSJE) + ->setTravelFeesNum(0, 1) + ->setTravelFeesUnit(0, 1) + ->setTravelFeesSumMoney(0, $travel_fees->GAI_SSJE); + // ->setTravelFeesRemark(0, $travel_fees->GAI_Memo); + $this->tldOrderBuilder->setReplaceCollectionsType(0, "Per Group") + ->setReplaceCollectionsMoney(0, $replace_collections->GAI_SSJE) + ->setReplaceCollectionsRemark(0, $replace_collections->GAI_Memo); } // 查询是否变更 TODO deprecated $sync_orderstate = 10; From 3e25fa5d36ac1ce44b78509e8926bc5f3784ba20 Mon Sep 17 00:00:00 2001 From: cyc Date: Thu, 23 May 2019 16:14:20 +0800 Subject: [PATCH 07/35] =?UTF-8?q?=E9=83=A8=E7=BD=B2TA=E6=8A=93=E5=8F=96?= =?UTF-8?q?=E4=BB=A3=E7=A0=81=E5=88=B0=E7=BD=91=E5=89=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../tripadvisor_spider/config/config.php | 8 +- .../tripadvisor_spider/controllers/index.php | 61 +++++++-- .../models/Tripadvisor_Review_model.php | 34 +++++ .../views/third_party_input.php | 122 +++++++++++++++++- 4 files changed, 207 insertions(+), 18 deletions(-) diff --git a/application/third_party/tripadvisor_spider/config/config.php b/application/third_party/tripadvisor_spider/config/config.php index 022d61f8..3b452f64 100644 --- a/application/third_party/tripadvisor_spider/config/config.php +++ b/application/third_party/tripadvisor_spider/config/config.php @@ -18,10 +18,10 @@ $config['tripadvisor_website'] = array( 'Zhangjiajie' => 'http://www.tripadvisor.com/Attraction_Review-g494933-d8077695-Reviews{PAGENUM}China_Highlights_Zhangjiajie_Day_Tour-Zhangjiajie_Hunan.html', 'HongKong' => 'https://www.tripadvisor.com/Attraction_Review-g294217-d10243951-Reviews{PAGENUM}China_Highlights_Hong_Kong-Hong_Kong.html', 'Panda' => 'https://www.tripadvisor.com/Attraction_Review-g297463-d11489225-Reviews{PAGENUM}China_Highlights-Chengdu_Sichuan.html', - 'tp_Beijing' => 'https://www.tripadvisor.com/Attraction_Review-g294212-d4006739-Reviews-The_Trippest_Mini_Group_Tours-Beijing.html', - 'tp_Xian' => 'https://www.tripadvisor.com/Attraction_Review-g298557-d10999897-Reviews-Xi_an_Trippest_Mini_Group_Tours-Xi_an_Shaanxi.html', - 'tp_Shanghai' => 'https://www.tripadvisor.com/Attraction_Review-g308272-d6222868-Reviews-Shanghai_Trippest_Mini_Group_Tours-Shanghai.html', - 'tp_Guilin' => 'https://www.tripadvisor.com/Attraction_Review-g298556-d14121459-Reviews-Trippest_Mini_Group_Tours-Guilin_Guangxi.html' + 'tp_Beijing' => 'https://www.tripadvisor.com/Attraction_Review-g294212-d4006739-Reviews{PAGENUM}-The_Trippest_Mini_Group_Tours-Beijing.html', + 'tp_Xian' => 'https://www.tripadvisor.com/Attraction_Review-g298557-d10999897-Reviews{PAGENUM}-Xi_an_Trippest_Mini_Group_Tours-Xi_an_Shaanxi.html', + 'tp_Shanghai' => 'https://www.tripadvisor.com/Attraction_Review-g308272-d6222868-Reviews{PAGENUM}-Shanghai_Trippest_Mini_Group_Tours-Shanghai.html', + 'tp_Guilin' => 'https://www.tripadvisor.com/Attraction_Review-g298556-d14121459-Reviews{PAGENUM}-Trippest_Mini_Group_Tours-Guilin_Guangxi.html' ); diff --git a/application/third_party/tripadvisor_spider/controllers/index.php b/application/third_party/tripadvisor_spider/controllers/index.php index 6b7e266f..2b8124b6 100644 --- a/application/third_party/tripadvisor_spider/controllers/index.php +++ b/application/third_party/tripadvisor_spider/controllers/index.php @@ -267,24 +267,40 @@ class Index extends CI_Controller { } } - public function get_destination_reviews($destination = null){ + public function get_destination_reviews($destination = null,$pagenum = null){ + set_time_limit(0); $ta_website = $this->config->item('tripadvisor_website'); //根据传入的目的地简码获取TA的相应评论列表 if(isset($ta_website[$destination])){ $url = $ta_website[$destination]; + if($pagenum != ''){ + $url = str_replace('{PAGENUM}','-or'.$pagenum,$url); + }else{ + $url = str_replace('{PAGENUM}','',$url); + } //根据url获取页面内容 $content = GET_HTTP($url); - //进行页面解析 $html_object = str_get_html($content); - - //获取第一页列表上的url - foreach ($html_object->find('.reviewSelector .quote a') as $a_info){ - $url = 'https://www.tripadvisor.com'.$a_info->href; - + $return = new stdClass(); + $return->urls = array(); + //获取每个页面上的url + foreach ($html_object->find('.reviewSelector .quote a') as $reviews_url){ + array_push($return->urls,'https://www.tripadvisor.com'.$reviews_url->href); } + print_r(json_encode($return)); + } + } + + //查看抓取到的所有信息 + public function get_all_reviews($destination){ + if($destination != ''){ + $all_reviews = $this->Tripadvisor_Review_model->get_all_reviews($destination); + $return = array(); + $return['list'] = $all_reviews; + print_r(json_encode($return)); } } @@ -294,8 +310,8 @@ class Index extends CI_Controller { $destination = $this->input->get_post('destination'); $html_num = $this->input->get_post('html_num'); - //$url = 'https://www.tripadvisor.com/ShowUserReviews-g294212-d4006739-r666168101-The_Trippest_Mini_Group_Tours-Beijing.html'; - $destination = 'tp_Beijing'; + //$url = 'https://www.tripadvisor.com/ShowUserReviews-g308272-d6222868-r599123490-Shanghai_Trippest_Mini_Group_Tours-Shanghai.html'; + //$destination = 'tp_Beijing'; if($url != ''){ $content = GET_HTTP($url); @@ -307,15 +323,28 @@ class Index extends CI_Controller { //提取局部,不做整个页面的寻找元素,提升效率 $meta_inner = $html_object->find('.meta_inner'); + $detail_data->user_loc = ''; + $detail_data->pic = array(); foreach($meta_inner as $detail_info){ //记录该条记录的id $detail_data->html_id = $html_num; + //获取评论者帐号 foreach($detail_info->find('.info_text') as $review_name){ $detail_data->review_name = $review_name->first_child()->innertext; } + //获取评论者帐号 + foreach($detail_info->find('.info_text .userLoc strong') as $user_loc){ + $detail_data->user_loc = $user_loc->innertext; + } + + //抓取评论时间 + foreach($detail_info->find('.ratingDate') as $ratingDate){ + $detail_data->rating_date = date('Y-m-d',strtotime($ratingDate->title)); + } + //获取评论者ID foreach($detail_info->find('.reviewSelector') as $review_id){ $detail_data->review_id = str_replace('review_','',$review_id->id); @@ -337,13 +366,21 @@ class Index extends CI_Controller { $detail_data->content = $content->innertext; } - //获取评论时间 - foreach($detail_info->find('.prw_reviews_stay_date_hsx') as $review_date){ - $detail_data->review_date = str_replace('Date of experience: ','',$review_date->innertext); + //获取体验时间 + foreach($detail_info->find('.prw_reviews_stay_date_hsx') as $experience_date){ + $detail_data->experience_date = date('Y-m-d',strtotime(str_replace('Date of experience: ','',$experience_date->innertext))); + } + + //抓取图片 + foreach($detail_info->find('.imgWrap .noscript') as $imgWrap){ + $imgWrap->src = str_replace('photo-l','photo-s',$imgWrap->src); + array_push($detail_data->pic,$imgWrap->src); } } //拿到数据后进行入库 + $this->Tripadvisor_Review_model->add_reviews($detail_data); + print_r(json_encode($detail_data)); } } diff --git a/application/third_party/tripadvisor_spider/models/Tripadvisor_Review_model.php b/application/third_party/tripadvisor_spider/models/Tripadvisor_Review_model.php index 25414fc7..d2f8cf21 100644 --- a/application/third_party/tripadvisor_spider/models/Tripadvisor_Review_model.php +++ b/application/third_party/tripadvisor_spider/models/Tripadvisor_Review_model.php @@ -161,5 +161,39 @@ class Tripadvisor_Review_model extends CI_Model { $result = $query->result(); return $result; } + + public function add_reviews($detail_data){ + $sql = " + IF NOT EXISTS( + select tr_review_id from Ta_Reviews where tr_review_id = ? + ) + insert into Ta_Reviews + ( + tr_destination, + tr_review_id, + tr_review_title, + tr_content, + tr_member_name, + tr_member_loc, + tr_member_starts, + tr_review_date, + tr_visited_date, + tr_review_pics, + tr_gri_no, + tr_tgi_sn, + tr_datetime + )values( + ?,?,?,?,?,?,?,?,?,?,?,?,GETDATE() + ) + "; + $query = $this->INFO->query($sql, array($detail_data->review_id,$detail_data->destination,$detail_data->review_id,$detail_data->title,$detail_data->content,$detail_data->review_name,$detail_data->user_loc,$detail_data->star_nums,$detail_data->rating_date,$detail_data->experience_date,json_encode($detail_data->pic),'','')); + //$result = $query->result(); + } + + public function get_all_reviews($destination){ + $sql = 'select * from Ta_Reviews where tr_destination = ? order by tr_review_date desc'; + $query = $this->INFO->query($sql,array($destination)); + return $query->result(); + } } diff --git a/application/third_party/tripadvisor_spider/views/third_party_input.php b/application/third_party/tripadvisor_spider/views/third_party_input.php index 0643046e..eb84da06 100644 --- a/application/third_party/tripadvisor_spider/views/third_party_input.php +++ b/application/third_party/tripadvisor_spider/views/third_party_input.php @@ -10,9 +10,15 @@ +
  • + 列表抓取 +
  • excel导入
  • +
  • + 数据预览 +
  • @@ -30,17 +36,21 @@

    +

    +

    -

    +

    +

    +
    @@ -57,6 +67,50 @@
    + +
    +
    +
    + +
    +
    + +
    + +
    +
    + +
    +
    +
    + +
    + +
    +
    + +
    +
    + @@ -70,6 +124,7 @@ $(function(){ //获取填写的url var ta_url = $('#ta_url').val(); var stars = ''; + var pic_htm = ''; if(ta_url == ''){ alert('请填写需要采集的TA地址'); }else{ @@ -80,8 +135,14 @@ $(function(){ var data = $.parseJSON(json); console.log(data); $('.ta_content').html(data.content); - $('.review_date').html('Date of experience: '+data.review_date); + $('.experience_date').html('Date of experience: '+data.experience_date); $('.review_name').html(data.review_name); + $('.user_loc').html(data.user_loc); + $('.rating_date').html('Reviewed:'+data.rating_date); + for(var i=0;i

    '; + } + $('.review_pic').html(pic_htm); $('.ta_title').html(''+data.title+''); if(data.star_nums){ for(var i=0;i

    '+jsondata.list[y].tr_member_loc+'

    '; + for(var i=0;i

    Reviewed: '+jsondata.list[y].tr_review_date+'

    '+jsondata.list[y].tr_content+'

    '; + html += '

    '; + + if($.parseJSON(jsondata.list[y].tr_review_pics).length > 0){ + for(var j=0;j<$.parseJSON(jsondata.list[y].tr_review_pics).length;j++){ + html += '

    '; + } + } + + html += '

    Date of experience: '+jsondata.list[y].tr_visited_date+'


    '; + } + html += '

    total nums : '+jsondata.list.length+'

    ' + $('#list_view_content').html(html); + } + }); + } + }); }); \ No newline at end of file From 94fffeaf115ee0576d6227732bb0bb613dd0994e Mon Sep 17 00:00:00 2001 From: lyt Date: Thu, 23 May 2019 16:18:16 +0800 Subject: [PATCH 08/35] =?UTF-8?q?=E6=B5=8B=E8=AF=95PayPal=20webhook?= =?UTF-8?q?=E6=A8=A1=E6=8B=9F=E5=99=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- webht/third_party/paypal/controllers/index.php | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/webht/third_party/paypal/controllers/index.php b/webht/third_party/paypal/controllers/index.php index b4dfbc2c..f170bb79 100644 --- a/webht/third_party/paypal/controllers/index.php +++ b/webht/third_party/paypal/controllers/index.php @@ -611,6 +611,11 @@ class Index extends CI_Controller { return ; } + public function paypal_webhook() + { + log_message('error',json_encode($this->input->post())); + } + //解析出订单号 public function analysis_orderid($note_invoice_string) { $data = array(); From 7a33f49a2c89e3526bc9f37b3b466ad4abc8d48a Mon Sep 17 00:00:00 2001 From: lyt Date: Thu, 23 May 2019 16:27:38 +0800 Subject: [PATCH 09/35] =?UTF-8?q?=E6=B5=8B=E8=AF=95PayPal=20webhook?= =?UTF-8?q?=E6=A8=A1=E6=8B=9F=E5=99=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- webht/third_party/paypal/controllers/index.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/webht/third_party/paypal/controllers/index.php b/webht/third_party/paypal/controllers/index.php index f170bb79..e609fba6 100644 --- a/webht/third_party/paypal/controllers/index.php +++ b/webht/third_party/paypal/controllers/index.php @@ -613,7 +613,7 @@ class Index extends CI_Controller { public function paypal_webhook() { - log_message('error',json_encode($this->input->post())); + log_message('error',"paypal_webhook" . var_export(file_get_contents('php://input'), 1)); } //解析出订单号 From 639add9ad09b5fcb76dcca6f3e37d01172bc503d Mon Sep 17 00:00:00 2001 From: lyt Date: Thu, 23 May 2019 17:04:06 +0800 Subject: [PATCH 10/35] =?UTF-8?q?paypal=20=E6=8E=A5=E5=8F=97webhook?= =?UTF-8?q?=E9=80=9A=E7=9F=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../third_party/paypal/controllers/index.php | 64 ++++++++++++++++++- 1 file changed, 63 insertions(+), 1 deletion(-) diff --git a/webht/third_party/paypal/controllers/index.php b/webht/third_party/paypal/controllers/index.php index e609fba6..35fae3e7 100644 --- a/webht/third_party/paypal/controllers/index.php +++ b/webht/third_party/paypal/controllers/index.php @@ -611,9 +611,71 @@ class Index extends CI_Controller { return ; } + /*! + * [paypal_webhook description] + * @author LYT + * @date 2019-05-23 + * PAYMENT.SALE.COMPLETED 没有付款人信息 + * * resource.id=txn_id + * * invoice_number=invoice_number + */ public function paypal_webhook() { - log_message('error',"paypal_webhook" . var_export(file_get_contents('php://input'), 1)); + $raw_post = file_get_contents('php://input'); + if (empty($raw_post)) { + return; + } + $post_data = json_decode($raw_post); + if ($post_data->event_type != 'PAYMENT.SALE.COMPLETED') { + log_message('error',"paypal_webhook" . var_export(file_get_contents('php://input'), 1)); + return; + } + $pn_txn_id = $post_data->resource->id; + + $pn_invoice = $post_data->resource->invoice_number; + + $pn_mc_gross = $post_data->resource->amount->total; + + // $pn_item_name = $this->input->post('item_name'); + // if (empty($pn_item_name)) { + // $pn_item_name = $this->input->post('item_name1'); //APP用SDK支付的话会是item_name1 + // empty($pn_item_name) ? $pn_item_name = '' : false; + // } + + // $pn_item_number = $this->input->post('item_number'); + // if (empty($pn_item_number)) { + // $pn_item_number = $this->input->post('item_number1'); //APP用SDK支付的话会是item_number1 + // empty($pn_item_number) ? $pn_item_number = '' : false; + // } + + $pn_mc_currency = $post_data->resource->amount->currency; + $pn_payment_status = $post_data->resource->state; + $pn_payment_date = $post_data->resource->update_time; + // $pn_payer = $post_data->resource->amount->currency; + // $pn_payer_email = $post_data->resource->amount->currency; + $pn_memo = $raw_post; + if (!empty($pn_txn_id)) { + //把PDT时间转成GMT时间 + // $pn_payment_date = gmdate('Y-m-d H:i:s', strtotime($pn_payment_date)); + $this->Note_model->save_paypal_note( + $pn_txn_id, + $pn_invoice, + "", + $pn_mc_gross, + "", + "", + $pn_mc_currency, + $pn_payment_status, + "", + "", + $pn_payment_date, + $pn_memo); + log_message('error','paypal-webhook-succeed ' . $pn_txn_id . ' # ' . $pn_invoice); + // echo 'ok'; + } else { + // echo 'no'; + } + return; } //解析出订单号 From aa2186d81a182c2189cc667e79dff2d858003307 Mon Sep 17 00:00:00 2001 From: lyt Date: Thu, 23 May 2019 17:07:01 +0800 Subject: [PATCH 11/35] =?UTF-8?q?paypal=20=E6=8E=A5=E5=8F=97webhook?= =?UTF-8?q?=E9=80=9A=E7=9F=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- webht/third_party/paypal/controllers/index.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/webht/third_party/paypal/controllers/index.php b/webht/third_party/paypal/controllers/index.php index 35fae3e7..78badbfe 100644 --- a/webht/third_party/paypal/controllers/index.php +++ b/webht/third_party/paypal/controllers/index.php @@ -627,7 +627,7 @@ class Index extends CI_Controller { } $post_data = json_decode($raw_post); if ($post_data->event_type != 'PAYMENT.SALE.COMPLETED') { - log_message('error',"paypal_webhook" . var_export(file_get_contents('php://input'), 1)); + log_message('error',"paypal_webhook" . var_export($raw_post, 1)); return; } $pn_txn_id = $post_data->resource->id; From cd67f710b1ed9c53eee549e7384e4d62bf1ff4c4 Mon Sep 17 00:00:00 2001 From: lyt Date: Thu, 23 May 2019 17:25:44 +0800 Subject: [PATCH 12/35] =?UTF-8?q?PayPal=20=E5=A4=84=E7=90=86webhook?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- webht/third_party/paypal/controllers/index.php | 6 +++--- webht/third_party/paypal/views/note_list.php | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/webht/third_party/paypal/controllers/index.php b/webht/third_party/paypal/controllers/index.php index 78badbfe..1543b2ea 100644 --- a/webht/third_party/paypal/controllers/index.php +++ b/webht/third_party/paypal/controllers/index.php @@ -817,14 +817,14 @@ class Index extends CI_Controller { echo ++$show_index . ' ' . $item->pn_txn_id . '
    '; } //退款状态默认为已经处理,陆燕在退款前手动通知外联了,系统跳过处理 - if ($item->pn_payment_status == 'Refunded') { + if (strtolower($item->pn_payment_status) == 'refunded') { $this->send_refund($item, $handpick, $old_ssje); // $this->Note_model->update_send($item->pn_txn_id, 'send'); continue; } //只处理完成状态,其他状态由陆燕处理 - if ($item->pn_payment_status !== 'Completed') { + if (strtolower($item->pn_payment_status) !== 'completed') { $this->Note_model->update_send($item->pn_txn_id, 'sendfail'); continue; } @@ -852,7 +852,7 @@ class Index extends CI_Controller { } $orderid_info = json_decode($orderid_info); // 仅自动程序发送提醒 false == $handpick && - if ($item->pn_payment_status === 'Completed' + if (strtolower($item->pn_payment_status) === 'completed' && $orderid_info->ordertype == 'A' && strpos($get_order_no, 'China Train Booking') !== false) { // APP 组的China Train Booking-开头的订单号 // 发送邮件提醒外联核对收款金额, 不写入收款记录 diff --git a/webht/third_party/paypal/views/note_list.php b/webht/third_party/paypal/views/note_list.php index 4dcfcb2d..c40e675e 100644 --- a/webht/third_party/paypal/views/note_list.php +++ b/webht/third_party/paypal/views/note_list.php @@ -213,7 +213,7 @@ echo "