diff --git a/webht/third_party/pay/controllers/PaymentService.php b/webht/third_party/pay/controllers/PaymentService.php index dec0b3ea..1af0f035 100644 --- a/webht/third_party/pay/controllers/PaymentService.php +++ b/webht/third_party/pay/controllers/PaymentService.php @@ -608,6 +608,7 @@ class PaymentService extends CI_Controller { $order_sn = empty($data['order_info']) ? 0 : $data['order_info']->COLI_SN; $data['group_accout_info'] = $this->account_model->get_group_accout_info($order_sn, $pn_txn_id); + // var_dump($data); echo json_encode($this->load->view('payment_gai_setting', $data, true)); } @@ -1078,5 +1079,32 @@ class PaymentService extends CI_Controller { return; } + /** + * 查询:交易/退款 + * + * 从渠道接口查询 + * + * @param Type $var Description + * @return type + * @throws conditon + **/ + public function query() + { + $transaction_id = $this->input->get_post("transaction_id"); + $account_type = $this->input->get_post("account_type"); + if ($account_type == '15016') { + $this->wxpay_call->query_append_transaction($transaction_id); + } + + redirect(site_url("/apps/pay/paymentservice/note_list?keywords=$transaction_id")); + exit; + // $data['notelist'] = $this->note_model->search_key($transaction_id); + // $data['method_code'] = ''; + // $data["method_name"] = ''; + // array_walk($data["notelist"], 'PaymentService::set_brandname'); + // $this->load->view("payment_list",$data); + // return ; + } + } diff --git a/webht/third_party/pay/libraries/wxpay_call.php b/webht/third_party/pay/libraries/wxpay_call.php index 14845342..2fba299a 100644 --- a/webht/third_party/pay/libraries/wxpay_call.php +++ b/webht/third_party/pay/libraries/wxpay_call.php @@ -15,7 +15,7 @@ class Wxpay_call $this->ci =& get_instance(); $this->ci->load->helper('payment'); $this->ci->config->load('wxpay', true); - // $this->ci->load->model('WxpayQueryContentBuilder', 'query_builder'); + $this->ci->load->model('WxpayQueryContentBuilder', 'query_builder'); $this->merchant_account = $account; bcscale(2); } @@ -30,6 +30,34 @@ class Wxpay_call // $this->api_info_arr['app_secret'] = $this->wx_site_config['app_secret']; } + function query_append_transaction($transaction_id) { + $ret = []; + $all_account = explode(",", $this->ci->config->item('all_account', 'wxpay')); + $this->merchant_account = $all_account[0]; + $this->ci->query_builder->set_transaction_id($transaction_id); + // var_dump($transaction_id); + // var_dump($all_account); + foreach ($all_account as $account) { + $resultR = $this->query_order_refund($this->ci->query_builder, 0, $account); + $result = $this->query_order_refund($this->ci->query_builder, 1, $account); + // var_dump(json_encode($result)); + // var_dump(json_encode($resultR)); + if ($result['status'] === true) { + $ret = array_merge($ret, $result['data']); + $this->ci->note_model->add_note_wxpay($result['data'], $account, 'pay'); + } + if ($resultR['status'] === true) { + $ret = array_merge($ret, $result['data']); + $this->ci->note_model->add_note_wxpay($resultR['data'], $account, 'refund'); + } + if (!empty($ret)) { + break; + } + } + // var_dump($ret); + return $ret; + } + public function query_order_refund($query_content, $query_refund=0, $account = '') { $ret = array('status'=>false, 'data'=>array()); @@ -39,16 +67,19 @@ class Wxpay_call $query_content_input = $query_content->getBizContent(true); //检测必填参数 if( ! $query_content_input['transaction_id']) { - throw new WxPayException("查询接口中,缺少必填参数 transaction_id !"); + throw new Exception("查询接口中,缺少必填参数 transaction_id !", 1); + // throw new WxPayException("查询接口中,缺少必填参数 transaction_id !"); } $this->api_info_arr['nonce_str'] = ($this->get_nonce_str());//随机字符串 $this->api_info_arr['sign'] = $this->make_sign(array_merge($this->api_info_arr, $query_content_input));//签名 $xml = to_xml(array_merge($this->api_info_arr, $query_content_input)); + // var_dump('api', array_merge($this->api_info_arr, $query_content_input)); // log_message('error','test: ' . __CLASS__ . PHP_EOL . var_export(array_merge($this->api_info_arr, $query_content_input), 1)); $response = $this->post_xml_curl($this->api_info_arr, $xml, $url, 20); $response_arr = from_xml($response); + // var_dump($response_arr); $ret['status'] = $response_arr['return_code'] === 'SUCCESS' && $response_arr['result_code'] === 'SUCCESS'; if ($query_refund !== 0) { $ret['data'] = [$response_arr]; 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 58d32e10..8542d374 100644 --- a/webht/third_party/pay/models/Online_payment_note_model.php +++ b/webht/third_party/pay/models/Online_payment_note_model.php @@ -33,17 +33,20 @@ class Online_payment_note_model extends CI_Model { return false; } if ($check_exists === true) { - $sql = "SELECT TOP 1 OPN_SN + $sql = "SELECT TOP 1 OPN_SN, OPN_payFee, OPN_netAmount, OPN_entryAmountCNY FROM OnlinePaymentNote WHERE OPN_accountMethod={$column['OPN_accountMethod']} AND OPN_transactionId = '{$column['OPN_transactionId']}'"; $query = $this->info->query($sql); if ($query->num_rows() > 0) { + $raw_row = $query->row(); $update = array( - 'OPN_payFee' => isset($column['OPN_payFee']) ? $column['OPN_payFee'] : null, - 'OPN_netAmount' => $column['OPN_netAmount'], - 'OPN_entryAmountCNY' => $column['OPN_entryAmountCNY'], + 'OPN_payFee' => isset($column['OPN_payFee']) ? $column['OPN_payFee'] : $raw_row->OPN_payFee, + 'OPN_netAmount' => isset($column['OPN_netAmount']) ? $column['OPN_netAmount'] : $raw_row->OPN_netAmount, + 'OPN_entryAmountCNY' => isset($column['OPN_entryAmountCNY']) && isset($column['OPN_payFee']) ? $column['OPN_entryAmountCNY'] : $raw_row->OPN_entryAmountCNY, ); $where = " OPN_SN=" . $query->row()->OPN_SN; + // var_dump($update); + // var_dump($query->row()); $this->update_note($where, $update); return false; } @@ -501,7 +504,7 @@ class Online_payment_note_model extends CI_Model { $save_column['OPN_orderAmount'] = "-" . $refund_fee; $save_column['OPN_payAmount'] = "-" . $refund_fee; $save_column['OPN_resultCode'] = $row['refund_status']; - $save_column['OPN_resultMsg'] = $row['refund_status']; + $save_column['OPN_resultMsg'] = ''; // $row['refund_status']; $save_column['OPN_entryAmountCNY'] = floatval("-" . $ssje); $save_column['OPN_noticeType'] = $type; $save_column['OPN_relatedId'] = $row['transaction_id']; @@ -514,8 +517,8 @@ class Online_payment_note_model extends CI_Model { $save_column['OPN_transactionId'] = $row['transaction_id']; $save_column['OPN_orderAmount'] = $total_fee; $save_column['OPN_payAmount'] = $total_fee; - $save_column['OPN_resultCode'] = $row['trade_state']; - $save_column['OPN_resultMsg'] = $row['trade_state']; + $save_column['OPN_resultCode'] = $row['result_code']; + $save_column['OPN_resultMsg'] = $row['trade_type']; $save_column['OPN_entryAmountCNY'] = floatval($ssje); $save_column['OPN_noticeType'] = 'pay'; $save_column['OPN_relatedId'] = ''; @@ -535,7 +538,8 @@ class Online_payment_note_model extends CI_Model { $save_column['OPN_rawContent'] = json_encode($row); $save_column['OPN_noticeTime'] = date('Y-m-d H:i:s'); - // $this->insert_note($save_column) ; // todo: + // var_dump(($save_column)); + $this->insert_note($save_column, true) ; // todo: // log_message('error', 'test: ' . __CLASS__ . PHP_EOL . var_export($save_column, 1)); } return; diff --git a/webht/third_party/pay/views/payment_list.php b/webht/third_party/pay/views/payment_list.php index dd41cc3f..b08f7d83 100644 --- a/webht/third_party/pay/views/payment_list.php +++ b/webht/third_party/pay/views/payment_list.php @@ -43,6 +43,10 @@ .items-center {align-items: center;} .justify-center {justify-content: center;} .ml-auto {margin-left: auto;} + + #queryFormModal .btn-group .btn:active, #queryFormModal .btn-group .btn.active{ color: #fff; background-color: #337ab7;border-color: #2e6da4;} + + .modal-header .close {position: absolute;right: 15px;top: 15px;}