diff --git a/webht/third_party/pay/controllers/AlipayTradeService.php b/webht/third_party/pay/controllers/AlipayTradeService.php
index f9db3a3c..9800c519 100644
--- a/webht/third_party/pay/controllers/AlipayTradeService.php
+++ b/webht/third_party/pay/controllers/AlipayTradeService.php
@@ -348,7 +348,7 @@ class AlipayTradeService extends CI_Controller
foreach ($data['unsend_list'] as $item) {
//已经发送的不处理,防止重复发送
- if ($item->ALI_sent == 'send') {
+ if ($item->ALI_sent == 'send' && empty($pn_txn_id)) {
continue;
}
@@ -359,8 +359,7 @@ class AlipayTradeService extends CI_Controller
}
//只处理完成状态,其他状态由陆燕处理
- if (strcmp(trim($item->ALI_resultMsg), "TRADE_SUCCESS")
- || strcmp(trim($item->ALI_resultMsg), "TRADE_FINISHED")) {
+ if (strcmp(trim($item->ALI_resultMsg), "TRADE_SUCCESS")!==0 && strcmp(trim($item->ALI_resultMsg), "TRADE_FINISHED")!==0 ) {
$this->Alipay_note_model->update_send($item->ALI_dealId, 'send');
continue;
}
diff --git a/webht/third_party/pay/controllers/PaymentService.php b/webht/third_party/pay/controllers/PaymentService.php
index c01d4a43..bf6180b6 100644
--- a/webht/third_party/pay/controllers/PaymentService.php
+++ b/webht/third_party/pay/controllers/PaymentService.php
@@ -1,8 +1,6 @@
permission->is_admin(true);
+ $data = array();
+ // $data["paytext"] = $this->payment_status();
+ $data["method_name"] = $this->input->get_post("method_name");
+ $data["keywords"] = $this->input->get_post("keywords");
+ $data["date"] = $this->input->get_post("date");
+ empty($data['date']) ? $data['date'] = date('Y-m-d') : false;
+ if (!empty($data['keywords'])) {
+ $data['notelist'] = $this->note_model->search_key($data['keywords']);
+ } else {
+ $data['notelist'] = $this->note_model->search_date($data['date']);
+ }
+
+ /**
+ * 导出记录用的记录节点
+ * TODO
+ */
+ // $data['record_flags'] = $this->note_model->list_export_record();
+ $this->load->view("payment_list",$data);
+ return;
}
- public function send_notify($transaction_id=NULL, $old_ssje=NULL)
+ public function note_faillist()
+ {
+ $this->permission->is_admin(true);
+ $data = array();
+ $data['date'] = date('Y-m-d');
+ $data['notelist'] = $this->note_model->failnote(100);
+ $this->load->view("payment_list",$data);
+ return;
+ }
+
+ public function send_notify($opn_id=NULL, $old_ssje=NULL)
{
log_message('error','send_notify begin ----');
// exit();
$data = array();
$show_index = 0;
//优先处理指定的交易号,用于修正交易号直接发送通知
- if ( ! empty($transaction_id)) {
- $data['unsend_list'] = $this->note_model->get_note($transaction_id);
+ if ( ! empty($opn_id)) {
+ $data['unsend_list'] = $this->note_model->get_note($opn_id);
}
// 待处理的
if (empty($data['unsend_list'])) {
@@ -40,10 +72,6 @@ log_message('error','send_notify begin ----');
}
// 开始处理
foreach ($data['unsend_list'] as $key => $item) {
- //显示处理记录
- if (empty($transaction_id)) {
- echo ++$show_index . ' ' . $item->OPN_transactionId . '
';
- }
// 只处理完成状态
if ($item->OPN_transactionResult != 'completed') {
continue;
@@ -74,19 +102,19 @@ log_message('error','send_notify begin ----');
}
// 开始查找订单和录入
- $handpick = empty($transaction_id) ? false : true;
+ $handpick = empty($opn_id) ? false : true;
$advisor_info = $this->account_model->get_order($orderid_info->orderid, false, $orderid_info->ordertype, $handpick);
- $ssje = $this->account_model->get_ssje($item->OPN_orderAmount, $item->OPN_accountMethod, mb_strtoupper($item->OPN_currency));
+ $ssje = $this->account_model->get_ssje($item->OPN_orderAmount, mb_strtoupper($item->OPN_currency), $item->OPN_accountMethod);
$ssje = $old_ssje===NULL ? $ssje : $old_ssje;
$ht_memo = '交易号(自动录入):' . $item->OPN_transactionId;
- if ( ! isset($advisor_info->ordertype)) {
+ if ( empty($advisor_info)) {
// record fail
$this->note_model->update_send($item->OPN_SN, $item->OPN_transactionId, 'sendfail');
continue;
}
$COLI_SN = isset($advisor_info->COLI_SN) ? $advisor_info->COLI_SN : 0;
$update_note_column = array();
- if ($advisor_info->ordertype == 0) {
+ if ($advisor_info->order_type == 0) {
/* 商务订单 */
if (substr($advisor_info->COLI_WebCode, 0, 6) == 'CHTAPP') {
/* APP */
@@ -141,7 +169,7 @@ log_message('error','send_notify begin ----');
$update_note_column['OPN_accountType'] = 'B';
$update_note_column['OPN_accountStatus'] = 'recorded';
$update_note_column['OPN_accountTime'] = date('Y-m-d H:i:s');
- } elseif ($advisor_info->ordertype == 1) {
+ } elseif ($advisor_info->order_type == 1) {
/* 传统 */
$gai_sn = $this->account_model->add_tour_account_info(
$COLI_SN,
@@ -187,15 +215,20 @@ log_message('error','send_notify begin ----');
$toName = !empty($opi_firstname) ? $opi_firstname : '';
$toEmail = !empty($opi_email) ? $opi_email : '';
$subject = $orderid_info->orderid . '_' . $orderid_info->ordertype . ' / ' . $item->OPN_orderAmount . $item->OPN_currency . ' / ' . $fromName;
- $body = $this->load->view('mail_templete', $item, true); //$item->pn_memo;
+ $body = $this->load->view('mail_advisor', $item, true); //$item->pn_memo;
$M_RelatedInfo = $item->OPN_SN;
$M_AddTime = $item->OPN_completeTime;
$M_State = 0;
$this->account_model->save_automail($fromName, $fromEmail, $toName, $toEmail, $subject, $body, $M_RelatedInfo, $M_State, $M_AddTime, 'payment note', 'payment note');
//添加邮件发送记录 end
+ // 2. 给客人发邮件,通知账单 todo ?? 是否需要
- $this->note_model->update_send($item->OPN_SN, $item->pn_txn_id, 'send');
+ $this->note_model->update_send($item->OPN_SN, $item->OPN_transactionId, 'send');
+ //显示处理记录
+ if (empty($opn_id)) {
+ echo ++$show_index . ' ' . $item->OPN_transactionId . '
';
+ }
}
return;
@@ -203,6 +236,7 @@ log_message('error','send_notify begin ----');
}
/** 支付方式参数对应的配置文件名 */
+ /** @Deprecated */
public function method_name($name)
{
$config_name = 'paypal';
@@ -246,14 +280,12 @@ log_message('error','send_notify begin ----');
case '15016': // wxpay
$orderid_info = analysis_orderid($content_obj->out_trade_no);
break;
-
+ // TODO
case '15018': // iPaylinks
break;
-
case '15015': // alipay
break;
-
default:
# code...
break;
@@ -261,5 +293,99 @@ log_message('error','send_notify begin ----');
return $orderid_info;
}
+ public function convert_send_status()
+ {
+ # code...
+ }
+
+ public function gai_modal($pn_id = null, $neworder=null)
+ {
+ $this->permission->is_admin(true);
+ $data = array();
+ $note = $this->note_model->get_note($pn_id);
+ $data['note'] = $note[0];
+ $data['order_info'] = NULL;
+ $pn_invoice = $data['note']->OPN_orderId ? $data['note']->OPN_orderId : $data['note']->OPN_rawOrderId;
+ $pn_txn_id = $data['note']->OPN_transactionId;
+ $orderid_info = analysis_orderid($pn_invoice);
+ if (!empty($orderid_info)) {
+ $orderid_info = json_decode($orderid_info);
+ $data['order_info'] = $this->account_model->get_order($orderid_info->orderid, true, $orderid_info->ordertype);
+ if ($orderid_info->ordertype === 'T') {
+ $data['gai_info'] = $this->account_model->get_money_t($pn_txn_id);
+ } elseif ($orderid_info->ordertype === 'B' || $orderid_info->ordertype === 'TP') {
+ $data['gai_info'] = $this->account_model->get_money_b($pn_txn_id);
+ }
+ }
+ $data['old_order'] = $pn_invoice;
+ $data['new_order'] = $neworder;
+ if ($neworder !== null ) {
+ $neworder_id = analysis_orderid($neworder);
+ $neworder_id = json_decode($neworder_id);
+ if ( ! empty($neworder_id)) {
+ $data['order_info'] = $this->account_model->get_order($neworder_id->orderid, true, $neworder_id->ordertype);
+ }
+ }
+ echo json_encode($this->load->view('payment_gai_setting', $data, true));
+ }
+
+ public function gai_modal_save()
+ {
+ $data = array();
+ $old_ssje = NULL;
+ $pn_txn_id = $this->input->post('pn_txn_id');
+ $pn_id = $this->input->post('pn_id');
+ $neworder = $this->input->post('pn_invoice');
+
+ $note = $this->note_model->get_note($pn_id);
+ $data['note'] = $note[0];
+ $orderid_info = analysis_orderid($data['note']->OPN_orderId);
+ if (!empty($orderid_info)) {
+ $orderid_info = json_decode($orderid_info);
+ if ($orderid_info->ordertype === 'T') {
+ $data['gai_info'] = $this->account_model->get_money_t($pn_txn_id);
+ if ( ! empty($data['gai_info'])) {
+ $old_ssje = $data['gai_info'][0]->GAI_SSJE;
+ $this->account_model->delete_money_t($pn_txn_id);
+ }
+ } elseif ($orderid_info->ordertype === 'B' || $orderid_info->ordertype === 'TP') {
+ $data['gai_info'] = $this->account_model->get_money_b($pn_txn_id);
+ if ( ! empty($data['gai_info'])) {
+ $old_ssje = $data['gai_info'][0]->GAI_SSJE;
+ $this->account_model->delete_money_b($pn_txn_id);
+ }
+ }
+ }
+
+ if (!empty($pn_txn_id) && !empty($neworder)) {
+ $orderid_info = analysis_orderid($neworder);
+ if (!empty($orderid_info)) {
+ $orderid_info = json_decode($orderid_info);
+ $advisor_info = $this->account_model->get_order($orderid_info->orderid, false, $orderid_info->ordertype);
+ if (!empty($advisor_info)) {
+ $this->note_model->set_invoice($data['note']->OPN_SN, $neworder);
+ $this->send_notify($data['note']->OPN_SN, $old_ssje);
+ echo json_encode('修改成功!');
+ return true;
+ }
+ }
+ }
+ echo json_encode('没找到数据!');
+ return;
+ }
+
+ public function close_gai($opn_id)
+ {
+ $data = array();
+ $data['note'] = $this->note_model->get_note($opn_id);
+ if (!empty($data['note'])) {
+ $this->note_model->update_send($opn_id, $data['note'][0]->OPN_transactionId, 'closed');
+ echo json_encode('该收款记录已经忽略!');
+ return true;
+ }
+ echo json_encode('没找到数据!');
+ return;
+ }
+
}
diff --git a/webht/third_party/pay/controllers/WxpayService.php b/webht/third_party/pay/controllers/WxpayService.php
index 5f7f8e74..1f39a0ed 100644
--- a/webht/third_party/pay/controllers/WxpayService.php
+++ b/webht/third_party/pay/controllers/WxpayService.php
@@ -100,7 +100,7 @@ log_message('error','notify begin ----');
return false;
}
if ($this->make_sign($xml_arr) !== $xml_arr['sign']) {
- log_message('error','Wxpay notify error: sign.');
+ log_message('error','Wxpay notify error: sign.' . $this->make_sign($xml_arr));
return false;
}
if ($this->wx_site_config['app_id'] !== $xml_arr['appid']) {
diff --git a/webht/third_party/pay/models/Online_payment_account_model.php b/webht/third_party/pay/models/Online_payment_account_model.php
index 3a42e20e..91fc6fa0 100644
--- a/webht/third_party/pay/models/Online_payment_account_model.php
+++ b/webht/third_party/pay/models/Online_payment_account_model.php
@@ -28,7 +28,7 @@ class Online_payment_account_model extends CI_Model {
$result = '';
$fieldsql = $orderinfo == false ? '' : " ,* ";
//先查商务订单B,APP订单A、再查传统订单T
- if ($ordertype == 'B' || $ordertype == 'A') {
+ if ($ordertype == 'B' || $ordertype == 'A' || $ordertype == 'TP') {
$sql = "SELECT TOP 2 0 as order_type,COLI_SN,COLI_ID,OPI_Email,OPI_FirstName,OPI_Name,COLI_WebCode,COLI_Department,COLI_PayManner,COLI_State $fieldsql from BIZ_ConfirmLineInfo
LEFT JOIN OperatorInfo ON COLI_OPI_ID=OPI_SN
where COLI_ID =?";
@@ -152,6 +152,40 @@ class Online_payment_account_model extends CI_Model {
return $query;
}
+ //根据交易号获取收款记录(传统订单)
+ public function get_money_t($pn_invoice) {
+ $sql = "SELECT GroupAccountInfo.*
+ from GroupAccountInfo
+ where DeleteFlag=0 and GAI_AccreditNo=?
+ ";
+ $query = $this->HT->query($sql, array($pn_invoice));
+ $result = $query->result();
+ return $result;
+ }
+ //根据交易号获取收款记录(商务订单)
+ public function get_money_b($pn_invoice) {
+ $sql = "SELECT BIZ_GroupAccountInfo.*
+ from BIZ_GroupAccountInfo
+ where DeleteFlag=0 and GAI_AccreditNo=?
+ ";
+ $query = $this->HT->query($sql, array($pn_invoice));
+ $result = $query->result();
+ return $result;
+ }
+ /** 删除收款记录 */
+ public function delete_money_t($deadId)
+ {
+ $sql = "UPDATE GroupAccountInfo SET DeleteFlag=1 WHERE GAI_AccreditNo=?";
+ $query = $this->HT->query($sql, array($deadId));
+ return $query;
+ }
+ public function delete_money_b($deadId)
+ {
+ $sql = "UPDATE BIZ_GroupAccountInfo SET DeleteFlag=1 WHERE GAI_AccreditNo=?";
+ $query = $this->HT->query($sql, array($deadId));
+ return $query;
+ }
+
//添加收款记录(商务订单)
public function add_account_info($GAI_COLI_SN, $payment_method, $GAI_COLI_ID, $GAI_SQJE, $GAI_SQDate, $GAI_SQJECurrency, $GAI_SSJE, $GAI_SSDate, $GAI_AccountDate, $GAI_SubmitDate, $GAI_CusName, $GAI_CusEmail, $GAI_AccreditNo, $GAI_Memo) {
//先判断是否有这条数据
diff --git a/webht/third_party/pay/models/Online_payment_note_model.php b/webht/third_party/pay/models/Online_payment_note_model.php
index 5d0205e3..c17f0cb4 100644
--- a/webht/third_party/pay/models/Online_payment_note_model.php
+++ b/webht/third_party/pay/models/Online_payment_note_model.php
@@ -35,11 +35,28 @@ class Online_payment_note_model extends CI_Model {
//设置订单号
public function set_invoice($id, $pn_invoice)
{
- $column = array("OPN_orderId" => $send);
+ $column = array("OPN_orderId" => $pn_invoice);
$where = " OPN_SN=" . $id;
return $this->update_note($where, $column);
}
+ public function unsend_note($num=2)
+ {
+ $this->init_query();
+ $this->topnum = $num;
+ $this->send = " AND (OPN_noticeSendStatus='unsend' OR OPN_noticeSendStatus='' OR OPN_noticeSendStatus IS NULL) ";
+ return $this->query_note();
+ }
+
+ public function sendfail_note($num=2)
+ {
+ $this->init_query();
+ $this->topnum = $num;
+ $this->send = " AND OPN_noticeSendStatus='sendfail' ";
+ return $this->query_note();
+ }
+
+
public $topnum = false;
public $orderby = false;
public $send = false;
@@ -75,30 +92,58 @@ class Online_payment_note_model extends CI_Model {
return $query->result();
}
- public function get_note($transactionId)
+ public function get_note($opn_id)
{
$this->init_query();
$this->topnum=1;
- $this->transactionId = " AND opn.OPN_transactionId=" . $this->info->escape($transactionId);
+ $this->search = " AND opn.OPN_SN=" . $this->info->escape($opn_id);
return $this->query_note();
}
- public function unsend_note($num=2)
+ public function search_key($keyword)
{
$this->init_query();
- $this->topnum = $num;
- $this->send = " AND (OPN_noticeSendStatus='unsend' OR OPN_noticeSendStatus='' OR OPN_noticeSendStatus IS NULL) ";
+ $this->topnum = 300;
+ $keyword = trim($keyword);
+ $search_sql = "";
+ if ( ! empty($keyword)) {
+ $search_sql.=" AND ( OPN_transactionId = '$keyword'
+ OR OPN_orderId like '%$keyword%'
+ OR OPN_rawOrderId like '%$keyword%' )";
+ }
+ $this->search = $search_sql;
return $this->query_note();
}
- public function sendfail_note($num=2)
+ public function search_date($date)
{
$this->init_query();
- $this->topnum = $num;
- $this->send = " AND OPN_noticeSendStatus='sendfail' ";
+ $this->search = " AND OPN_noticeTime BETWEEN '$date 00:00:00' AND '$date 23:59:59' ";
return $this->query_note();
}
+ public function failnote($topnum = 2) {
+ $this->init_query();
+ $this->topnum = $topnum;
+ $this->send = " AND OPN_noticeSendStatus='sendfail' ";
+ return $this->query_note();
+ }
+
+ /*!
+ * 导出记录
+ * @date 2019-04-28
+ * @param integer $sn [description]
+ */
+ public function list_export_record($sn=0)
+ {
+ $search_sql = $sn===0 ? "" : " and TEL_SN=$sn ";
+ $sql = "SELECT TOP 10 *
+ FROM [InfoManager].[dbo].[Transaction_Export_Log]
+ WHERE 1=1
+ $search_sql
+ order by TEL_SN desc";
+ return $this->info->query($sql)->result();
+ }
}
diff --git a/webht/third_party/pay/views/mail_advisor.php b/webht/third_party/pay/views/mail_advisor.php
new file mode 100644
index 00000000..272340c6
--- /dev/null
+++ b/webht/third_party/pay/views/mail_advisor.php
@@ -0,0 +1 @@
+
| Transaction ID: | Hello Guilin China International Travel Service Co.,Ltd, You received a payment of |
diff --git a/webht/third_party/paypal/controllers/index.php b/webht/third_party/paypal/controllers/index.php
index 95d898fa..3c2bdb67 100644
--- a/webht/third_party/paypal/controllers/index.php
+++ b/webht/third_party/paypal/controllers/index.php
@@ -1325,6 +1325,9 @@ class Index extends CI_Controller {
$orderid_info = $this->analysis_orderid($data['note']->pn_invoice);
if (!empty($orderid_info)) {
$orderid_info = json_decode($orderid_info);
+ if ($orderid_info->ordertype === 'TP') {
+ $orderid_info->ordertype = 'B';
+ }
if ($orderid_info->ordertype === 'T') {
$data['gai_info'] = $this->Paypal_model->get_money_t($pn_txn_id);
} elseif ($orderid_info->ordertype === 'B') {
@@ -1337,6 +1340,9 @@ class Index extends CI_Controller {
if ($neworder !== null) {
$neworder_id = $this->analysis_orderid($neworder);
$neworder_id = json_decode($neworder_id);
+ if ($neworder_id->ordertype === 'TP') {
+ $neworder_id->ordertype = 'B';
+ }
if ( ! empty($neworder_id)) {
$data['order_info'] = $this->Paypal_model->get_order($neworder_id->orderid, true, $neworder_id->ordertype);
}
diff --git a/webht/third_party/paypal/models/note_model.php b/webht/third_party/paypal/models/note_model.php
index c534e41f..0cd9ecd4 100644
--- a/webht/third_party/paypal/models/note_model.php
+++ b/webht/third_party/paypal/models/note_model.php
@@ -31,14 +31,14 @@ class Note_model extends CI_Model {
public function unsend($topnum = 2) {
$this->init();
$this->topnum = $topnum;
- $this->pn_send = " AND (pn_send='unsend' OR pn_send='' OR pn_send IS NULL) ";
+ $this->pn_send = " AND (pn_send='unsend' OR pn_send IS NULL) ";
return $this->get_list();
}
public function failnote($topnum = 2) {
$this->init();
$this->topnum = $topnum;
- $this->pn_send = " AND pn_send='sendfail' ";
+ $this->pn_send = " AND (pn_send='sendfail' OR pn_send='') ";
//$this->orderby = ' ORDER BY pn.pn_sn ASC ';
return $this->get_list();
}