示例#1
0
 public function testCompletePurchase()
 {
     /** @var \Omnipay\MultiSafepay\Message\CompletePurchaseRequest $request */
     $request = $this->gateway->completePurchase($this->options);
     /** @var CreditCard $card */
     $card = $request->getCard();
     $this->assertInstanceOf('Omnipay\\MultiSafepay\\Message\\CompletePurchaseRequest', $request);
     $this->assertSame('http://localhost/notify', $request->getNotifyUrl());
     $this->assertSame('http://localhost/cancel', $request->getCancelUrl());
     $this->assertSame('http://localhost/return', $request->getReturnUrl());
     $this->assertSame('IDEAL', $request->getGateway());
     $this->assertSame('issuer', $request->getIssuer());
     $this->assertSame('123456', $request->getTransactionId());
     $this->assertSame('EUR', $request->getCurrency());
     $this->assertSame('100.00', $request->getAmount());
     $this->assertSame('desc', $request->getDescription());
     $this->assertSame('extra 1', $request->getExtraData1());
     $this->assertSame('extra 2', $request->getExtraData2());
     $this->assertSame('extra 3', $request->getExtraData3());
     $this->assertSame('a language', $request->getLanguage());
     $this->assertSame('analytics code', $request->getGoogleAnalyticsCode());
     $this->assertSame('127.0.0.1', $request->getClientIp());
     $this->assertSame('*****@*****.**', $card->getEmail());
     $this->assertSame('first name', $card->getFirstName());
     $this->assertSame('last name', $card->getLastName());
     $this->assertSame('address 1', $card->getAddress1());
     $this->assertSame('address 2', $card->getAddress2());
     $this->assertSame('1000', $card->getPostcode());
     $this->assertSame('a city', $card->getCity());
     $this->assertSame('a country', $card->getCountry());
     $this->assertSame('phone number', $card->getPhone());
 }
示例#2
0
 public function testCompletePurchaseRequest()
 {
     $request = $this->gateway->completePurchase(array('amount' => 10.0));
     $this->assertInstanceOf('Omnipay\\MultiSafepay\\Message\\RestCompletePurchaseRequest', $request);
     $this->assertEquals($request->getAmount(), 10.0);
 }
 public function approveAndDeposit(FinancialTransactionInterface $transaction, $retry)
 {
     if ($transaction->getState() === FinancialTransactionInterface::STATE_NEW) {
         throw $this->createRedirectActionException($transaction);
     }
     if (null !== ($trackingId = $transaction->getTrackingId())) {
         /**
          * @var \Omnipay\MultiSafepay\Message\CompletePurchaseRequest $completePurchaseRequest
          */
         $completePurchaseRequest = $this->gateway->completePurchase(array('transactionId' => $trackingId));
         $status = $completePurchaseRequest->send();
         $rawData = $status->getData();
         if ($this->logger) {
             $this->logger->info('TransactionStatus: Paid=' . $status->isSuccessful() . ", Status=" . $status->getPaymentStatus() . ", TransactionId=" . $status->getTransactionReference() . ", ID=" . (string) $rawData->ewallet->id);
         }
         if ($status->isSuccessful()) {
             $transaction->setReferenceNumber((string) $rawData->ewallet->id);
             $transaction->setProcessedAmount((string) $rawData->customer->amount / 100);
             $transaction->setResponseCode(PluginInterface::RESPONSE_CODE_SUCCESS);
             $transaction->setReasonCode(PluginInterface::REASON_CODE_SUCCESS);
             if ("IDEAL" === (string) $rawData->paymentdetails->type) {
                 $transaction->getExtendedData()->set('consumer_name', (string) $rawData->paymentdetails->accountholdername);
                 $transaction->getExtendedData()->set('consumer_account_number', (string) $rawData->paymentdetails->accountiban);
             }
             if ($this->logger) {
                 $this->logger->info(sprintf('Payment is successful for transaction "%s".', $transaction->getTrackingId()));
             }
             return;
         }
         if ($status->isCanceled()) {
             $ex = new FinancialException('Payment cancelled.');
             $ex->setFinancialTransaction($transaction);
             $transaction->setResponseCode('CANCELLED');
             $transaction->setReasonCode('CANCELLED');
             $transaction->setState(FinancialTransactionInterface::STATE_CANCELED);
             if ($this->logger) {
                 $this->logger->info(sprintf('Payment cancelled for transaction "%s".', $transaction->getTrackingId()));
             }
             throw $ex;
         }
         if ($status->isRejected()) {
             $ex = new FinancialException('Payment failed.');
             $ex->setFinancialTransaction($transaction);
             $transaction->setResponseCode('FAILED');
             $transaction->setReasonCode('FAILED');
             $transaction->setState(FinancialTransactionInterface::STATE_FAILED);
             if ($this->logger) {
                 $this->logger->info(sprintf('Payment failed for transaction "%s".', $transaction->getTrackingId()));
             }
             throw $ex;
         }
         if ($status->isExpired()) {
             $ex = new FinancialException('Payment expired.');
             $ex->setFinancialTransaction($transaction);
             $transaction->setResponseCode('EXPIRED');
             $transaction->setReasonCode('EXPIRED');
             $transaction->setState(FinancialTransactionInterface::STATE_FAILED);
             if ($this->logger) {
                 $this->logger->info(sprintf('Payment is expired for transaction "%s".', $transaction->getTrackingId()));
             }
             throw $ex;
         }
         if ($this->logger) {
             $this->logger->info(sprintf('Waiting for notification from MultiSafepay for transaction "%s".', $transaction->getTrackingId()));
         }
         throw new BlockedException("Waiting for notification from MultiSafepay.");
     }
 }