代付回调
parent
4055e850f4
commit
051c2452a1
|
|
@ -2,12 +2,89 @@
|
|||
|
||||
namespace App\Endpoint\Callback\Http\Controllers;
|
||||
|
||||
use App\Enums\WalletToBankLogStatus;
|
||||
use App\Exceptions\BizException;
|
||||
use App\Models\WalletToBankLog;
|
||||
use App\Services\YeePayService;
|
||||
use Illuminate\Http\Request;
|
||||
use Illuminate\Support\Arr;
|
||||
use Illuminate\Support\Carbon;
|
||||
|
||||
class YeePayNotifyController extends Controller
|
||||
{
|
||||
public function __invoke(Request $request)
|
||||
{
|
||||
logger()->debug('yeepay notify', $request->input());
|
||||
|
||||
$this->validateSign($request);
|
||||
|
||||
switch ($request->input('service')) {
|
||||
case 'accountpay.behalf.Pay':
|
||||
$this->handleBehalfPayNotify($request);
|
||||
break;
|
||||
}
|
||||
|
||||
return 'success';
|
||||
}
|
||||
|
||||
/**
|
||||
* 处理代付回调
|
||||
*
|
||||
* @param \Illuminate\Http\Request $request
|
||||
* @return void
|
||||
*
|
||||
* @throws \App\Exceptions\BizException
|
||||
*/
|
||||
protected function handleBehalfPayNotify(Request $request)
|
||||
{
|
||||
$resultCode = $request->input('resultCode');
|
||||
|
||||
if ($resultCode === 'EXECUTE_PROCESSING') {
|
||||
return;
|
||||
}
|
||||
|
||||
$orderNo = $request->input('merchOrderNo');
|
||||
$orderStatus = $request->input('orderStatus');
|
||||
$context = (array) json_decode($request->input('contxt'), true);
|
||||
|
||||
if (Arr::get($context, 'type') === 'wallet_to_bank') {
|
||||
$log = WalletToBankLog::where('pay_sn', $orderNo)->first();
|
||||
|
||||
if ($log === null) {
|
||||
return;
|
||||
}
|
||||
|
||||
if ($orderStatus === 'SUCCESS') {
|
||||
$log->update([
|
||||
'status' => WalletToBankLogStatus::Success,
|
||||
'pay_at' => Carbon::parse($request->input('finishTime')),
|
||||
'failed_reason' => null,
|
||||
]);
|
||||
} elseif ($orderStatus === 'FAIL') {
|
||||
$log->update([
|
||||
'status' => WalletToBankLogStatus::Failed,
|
||||
'failed_reason' => $request->input('resultMessage').'#'.$resultCode,
|
||||
]);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 校验签名
|
||||
*
|
||||
* @param \Illuminate\Http\Request $request
|
||||
* @return void
|
||||
*
|
||||
* @throws \App\Exceptions\BizException
|
||||
*/
|
||||
protected function validateSign(Request $request)
|
||||
{
|
||||
$yeePayService = new YeePayService(config('services.yeepay'));
|
||||
|
||||
if ($request->input('sign') === $yeePayService->sign($request->input())) {
|
||||
return;
|
||||
}
|
||||
|
||||
throw new BizException('签名错误');
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue