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.
158 lines
6.5 KiB
158 lines
6.5 KiB
<?php
|
|
|
|
namespace App\Http\Controllers;
|
|
|
|
use App\Services\OutService;
|
|
use Illuminate\Http\Request;
|
|
|
|
class OutAPIController extends Controller
|
|
{
|
|
private $fieldLocale = [
|
|
'accountName' => '收款人姓名',
|
|
'accountNo' => '收款账号',
|
|
'amount' => '代付金额',
|
|
'appId' => '应用ID',
|
|
'bankCode' => '收款账户开户行编码',
|
|
'bankName' => '收款账户开户行名称',
|
|
'channelExtra' => '渠道特殊参数',
|
|
'channelOrderNo' => '渠道转账单号',
|
|
'clientIp' => '客户端IP',
|
|
'createdAt' => '创建时间',
|
|
'currency' => '货币代码',
|
|
'entryType' => '入账方式',
|
|
'errCode' => '渠道错误码',
|
|
'errMsg' => '渠道错误描述',
|
|
'extParam' => '扩展参数',
|
|
'extraParam' => '扩展参数',
|
|
'ifCode' => '渠道码',
|
|
'mchNo' => '商户号',
|
|
'mchOrderNo' => '商户订单号',
|
|
'notifyUrl' => '异步通知地址',
|
|
'reqTime' => '请求时间',
|
|
'sign' => '签名',
|
|
'signType' => '签名类型',
|
|
'state' => '转账状态',
|
|
'successTime' => '成功时间',
|
|
'transferDesc' => '转账备注信息',
|
|
'transferId' => '转账订单号',
|
|
'version' => '接口版本',
|
|
];
|
|
|
|
public function queryBalance(Request $request, OutService $outService)
|
|
{
|
|
$request->validate([
|
|
'mchNo' => 'required|string|max:30',
|
|
'appId' => 'required|string|max:24',
|
|
'ifCode' => 'required|string',
|
|
'reqTime' => 'required|integer',
|
|
'version' => 'required|string',
|
|
'sign' => 'required|string|size:32',
|
|
'signType' => 'required|string',
|
|
], [], $this->fieldLocale);
|
|
|
|
$params = [
|
|
'mchNo' => $request->input('mchNo'),
|
|
'appId' => $request->input('appId'),
|
|
'ifCode' => $request->input('ifCode'),
|
|
'reqTime' => $request->integer('reqTime'),
|
|
'version' => $request->input('version'),
|
|
'sign' => $request->input('sign'),
|
|
'signType' => $request->input('signType'),
|
|
];
|
|
|
|
try {
|
|
[$data, $sign] = $outService->queryBalance($params);
|
|
return success($data, $sign);
|
|
} catch (\Throwable $e) {
|
|
return error($e->getMessage());
|
|
}
|
|
}
|
|
|
|
public function transferOrder(Request $request, OutService $outService)
|
|
{
|
|
$request->validate([
|
|
'ifCode' => 'required|string',
|
|
'mchNo' => 'required|string|max:30',
|
|
'appId' => 'required|string|max:24',
|
|
'mchOrderNo' => 'required|string|max:30',
|
|
'entryType' => 'required|string|in:ALIPAY_CASH,BANK_CARD,COMPANY_BANK_CARD,ALIPAY_ACCOUNT_BOOK',
|
|
'amount' => 'required|integer',
|
|
'currency' => 'required|string|in:cny',
|
|
'accountNo' => 'required|string|max:64',
|
|
'accountName' => 'required_if:entryType,ALIPAY_CASH,BANK_CARD,COMPANY_BANK_CARD|string|max:64',
|
|
'bankName' => 'nullable|string|max:255',
|
|
'bankCode' => 'nullable|string|max:64',
|
|
'clientIp' => 'nullable|string|max:32',
|
|
'transferDesc' => 'required|string|max:100',
|
|
'notifyUrl' => 'nullable|string|max:255',
|
|
'extParam' => 'nullable|string|max:512',
|
|
'channelExtra' => 'nullable|string',
|
|
'reqTime' => 'required|integer',
|
|
'version' => 'required|string',
|
|
'sign' => 'required|string|size:32',
|
|
'signType' => 'required|string',
|
|
], [], $this->fieldLocale);
|
|
|
|
$params = [
|
|
'ifCode' => $request->input('ifCode'),
|
|
'mchNo' => $request->input('mchNo'),
|
|
'appId' => $request->input('appId'),
|
|
'mchOrderNo' => $request->input('mchOrderNo'),
|
|
'entryType' => $request->input('entryType'),
|
|
'amount' => $request->integer('amount'),
|
|
'currency' => $request->input('currency'),
|
|
'accountNo' => $request->input('accountNo'),
|
|
'accountName' => $request->input('accountName'),
|
|
'bankName' => $request->input('bankName'),
|
|
'bankCode' => $request->input('bankCode'),
|
|
'clientIp' => $request->input('clientIp'),
|
|
'transferDesc' => $request->input('transferDesc'),
|
|
'notifyUrl' => $request->input('notifyUrl'),
|
|
'extParam' => $request->input('extParam'),
|
|
'channelExtra' => $request->input('channelExtra'),
|
|
'reqTime' => $request->integer('reqTime'),
|
|
'version' => $request->input('version'),
|
|
'sign' => $request->input('sign'),
|
|
'signType' => $request->input('signType'),
|
|
];
|
|
|
|
try {
|
|
[$data, $sign] = $outService->transferOrder($params);
|
|
return success($data, $sign);
|
|
} catch (\Throwable $e) {
|
|
return error($e->getMessage());
|
|
}
|
|
}
|
|
|
|
public function transferQuery(Request $request, OutService $outService)
|
|
{
|
|
$request->validate([
|
|
'mchNo' => 'required|string|max:30',
|
|
'appId' => 'required|string|max:24',
|
|
'transferId' => 'required_without:mchOrderNo|string|max:30',
|
|
'mchOrderNo' => 'required_without:transferId|string|max:30',
|
|
'reqTime' => 'required|integer',
|
|
'version' => 'required|string',
|
|
'sign' => 'required|string|size:32',
|
|
'signType' => 'required|string',
|
|
], [], $this->fieldLocale);
|
|
|
|
$params = [
|
|
'mchNo' => $request->input('mchNo'),
|
|
'appId' => $request->input('appId'),
|
|
'transferId' => $request->input('transferId'),
|
|
'mchOrderNo' => $request->input('mchOrderNo'),
|
|
'reqTime' => $request->integer('reqTime'),
|
|
'version' => $request->input('version'),
|
|
'sign' => $request->input('sign'),
|
|
'signType' => $request->input('signType'),
|
|
];
|
|
|
|
try {
|
|
[$data, $sign] = $outService->transferQuery($params);
|
|
return success($data, $sign);
|
|
} catch (\Throwable $e) {
|
|
return error($e->getMessage());
|
|
}
|
|
}
|
|
}
|