支付宝记账本
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

<?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());
}
}
}