|
|
|
@ -9,6 +9,8 @@ use App\Commons\Log; |
|
|
|
use App\Constants\LogLabel; |
|
|
|
use Hyperf\Di\Annotation\Inject; |
|
|
|
use Hyperf\Guzzle\CoroutineHandler; |
|
|
|
use Hyperf\Database\Exception\QueryException; |
|
|
|
use App\Exception\BusinessException; |
|
|
|
|
|
|
|
class WxRefundService implements WxRefundServiceInterface |
|
|
|
{ |
|
|
|
@ -23,33 +25,42 @@ class WxRefundService implements WxRefundServiceInterface |
|
|
|
*/ |
|
|
|
public function wxPayRefund($global_order_id) |
|
|
|
{ |
|
|
|
$config = config('wxpay'); |
|
|
|
$app = Factory::payment($config); |
|
|
|
$app['guzzle_handler'] = CoroutineHandler::class; |
|
|
|
|
|
|
|
// 查询订单
|
|
|
|
$orderMain = OrderMain::query() |
|
|
|
->select('id','global_order_id','order_num','money','state') |
|
|
|
try{ |
|
|
|
$config = config('wxpay'); |
|
|
|
$app = Factory::payment($config); |
|
|
|
$app['guzzle_handler'] = CoroutineHandler::class; |
|
|
|
|
|
|
|
// 查询订单
|
|
|
|
$orderMain = OrderMain::query() |
|
|
|
->select(['id','global_order_id','order_num','money','state']) |
|
|
|
->where('global_order_id',$global_order_id) |
|
|
|
->where('pay_type',OrderMain::ORDER_PAY_WX) |
|
|
|
->where(Db::raw('refund_time is null')) |
|
|
|
->first()->toArray(); |
|
|
|
->whereRaw('refund_time is null') |
|
|
|
->first(); |
|
|
|
|
|
|
|
if(empty($orderMain)){ |
|
|
|
return false; |
|
|
|
}; |
|
|
|
if(empty($orderMain)){ |
|
|
|
return false; |
|
|
|
}; |
|
|
|
|
|
|
|
$options = [ |
|
|
|
'refund_desc' => '线上订单退款', |
|
|
|
// 'notify_url' => config('site_host') . '/wechat/notify/wxpayrefund'
|
|
|
|
]; |
|
|
|
$result = $app->refund->byOutTradeNumber( |
|
|
|
$orderMain->global_order_id, |
|
|
|
$orderMain->global_order_id, |
|
|
|
$orderMain->money * 100, |
|
|
|
$orderMain->money * 100, |
|
|
|
$options |
|
|
|
); |
|
|
|
$options = [ |
|
|
|
'refund_desc' => '线上订单退款', |
|
|
|
// 'notify_url' => config('site_host') . '/wechat/notify/wxpayrefund'
|
|
|
|
]; |
|
|
|
$result = $app->refund->byOutTradeNumber( |
|
|
|
$orderMain->global_order_id, |
|
|
|
$orderMain->global_order_id, |
|
|
|
$orderMain->money * 100, |
|
|
|
$orderMain->money * 100, |
|
|
|
$options |
|
|
|
); |
|
|
|
} catch (QueryException $e) { |
|
|
|
$this->log->event(LogLabel::WX_PAY_REFUND,$e->getMessage()); |
|
|
|
return false; |
|
|
|
} catch (BusinessException $e){ |
|
|
|
$this->log->event(LogLabel::WX_PAY_REFUND,$e->getMessage()); |
|
|
|
return false; |
|
|
|
} |
|
|
|
|
|
|
|
$this->log->event(LogLabel::WX_PAY_REFUND,$result); |
|
|
|
return $result; |
|
|
|
} |
|
|
|
|