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()); }
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."); } }