Nelze vybrat více než 25 témat Téma musí začínat písmenem nebo číslem, může obsahovat pomlčky („-“) a může být dlouhé až 35 znaků.

107 řádky
2.9KB

  1. <?php
  2. namespace App\Http\Controllers\Web\RobotPayment\BanckCheck;
  3. use App\Exceptions\AppCommonException;
  4. use App\Http\Controllers\Web\WebController;
  5. use App\Kintone\Models\BankCheckResult;
  6. use Illuminate\Http\Request;
  7. use Illuminate\Http\Response;
  8. use Illuminate\Support\Carbon;
  9. class PaymentInfoController extends WebController
  10. {
  11. public function name(): string
  12. {
  13. return "バンクチェック 決済結果";
  14. }
  15. public function description(): string
  16. {
  17. return "バンクチェック 決済結果";
  18. }
  19. public function __construct(protected PaymentInfoParam $param)
  20. {
  21. parent::__construct();
  22. }
  23. protected function run(Request $request): Response
  24. {
  25. $param = $this->param;
  26. logger("リクエスト受信 bankcheck");
  27. if ($param->token !== config('custom.bank-check.token')) {
  28. abort(403);
  29. }
  30. if ($param->ap === "BANK") {
  31. $this->handleEntry();
  32. } else if ($param->ap === "BAN_SAL") {
  33. $this->handlePayment();
  34. }
  35. return response()->view('robot-payment.bank-check.ok');
  36. }
  37. private function handleEntry()
  38. {
  39. $param = $this->param;
  40. $model = new BankCheckResult();
  41. $model->customerCode = $param->customerCode;
  42. $model->entryRecordNo = $param->entryRecordNo;
  43. $model->shopOrderNo = $param->cod;
  44. $model->paymentNo = $param->gid;
  45. $model->orderCode = $param->god;
  46. $model->entryResult = $param->rst;
  47. $model->entryErrorCode = $param->ec;
  48. $model->paymentPlanAmount = intval($param->am);
  49. $model->paymentExpiresDate = Carbon::createFromFormat("Ymd", $param->exp);
  50. $requestArr = request()->toArray();
  51. unset($requestArr["token"]);
  52. $model->dataEntry = json_encode(
  53. $requestArr,
  54. JSON_UNESCAPED_SLASHES | JSON_UNESCAPED_UNICODE | JSON_PRETTY_PRINT
  55. );
  56. $model->save();
  57. }
  58. private function handlePayment()
  59. {
  60. $param = $this->param;
  61. $model = BankCheckResult::getAccess()
  62. ->first(BankCheckResult::getQuery()->where(
  63. BankCheckResult::FIELD_SHOP_ORDER_NO,
  64. $param->cod
  65. ));
  66. if ($model === null) {
  67. throw new AppCommonException(sprintf(
  68. "存在しない店舗側オーダー番号:[%s]",
  69. $param->cod
  70. ));
  71. }
  72. $model->paymentResult = $param->rst;
  73. $model->paymentErrorCode = $param->ec;
  74. $model->paymentAmount = intval($param->nk);
  75. $model->paymentDate = Carbon::createFromFormat("Ymd", $param->nkd);
  76. $requestArr = request()->toArray();
  77. unset($requestArr["token"]);
  78. $model->dataResult = json_encode(
  79. $requestArr,
  80. JSON_UNESCAPED_SLASHES | JSON_UNESCAPED_UNICODE | JSON_PRETTY_PRINT
  81. );
  82. $model->save();
  83. }
  84. }