public function testResponse()
 {
     foreach (array(PaymentStatus::SUCCESS, PaymentStatus::DECLINED, PaymentStatus::INCOMPLETE) as $status) {
         $response = array('orderID' => $this->faker->randomNumber('####'), 'currency' => 'CHF', 'amount' => $this->faker->randomFloat(2, 1, 100), 'PM' => $this->faker->randomElement(array(PaymentMethod::POSTFINANCE_EFINANCE, PaymentMethod::CREDITCARD, PaymentMethod::POSTFINANCE_CARD)), 'ACCEPTANCE' => 'test123', 'STATUS' => $status, 'CARDNO' => 'XXXXXXXXXXXX' . $this->faker->randomNumber('####'), 'ED' => $this->faker->numberBetween(10, 12) . $this->faker->numberBetween(10, 99), 'CN' => $this->faker->name, 'TRXDATE' => $this->faker->date('m/d/Y'), 'PAYID' => $this->faker->randomNumber('########'), 'IPCTY' => $this->faker->countryCode, 'CCCTY' => $this->faker->countryCode, 'ECI' => '5', 'CVCCheck' => 'NO', 'AAVCheck' => 'NO', 'VC' => 'NO', 'IP' => $this->faker->ipv4, 'NCERROR' => '0');
         if ($response['PM'] === PaymentMethod::CREDITCARD) {
             $response['BRAND'] = $this->faker->randomElement(array(Brand::MASTERCARD, Brand::VISA));
         } elseif ($response['PM'] === PaymentMethod::POSTFINANCE_CARD) {
             $response['BRAND'] = PaymentMethod::POSTFINANCE_CARD;
         } elseif ($response['PM'] === PaymentMethod::POSTFINANCE_EFINANCE) {
             $response['BRAND'] = PaymentMethod::POSTFINANCE_EFINANCE;
         }
         $response['SHASIGN'] = $this->createHash($response, $this->environment->getShaOut(), $this->environment->getHashAlgorithm());
         $ePayment = new PostFinanceEPayment($this->environment);
         $response = $ePayment->getResponse($response);
         $this->assertTrue($response instanceof Response);
         if ($status === PaymentStatus::SUCCESS) {
             $this->assertFalse($response->hasError());
         } else {
             $this->assertTrue($response->hasError());
         }
     }
 }
 /**
  * @param $parameters
  * @param Environment $environment
  * @param bool        $skipSignature skip signature check true / false
  *
  * @return Response
  *
  * @throws InvalidArgumentException
  * @throws NotValidSignatureException
  */
 public static function create($parameters, Environment $environment, $skipSignature = false)
 {
     $response = new self();
     $parameters = array_change_key_case($parameters, CASE_UPPER);
     $missing = array_diff(Parameter::$requiredPostSaleParameters, array_keys($parameters));
     if (count($missing) > 0) {
         throw new InvalidArgumentException(sprintf('Missing parameter(s) %s of PostFinance post-sale response', implode(', ', $missing)));
     }
     if (!$skipSignature) {
         $string = '';
         $p = Parameter::$postSaleParameters;
         sort($p);
         foreach ($p as $key) {
             if ($key === Parameter::SIGNATURE || !isset($parameters[$key]) || $parameters[$key] === '') {
                 continue;
             }
             $string .= sprintf('%s=%s%s', $key, $parameters[$key], $environment->getShaOut());
         }
         if (strtoupper(hash($environment->getHashAlgorithm(), $string)) !== $parameters[Parameter::SIGNATURE]) {
             throw new NotValidSignatureException();
         }
     }
     $response->setOrderId($parameters[Parameter::ORDER_ID])->setAmount($parameters[Parameter::AMOUNT])->setCurrency($parameters[Parameter::CURRENCY])->setAcceptance($parameters[Parameter::ACCEPTANCE])->setStatus($parameters[Parameter::STATUS])->setCardNumber($parameters[Parameter::CARD_NUMBER])->setPaymentId($parameters[Parameter::PAYMENT_ID])->setError($parameters[Parameter::NC_ERROR])->setCardExpirationDate($parameters[Parameter::EXPIRATION_DATE])->setTransactionDate(\DateTime::createFromFormat('m/d/Y', $parameters[Parameter::TRANSACTION_DATE]))->setCardHolderName($parameters[Parameter::CARD_HOLDER])->setIp($parameters[Parameter::IP]);
     if (isset($parameters[Parameter::ALIAS]) && !empty($parameters[Parameter::ALIAS])) {
         $response->setAlias($parameters[Parameter::ALIAS]);
     }
     switch ($parameters['PM']) {
         case 'CreditCard':
             $response->setPaymentMethod(PaymentMethod::CREDITCARD);
             switch ($parameters['BRAND']) {
                 case 'MasterCard':
                     $response->setBrand(Brand::MASTERCARD);
                     break;
                 case 'Visa':
                     $response->setBrand(Brand::VISA);
                     break;
             }
             break;
         case 'PostFinance e-finance':
             $response->setPaymentMethod(PaymentMethod::POSTFINANCE_EFINANCE);
             $response->setBrand(Brand::POSTFINANCE_EFINANCE);
             break;
         case 'PostFinance Card':
             $response->setPaymentMethod(PaymentMethod::POSTFINANCE_CARD);
             $response->setBrand(Brand::POSTFINANCE_CARD);
             break;
     }
     return $response;
 }
Esempio n. 3
0
 /**
  * returns an URL for a GET request to the payment process.
  *
  * @return string
  */
 public function getUrl()
 {
     $this->finalizeParameters();
     return sprintf('%s?%s', $this->environment->getGatewayUrl(), http_build_query($this->parameters->getAll()));
 }