|
- <?php
-
- namespace App\Http\Controllers\Web\RobotPayment\CreditCard;
-
- use App\Http\Controllers\Web\WebController;
- use App\Kintone\Models\CreditcardAutoPaymentInfo;
- use App\Kintone\Models\CreditcardAutoPaymentResult;
- use App\Util\DateUtil;
- use Exception;
- use Illuminate\Database\Eloquent\ModelNotFoundException;
- use Illuminate\Http\Request;
- use Illuminate\Http\Response;
- use Illuminate\Support\Facades\Log;
- use LogicException;
-
- class PaymentResultController extends WebController
- {
-
- public function name(): string
- {
- return "クレジットカード 決済結果";
- }
-
- public function description(): string
- {
- return "クレジットカード 決済結果";
- }
-
-
- public function __construct(protected PaymentResultParam $param)
- {
- parent::__construct();
- }
-
- protected function run(Request $request): Response
- {
- $param = $this->param;
- logger("リクエスト受信 creditcard result", ["param" => $request->all()]);
-
- try {
-
- $info = CreditcardAutoPaymentInfo::getAccess()->first(
- CreditcardAutoPaymentInfo::getQuery()
- ->where(CreditcardAutoPaymentInfo::FIELD_AUTO_PAYMENT_NO, $param->acid)
- ->where(CreditcardAutoPaymentInfo::FIELD_SHOP_ORDER_NO, $param->cod)
- );
- } catch (ModelNotFoundException $e) {
- Log::error(sprintf(
- "自動課金情報が存在しないため、クレジットカードの決済結果保存不可 自動課金番号<%s> 店舗側オーダー番号<%s>",
- $param->acid,
- $param->cod
- ));
- throw $e;
- }
-
- $this->クレジット支払結果登録($info);
-
- return response()->view('robot-payment.creditcard.ok');
- }
-
-
- private function クレジット支払結果登録(CreditcardAutoPaymentInfo $info)
- {
- $param = $this->param;
-
- $result = new CreditcardAutoPaymentResult();
- $result->creditcardAutoPaymentNo = $info->autoPaymentNo;
- $result->paymentNo = $param->gid;
- $result->paymentDate = DateUtil::now();
- $result->paymentResult = $this->get決済結果($param->rst);
- $result->errorCode = $param->ec;
- $result->paymentAmount = $info->paymentAmount;
-
- // 機密な情報をリクエストデータから除外して登録する
- $requestArr = request()->toArray();
- unset($requestArr["token"]);
- unset($requestArr["id"]);
- unset($requestArr["pa"]);
- $result->dataResult = json_encode(
- $requestArr,
- JSON_UNESCAPED_SLASHES | JSON_UNESCAPED_UNICODE | JSON_PRETTY_PRINT
- );
-
- $result->save();
- }
-
- private function get決済結果(string $paymentResultCode): string
- {
- if ($paymentResultCode === "1") {
- return "決済成功";
- }
- if ($paymentResultCode === "2") {
- return "決済失敗";
- }
- if ($paymentResultCode === "3") {
- return "リトライ課金失敗";
- }
- if ($paymentResultCode === "4") {
- return "ユーザー様による課金停止";
- }
- if ($paymentResultCode === "5") {
- return "お試し期間中にリトライ課金課金2回失敗";
- }
-
- throw new Exception("不正な決済結果コード " . $paymentResultCode);
- }
- }
|