app/Plugin/SoftbankPayment42/Factory/SbpsTradeDetailFactory.php line 63

Open in your IDE?
  1. <?php
  2. namespace Plugin\SoftbankPayment42\Factory;
  3. use Plugin\SoftbankPayment42\Entity\SbpsTradeDetail;
  4. use Plugin\SoftbankPayment42\Entity\Master\SbpsTradeType as TradeType;
  5. use Plugin\SoftbankPayment42\Entity\Master\SbpsTradeDetailResultType as ResultType;
  6. use Plugin\SoftbankPayment42\Entity\SbpsTrade;
  7. use Plugin\SoftbankPayment42\Repository\ConfigRepository;
  8. use Symfony\Component\HttpFoundation\Request;
  9. class SbpsTradeDetailFactory
  10. {
  11.     /**
  12.      * @var ConfigRepository
  13.      */
  14.     private $configRepository;
  15.     public function __construct(ConfigRepository $configRepository)
  16.     {
  17.         $this->configRepository $configRepository;
  18.     }
  19.     /**
  20.      * endpointで受けたリクエストから取引詳細を生成する.
  21.      *
  22.      * @param Request $request
  23.      * @param $Trade
  24.      * @param null $tradeType
  25.      *
  26.      * @return SbpsTradeDetail
  27.      */
  28.     public function create(Request $request$Trade$tradeType null): SbpsTradeDetail
  29.     {
  30.         $captureType $this->configRepository->get()->getCaptureType();
  31.         if ($tradeType === null) {
  32.             $tradeType $captureType === TradeType::CAPTURE TradeType::CAPTURE TradeType::AR;
  33.         }
  34.         $Detail SbpsTradeDetail::create(
  35.             $request->get('res_sps_transaction_id'),
  36.             $tradeType,
  37.             ResultType::getResultType($request->get('res_result')),
  38.             $request->get('amount'),
  39.             $request->get('res_err_code'),
  40.             $request->get('res_date'),
  41.             $Trade
  42.         );
  43.         return $Detail;
  44.     }
  45.     /**
  46.      * API型のレスポンスから取引詳細を生成する.
  47.      *
  48.      * @param array $response
  49.      * @param $Trade
  50.      * @param null $tradeType
  51.      * @param $amount
  52.      *
  53.      * @return SbpsTradeDetail
  54.      */
  55.     public function createByResponse(array $response$Trade$tradeType null$amount): SbpsTradeDetail
  56.     {
  57.         $captureType $this->configRepository->get()->getCaptureType();
  58.         if ($tradeType === null) {
  59.             $tradeType $captureType === TradeType::CAPTURE TradeType::CAPTURE TradeType::AR;
  60.         }
  61.         $error_code = !empty($response['res_err_code']) ? $response['res_err_code'] : null;
  62.         $transaction_id = !empty($response['res_sps_transaction_id']) ? $response['res_sps_transaction_id'] : null;
  63.         return SbpsTradeDetail::create(
  64.             $transaction_id,
  65.             $tradeType,
  66.             ResultType::getResultType($response['res_result']),
  67.             $amount,
  68.             $error_code,
  69.             $response['res_date'],
  70.             $Trade
  71.         );
  72.     }
  73. }