You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 

47 lines
1.2 KiB

<?php
namespace App\Service;
use App\Model\OrderMain;
use EasyWeChat\Factory;
use Hyperf\DbConnection\Db;
use App\Constants\ErrorCode;
class PayRefundService implements PayRefundServiceInterface
{
/**
* 微信支付退款
*/
public function wxPayRefund($global_order_id)
{
$config = config('wxpay');
$app = Factory::payment($config);
$app['guzzle_handler'] = CoroutineHandler::class;
$result = [
'status' => 0,
'msg' => '退款成功'
];
// 查询订单
$orderMain = OrderMain::query()
->select('id','code','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();
if(empty($orderMain)){
return ['status'=>1, 'msg'=>'订单不存在或已退款'];
}
$optional = [];
$result = $app->refund->byOutTradeNumber(
$orderMain->code,
$orderMain->code,
$orderMain->money * 100,
$orderMain->money * 100,
$optional
);
return $result;
}
}