/**
  * {@inheritDoc}
  *
  * @param Capture $request
  */
 public function execute($request)
 {
     RequestNotSupportedException::assertSupports($this, $request);
     $model = ArrayObject::ensureArrayObject($request->getModel());
     $httpRequest = new GetHttpRequest();
     $this->gateway->execute($httpRequest);
     if (isset($httpRequest->request[Api::FIELD_V2_HASH])) {
         $model->replace($httpRequest->request);
         //validate hash
         if (false === $this->api->verifyHash($httpRequest->request[Api::FIELD_V2_HASH], $httpRequest->request)) {
             throw new HttpRedirect((string) $request->getToken()->getAfterUrl());
         }
     } else {
         //payment canceled
         if (isset($httpRequest->request[Api::FIELD_PAYMENT_BATCH_NUM]) && (int) $httpRequest->request[Api::FIELD_PAYMENT_BATCH_NUM] === 0) {
             $model->replace($httpRequest->request);
             throw new HttpRedirect((string) $request->getToken()->getAfterUrl());
         }
         if (false === isset($model[Api::FIELD_PAYMENT_URL]) && $request->getToken()) {
             $model[Api::FIELD_PAYMENT_URL] = $request->getToken()->getTargetUrl();
         }
         if (false === isset($model[Api::FIELD_NOPAYMENT_URL]) && $request->getToken()) {
             $model[Api::FIELD_NOPAYMENT_URL] = $request->getToken()->getTargetUrl();
         }
         throw new HttpPostRedirect($this->api->getApiEndpoint(), $this->api->preparePayment($model->toUnsafeArray()));
     }
 }
 /**
  * {@inheritDoc}
  *
  * @param GetStatusInterface $request
  */
 public function execute($request)
 {
     RequestNotSupportedException::assertSupports($this, $request);
     $model = ArrayObject::ensureArrayObject($request->getModel());
     if (null === $model[Api::FIELD_V2_HASH] && null === $model[Api::FIELD_PAYMENT_BATCH_NUM]) {
         $request->markNew();
         return;
     }
     if (array_key_exists(Api::FIELD_PAYMENT_BATCH_NUM, $model) && (int) $model[Api::FIELD_PAYMENT_BATCH_NUM] === 0) {
         $request->markCanceled();
         return;
     }
     if ($model[Api::FIELD_V2_HASH] && $this->api->verifyHash($model[Api::FIELD_V2_HASH], $model->toUnsafeArray())) {
         $request->markCaptured();
         return;
     }
     $request->markFailed();
 }
Example #3
0
 /**
  * @test
  */
 public function shouldEndpointBeString()
 {
     $api = new Api(['alternate_passphrase' => 'passphares', 'payee_account' => 'account', 'display_name' => 'payment', 'sandbox' => false], $this->createHttpClientMock());
     $this->assertInternalType('string', $api->getApiEndpoint());
 }