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.
58 lines
1.5 KiB
58 lines
1.5 KiB
<?php
|
|
|
|
namespace App\Service;
|
|
|
|
use App\Model\OrderMain;
|
|
use EasyWeChat\Factory;
|
|
use Hyperf\DbConnection\Db;
|
|
use App\Commons\Log;
|
|
use App\Constants\LogLabel;
|
|
use Hyperf\Di\Annotation\Inject;
|
|
use Hyperf\Guzzle\CoroutineHandler;
|
|
|
|
class WxRefundService implements WxRefundServiceInterface
|
|
{
|
|
/**
|
|
* @Inject
|
|
* @var Log
|
|
*/
|
|
protected $log;
|
|
|
|
/**
|
|
* 微信支付退款
|
|
*/
|
|
public function wxPayRefund($global_order_id)
|
|
{
|
|
$config = config('wxpay');
|
|
$app = Factory::payment($config);
|
|
$app['guzzle_handler'] = CoroutineHandler::class;
|
|
|
|
$orderMain = $global_order_id;
|
|
// 查询订单
|
|
// $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();
|
|
|
|
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
|
|
);
|
|
$this->log->event(LogLabel::WX_PAY_REFUND,$result);
|
|
return $result;
|
|
}
|
|
|
|
}
|