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

5 months ago
  1. <?php
  2. namespace App\Http\Controllers;
  3. use App\Services\OutService;
  4. use Illuminate\Http\Request;
  5. class OutAPIController extends Controller
  6. {
  7. private $fieldLocale = [
  8. 'accountName' => '收款人姓名',
  9. 'accountNo' => '收款账号',
  10. 'amount' => '代付金额',
  11. 'appId' => '应用ID',
  12. 'bankCode' => '收款账户开户行编码',
  13. 'bankName' => '收款账户开户行名称',
  14. 'channelExtra' => '渠道特殊参数',
  15. 'channelOrderNo' => '渠道转账单号',
  16. 'clientIp' => '客户端IP',
  17. 'createdAt' => '创建时间',
  18. 'currency' => '货币代码',
  19. 'entryType' => '入账方式',
  20. 'errCode' => '渠道错误码',
  21. 'errMsg' => '渠道错误描述',
  22. 'extParam' => '扩展参数',
  23. 'extraParam' => '扩展参数',
  24. 'ifCode' => '渠道码',
  25. 'mchNo' => '商户号',
  26. 'mchOrderNo' => '商户订单号',
  27. 'notifyUrl' => '异步通知地址',
  28. 'reqTime' => '请求时间',
  29. 'sign' => '签名',
  30. 'signType' => '签名类型',
  31. 'state' => '转账状态',
  32. 'successTime' => '成功时间',
  33. 'transferDesc' => '转账备注信息',
  34. 'transferId' => '转账订单号',
  35. 'version' => '接口版本',
  36. ];
  37. public function queryBalance(Request $request, OutService $outService)
  38. {
  39. $request->validate([
  40. 'mchNo' => 'required|string|max:30',
  41. 'appId' => 'required|string|max:24',
  42. 'ifCode' => 'required|string',
  43. 'reqTime' => 'required|integer',
  44. 'version' => 'required|string',
  45. 'sign' => 'required|string|size:32',
  46. 'signType' => 'required|string',
  47. ], [], $this->fieldLocale);
  48. $params = [
  49. 'mchNo' => $request->input('mchNo'),
  50. 'appId' => $request->input('appId'),
  51. 'ifCode' => $request->input('ifCode'),
  52. 'reqTime' => $request->integer('reqTime'),
  53. 'version' => $request->input('version'),
  54. 'sign' => $request->input('sign'),
  55. 'signType' => $request->input('signType'),
  56. ];
  57. try {
  58. [$data, $sign] = $outService->queryBalance($params);
  59. return success($data, $sign);
  60. } catch (\Throwable $e) {
  61. return error($e->getMessage());
  62. }
  63. }
  64. public function transferOrder(Request $request, OutService $outService)
  65. {
  66. $request->validate([
  67. 'ifCode' => 'required|string',
  68. 'mchNo' => 'required|string|max:30',
  69. 'appId' => 'required|string|max:24',
  70. 'mchOrderNo' => 'required|string|max:30',
  71. 'entryType' => 'required|string|in:ALIPAY_CASH,BANK_CARD,COMPANY_BANK_CARD,ALIPAY_ACCOUNT_BOOK',
  72. 'amount' => 'required|integer',
  73. 'currency' => 'required|string|in:cny',
  74. 'accountNo' => 'required|string|max:64',
  75. 'accountName' => 'required_if:entryType,ALIPAY_CASH,BANK_CARD,COMPANY_BANK_CARD|string|max:64',
  76. 'bankName' => 'nullable|string|max:255',
  77. 'bankCode' => 'nullable|string|max:64',
  78. 'clientIp' => 'nullable|string|max:32',
  79. 'transferDesc' => 'required|string|max:100',
  80. 'notifyUrl' => 'nullable|string|max:255',
  81. 'extParam' => 'nullable|string|max:512',
  82. 'channelExtra' => 'nullable|string',
  83. 'reqTime' => 'required|integer',
  84. 'version' => 'required|string',
  85. 'sign' => 'required|string|size:32',
  86. 'signType' => 'required|string',
  87. ], [], $this->fieldLocale);
  88. $params = [
  89. 'ifCode' => $request->input('ifCode'),
  90. 'mchNo' => $request->input('mchNo'),
  91. 'appId' => $request->input('appId'),
  92. 'mchOrderNo' => $request->input('mchOrderNo'),
  93. 'entryType' => $request->input('entryType'),
  94. 'amount' => $request->integer('amount'),
  95. 'currency' => $request->input('currency'),
  96. 'accountNo' => $request->input('accountNo'),
  97. 'accountName' => $request->input('accountName'),
  98. 'bankName' => $request->input('bankName'),
  99. 'bankCode' => $request->input('bankCode'),
  100. 'clientIp' => $request->input('clientIp'),
  101. 'transferDesc' => $request->input('transferDesc'),
  102. 'notifyUrl' => $request->input('notifyUrl'),
  103. 'extParam' => $request->input('extParam'),
  104. 'channelExtra' => $request->input('channelExtra'),
  105. 'reqTime' => $request->integer('reqTime'),
  106. 'version' => $request->input('version'),
  107. 'sign' => $request->input('sign'),
  108. 'signType' => $request->input('signType'),
  109. ];
  110. try {
  111. [$data, $sign] = $outService->transferOrder($params);
  112. return success($data, $sign);
  113. } catch (\Throwable $e) {
  114. return error($e->getMessage());
  115. }
  116. }
  117. public function transferQuery(Request $request, OutService $outService)
  118. {
  119. $request->validate([
  120. 'mchNo' => 'required|string|max:30',
  121. 'appId' => 'required|string|max:24',
  122. 'transferId' => 'required_without:mchOrderNo|string|max:30',
  123. 'mchOrderNo' => 'required_without:transferId|string|max:30',
  124. 'reqTime' => 'required|integer',
  125. 'version' => 'required|string',
  126. 'sign' => 'required|string|size:32',
  127. 'signType' => 'required|string',
  128. ], [], $this->fieldLocale);
  129. $params = [
  130. 'mchNo' => $request->input('mchNo'),
  131. 'appId' => $request->input('appId'),
  132. 'transferId' => $request->input('transferId'),
  133. 'mchOrderNo' => $request->input('mchOrderNo'),
  134. 'reqTime' => $request->integer('reqTime'),
  135. 'version' => $request->input('version'),
  136. 'sign' => $request->input('sign'),
  137. 'signType' => $request->input('signType'),
  138. ];
  139. try {
  140. [$data, $sign] = $outService->transferQuery($params);
  141. return success($data, $sign);
  142. } catch (\Throwable $e) {
  143. return error($e->getMessage());
  144. }
  145. }
  146. }