Files
OMS/app/erpapi/lib/shop/response/process/bookingrefund.php
2025-12-28 23:13:25 +08:00

139 lines
5.6 KiB
PHP
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<?php
/**
* Copyright © ShopeX http://www.shopex.cn. All rights reserved.
* See LICENSE file for license details.
*/
/**
* 预约退款
* 2018.9.27 by wangjianjun
*/
class erpapi_shop_response_process_bookingrefund{
/**
* ordermsg
* @param mixed $params 参数
* @return mixed 返回值
*/
public function ordermsg($params){
$order_bn = $params['tid'];
$orderModel = app::get('ome')->model('orders');
$orderInfo = $orderModel->dump(array('order_bn' => $order_bn, 'shop_id'=>$params['shop_id']), 'order_id,order_bn,shop_id,status,ship_status,order_bool_type,payed,org_id');
if(!$orderInfo || !$orderInfo['order_id']){
kernel::single('erpapi_router_request')->set('shop',$params['shop_id'])->order_get_order_detial($order_bn);
$orderInfo = $orderModel->dump(array('order_bn' => $order_bn), 'order_id,shop_id,status,ship_status,order_bool_type');
if(empty($orderInfo)){
return array('rsp'=>'succ', 'msg'=>'订单暂停成功');
}
}
//发起暂停订单
$pause_status = false;
if ($orderInfo["status"] == "active" && $orderInfo["ship_status"] == "0"){
$parseRet = $orderModel->pauseOrder($orderInfo['order_id'], true);
if($parseRet['rsp'] == 'succ'){
$pause_status = true;
$oOperation_log = app::get('ome')->model('operation_log');
$log_text_str = "买家预约退款(msg_id:".$params["msg_id"].",seller_nick:".$params["seller_nick"].",user_nick:".$params["user_nick"].")";
$oOperation_log->write_log('order_modify@ome',$orderInfo['order_id'],$log_text_str);
$order_bool_type = ome_order_bool_type::__BOOKING_REFUND;
if($orderInfo["order_bool_type"]){
$order_bool_type = $orderInfo["order_bool_type"] | ome_order_bool_type::__BOOKING_REFUND;
}
$orderModel->update(array('order_bool_type'=>$order_bool_type), array('order_id'=>$orderInfo['order_id']));
} else {
$orderInfo['pause_fail_msg'] = $parseRet['msg'];
}
}
if($orderInfo["status"] == 'cancel') {
$pause_status = true;
} else {
if ($params['refundStatus'] == '9') {
list($rs, $data) = $this->_dealRefund($orderInfo);
if($rs) {
$pause_status = true;
} else {
$orderInfo['pause_fail_msg'] = $data['msg'];
}
}
}
//$params["callType"] == "synchronous"
if($params["call_type"] == "synchronous"){ //同步
$result = array("result"=>array("success"=>$pause_status));
if($pause_status){
return array('rsp'=>'succ', 'msg'=>'订单暂停成功','result'=>$result);
}else{
return array('rsp'=>'fail', 'msg'=>'订单暂停失败','result'=>$result);
}
}else{ //异步asynchronous
$orderInfo['pause_status'] = $pause_status;
$ret = $this->ordermsg_back($orderInfo, $params);
return array('rsp'=>'succ', 'msg' => $ret);
}
}
protected function ordermsg_back($orderInfo, $params) {
$orderExtend = app::get('ome')->model('order_extend')->db_dump($orderInfo['order_id'], 'extend_field');
$sdf = [
'request_params' => $params,
'order' => $orderInfo,
'order_extend'=>$orderExtend
];
$ret = kernel::single('erpapi_router_request')->set('shop', $orderInfo['shop_id'])->bookingrefund_orderMsgUpdate($sdf);
return $ret;
}
protected function _dealRefund($sdf) {
$data = array(
'refund_bn' => $sdf['order_bn'],
'shop_id' => $sdf['shop_id'],
'order_id' => $sdf['order_id'],
'currency' => 'CNY',
'money' => $sdf['payed'],
'cur_money' => $sdf['payed'],
'pay_type' => '',
'download_time' => time(),
'status' => 'succ',
'memo' => '平台已经完成退款且关闭了交易订单',
'trade_no' => $sdf['order_bn'],
'modifiey' => time(),
'payment' => '',
't_ready' => time(),
't_sent' => time(),
't_received' => '',
'org_id' => $sdf['org_id'],
'refund_refer' => '0', //退款来源
);
//insert
$rs = app::get('ome')->model('refunds')->insert($data);
if(!$rs) {
return [false, ['msg'=>'退款单创建失败']];
}
$sql ="update sdb_ome_orders set payed=0 where order_id=".$sdf['order_id'];
kernel::database()->exec($sql);
kernel::single('ome_order_func')->update_order_pay_status($sdf['order_id'], true, __CLASS__.'::'.__FUNCTION__);
return [true];
}
/**
* ordercancle
* @param mixed $params 参数
* @return mixed 返回值
*/
public function ordercancle($params) {
$rsp = array('rsp'=>'succ', 'msg'=>'处理成功');
$order_bn = $params['order_bn'];
$orderMdl = app::get('ome')->model('orders');
$orders = $orderMdl->db_dump(array('order_bn'=>$order_bn),'order_id');
if($orders){
$rs = $orderMdl->pauseOrder($orders['order_id']);
if($rs['rsp'] == 'succ'){
$orderMdl->cancel($orders['order_id'],$params['reason'],'','async',false);
}
}
return $rsp;
}
}