|
@@ -1,5 +1,6 @@
|
|
|
<?php
|
|
|
namespace app\common\service;
|
|
|
+use app\api\controller\Alipay;
|
|
|
use app\common\model\ActivityApply;
|
|
|
use app\common\model\ActivityApplyItem;
|
|
|
use app\common\model\BillApply;
|
|
@@ -65,7 +66,7 @@ class OrderCallback
|
|
|
}
|
|
|
|
|
|
|
|
|
- // 订单金额退款
|
|
|
+ // 商城订单执行退款
|
|
|
public static function refundMoney($refund_info =[],$order_info=[],$order_id = 0)
|
|
|
{
|
|
|
$ret = ['code'=>200,'msg'=>'退款成功'];
|
|
@@ -76,48 +77,20 @@ class OrderCallback
|
|
|
$refund_no = $refund_info['refund_no'] ? $refund_info['refund_no'] : get_order_sn();
|
|
|
Db::startTrans();
|
|
|
try {
|
|
|
- switch ($order_info['pay_type']){
|
|
|
- case 1:
|
|
|
- $app = Factory::payment(config('app.wx_pay'));
|
|
|
- $result = $app->refund->byOutTradeNumber($order_info['pay_no'], $refund_no, $order_info['price_total']*100, $refund_info['refund_money']*100, ['refund_desc' => '订单退款']);
|
|
|
- if($result['return_code'] != 'SUCCESS') throw new Exception('退款异常');
|
|
|
- if($result['result_code'] != 'SUCCESS') throw new Exception($result['err_code_des']);
|
|
|
- // 修改退款记录状态
|
|
|
- GoodsOrderRefund::where(['id'=>$refund_info['id']])->update(['refund_no'=>$refund_no,'status'=>3]);
|
|
|
- // 修改订单状态
|
|
|
- GoodsOrder::where('id',$refund_info['order_id'])->update(['status'=>8]);
|
|
|
- // 积分退回
|
|
|
- if($order_info['integral']) UserWallet::userIntegralChange($order_info['user_id'],$order_info['integral'],'订单退款退回',9,1,$order_info['id']);
|
|
|
- // 余额退回
|
|
|
- if($order_info['balance']) UserWallet::userMoneyChange($order_info['user_id'],$order_info['balance'],'订单退款退回',2, 1,$order_info['id']);
|
|
|
- // 券暂不出来
|
|
|
- break;
|
|
|
- case 2:
|
|
|
- break;
|
|
|
- case 3:
|
|
|
- break;
|
|
|
- case 4: //4移动支付(微信)
|
|
|
- $app = Factory::payment(config('app.app_wx'));
|
|
|
- $result = $app->refund->byOutTradeNumber($order_info['pay_no'], $refund_no, $order_info['price_total']*100, $refund_info['refund_money']*100, ['refund_desc' => '订单退款']);
|
|
|
- if($result['return_code'] != 'SUCCESS') throw new Exception('退款异常');
|
|
|
- if($result['result_code'] != 'SUCCESS') throw new Exception($result['err_code_des']);
|
|
|
- // 修改退款记录状态
|
|
|
- GoodsOrderRefund::where(['id'=>$refund_info['id']])->update(['refund_no'=>$refund_no,'status'=>3]);
|
|
|
- // 修改订单状态
|
|
|
- GoodsOrder::where('id',$refund_info['order_id'])->update(['status'=>8]);
|
|
|
- // 积分退回
|
|
|
- if($order_info['integral']) UserWallet::userIntegralChange($order_info['user_id'],$order_info['integral'],'订单退款退回',9,1,$order_info['id']);
|
|
|
- // 余额退回
|
|
|
- if($order_info['balance']) UserWallet::userMoneyChange($order_info['user_id'],$order_info['balance'],'订单退款退回',2, 1,$order_info['id']);
|
|
|
- // 券暂不出来
|
|
|
- break;
|
|
|
- case 5:
|
|
|
- break;
|
|
|
- case 6:
|
|
|
- break;
|
|
|
+ //微信退款
|
|
|
+ if(in_array($order_info['pay_type'],[1,3,5,6])){
|
|
|
+ $app = $order_info['pay_type'] == 3 ? Factory::payment(config('app.app_wx')) : Factory::payment(config('app.wx_pay'));
|
|
|
+ $result = $app->refund->byOutTradeNumber($order_info['pay_no'], $refund_no, $order_info['price_total'] * 100, $refund_info['refund_money']*100, ['refund_desc' => '订单退款']);
|
|
|
+ if($result['return_code'] != 'SUCCESS') throw new Exception('微信退款异常');
|
|
|
+ if($result['result_code'] != 'SUCCESS') throw new Exception($result['err_code_des']);
|
|
|
+ GoodsOrderRefund::where(['id'=>$refund_info['id']])->update(['refund_no'=>$refund_no,'status'=>3]);
|
|
|
+ }
|
|
|
+ // 支付宝退款
|
|
|
+ if(in_array($order_info['pay_type'],[2,4,7])) {
|
|
|
+ $result = Alipay::aliRefund($order_info['pay_no'], $refund_info['refund_money'],$order_info['pay_type'] == 4 ?'APP':'H5');
|
|
|
+ if(!$result) throw new Exception('支付宝退款异常');
|
|
|
+ GoodsOrderRefund::where(['id'=>$refund_info['id']])->update(['refund_no'=>$refund_no,'status'=>3]);
|
|
|
}
|
|
|
- // 订单相关返利追回
|
|
|
- self::goodsOrderRefundBack($order_info , $order_id);
|
|
|
Db::commit();
|
|
|
}catch (\Exception $e){
|
|
|
$ret['code'] = 201;
|