function testToXmlWithNull()
    {
        $data = null;
        $t = new PaymentMethods();
        $parent = XmlSerializer::createDocument('payment_methods');
        $t->toXml($data, $parent);
        $this->assertEqual($parent->ownerDocument->saveXml(), '<?xml version="1.0" encoding="UTF-8"?>
<payment_methods/>
');
    }
 /**
  * Build a transaction object to be added to payment request
  * @param array $parameters the parameters to build a transaction
  * @param strng $lang to be used
  * @return the transaction built
  * @throws InvalidArgumentException if any paramter is invalid
  * 
  */
 private static function buildTransactionRequest($parameters, $lang)
 {
     $transaction = new stdClass();
     $order = null;
     $transaction->paymentCountry = CommonRequestUtil::getParameter($parameters, PayUParameters::COUNTRY);
     if (CommonRequestUtil::getParameter($parameters, PayUParameters::ORDER_ID) == null) {
         $signature = null;
         if (CommonRequestUtil::getParameter($parameters, PayUParameters::SIGNATURE) != null) {
             $signature = CommonRequestUtil::getParameter($parameters, PayUParameters::SIGNATURE);
         }
         $merchantId = PayU::$merchantId;
         $order = RequestPaymentsUtil::buildOrderRequest($parameters, $lang);
         if ($signature == null && $merchantId != null) {
             $signature = SignatureUtil::buildSignature($order, $merchantId, PayU::$apiKey, SignatureUtil::MD5_ALGORITHM);
         }
         $order->signature = $signature;
         $transaction->order = $order;
     } else {
         $orderId = CommonRequestUtil::getParameter($parameters, PayUParameters::ORDER_ID);
         $order = new stdClass();
         $order->orderId($orderId);
         $transaction . setOrder($order);
     }
     $transaction->order->buyer = RequestPaymentsUtil::buildBuyer($parameters);
     if (CommonRequestUtil::getParameter($parameters, PayUParameters::PAYER_IP_ADDRESS) != null) {
         $transaction->ipAddress = CommonRequestUtil::getParameter($parameters, PayUParameters::PAYER_IP_ADDRESS);
     } else {
         $transaction->ipAddress = RequestPaymentsUtil::getIpAddress();
     }
     if (CommonRequestUtil::getParameter($parameters, PayUParameters::PAYER_COOKIE) != null) {
         $transaction->cookie = CommonRequestUtil::getParameter($parameters, PayUParameters::PAYER_COOKIE);
     } else {
         $transaction->cookie = 'cookie_' . microtime();
     }
     $transaction->userAgent = sprintf("%s %s", PayU::API_NAME, PayU::API_VERSION);
     $transaction->source = PayU::API_CODE_NAME;
     if (CommonRequestUtil::getParameter($parameters, PayUParameters::CREDIT_CARD_NUMBER) != null) {
         $transaction->creditCard = RequestPaymentsUtil::buildCreditCardTransaction($transaction, $parameters);
     } else {
         if (CommonRequestUtil::getParameter($parameters, PayUParameters::TOKEN_ID) != null) {
             $transaction->creditCard = RequestPaymentsUtil::buildCreditCardForToken($parameters);
         }
     }
     if (CommonRequestUtil::getParameter($parameters, PayUParameters::INSTALLMENTS_NUMBER) != null) {
         $transaction = RequestPaymentsUtil::addExtraParameter($transaction, PayUKeyMapName::TRANSACTION_INSTALLMENTS_NUMBER, CommonRequestUtil::getParameter($parameters, PayUParameters::INSTALLMENTS_NUMBER));
     }
     $expirationDate = CommonRequestUtil::getParameter($parameters, PayUParameters::EXPIRATION_DATE);
     if (isset($expirationDate) && CommonRequestUtil::isValidDate($expirationDate, PayUConfig::PAYU_DATE_FORMAT, PayUParameters::EXPIRATION_DATE)) {
         $transaction->expirationDate = $expirationDate;
     }
     $transaction->creditCardTokenId = CommonRequestUtil::getParameter($parameters, PayUParameters::TOKEN_ID);
     $paymentMethod = CommonRequestUtil::getParameter($parameters, PayUParameters::PAYMENT_METHOD);
     if (!PaymentMethods::isValidPaymentMethod($paymentMethod)) {
         throw new InvalidArgumentException(sprintf("The payment method value %s sent in parameter %s is invalid", $paymentMethod, PayUParameters::PAYMENT_METHOD));
     }
     $transaction->paymentMethod = $paymentMethod;
     $transaction->payer = RequestPaymentsUtil::buildPayer($parameters);
     $transaction->order = $order;
     return $transaction;
 }
 /**
  * Makes payment petition
  *
  * @param parameters The parameters to be sent to the server
  * @param transactionType
  *            The type of the payment transaction
  * @param string $lang language of request see SupportedLanguages class            
  * @return The transaction response to the request sent
  * @throws PayUException
  * @throws InvalidArgumentException
  */
 public static function doPayment($parameters, $transactionType, $lang)
 {
     $requiredAll = array(PayUParameters::REFERENCE_CODE, PayUParameters::DESCRIPTION, PayUParameters::CURRENCY, PayUParameters::VALUE);
     $paymentMethodParameter = CommonRequestUtil::getParameter($parameters, PayUParameters::PAYMENT_METHOD);
     if (array_key_exists(PayUParameters::TOKEN_ID, $parameters)) {
         $requiredTokenId = array(PayUParameters::INSTALLMENTS_NUMBER, PayUParameters::TOKEN_ID);
         $required = array_merge($requiredAll, $requiredTokenId);
     } else {
         if (array_key_exists(PayUParameters::CREDIT_CARD_NUMBER, $parameters)) {
             $requiredCreditCard = array(PayUParameters::INSTALLMENTS_NUMBER, PayUParameters::CREDIT_CARD_NUMBER, PayUParameters::PAYER_NAME, PayUParameters::CREDIT_CARD_EXPIRATION_DATE, PayUParameters::PAYMENT_METHOD);
             $processWithoutCvv2 = PayUPayments::isProcessWithoutCvv2Param($parameters);
             if (!$processWithoutCvv2) {
                 $requiredCreditCard[] = PayUParameters::CREDIT_CARD_SECURITY_CODE;
             }
             $required = array_merge($requiredAll, $requiredCreditCard);
         } else {
             if ($paymentMethodParameter != null && PaymentMethods::isAllowedCashPaymentMethod($paymentMethodParameter)) {
                 $requiredCash = array(PayUParameters::PAYER_NAME, PayUParameters::PAYER_DNI, PayUParameters::PAYMENT_METHOD);
                 $required = array_merge($requiredAll, $requiredCash);
             } else {
                 if ($paymentMethodParameter != null && PaymentMethods::BOLETO_BANCARIO == $paymentMethodParameter) {
                     $requiredBoletoBancario = array(PayUParameters::PAYER_NAME, PayUParameters::PAYER_DNI, PayUParameters::PAYMENT_METHOD, PayUParameters::PAYER_STREET, PayUParameters::PAYER_STREET_2, PayUParameters::PAYER_CITY, PayUParameters::PAYER_STATE, PayUParameters::PAYER_POSTAL_CODE);
                     $required = array_merge($requiredAll, $requiredBoletoBancario);
                 } else {
                     if ($paymentMethodParameter != null) {
                         if (PaymentMethods::isValidPaymentMethod($paymentMethodParameter)) {
                             $paymentMethod = PaymentMethods::getPaymentMethod($paymentMethodParameter);
                             if ($paymentMethod['type'] == PayUPaymentMethodType::CREDIT_CARD) {
                                 throw new InvalidArgumentException("Payment method credit card require at least one of two parameters [" . PayUParameters::CREDIT_CARD_NUMBER . '] or [' . PayUParameters::TOKEN_ID . ']');
                             }
                         }
                         throw new InvalidArgumentException(sprintf("The payment method value %s sent in parameter %s is invalid", $paymentMethodParameter, PayUParameters::PAYMENT_METHOD));
                     } else {
                         throw new InvalidArgumentException(sprintf("The payment method parameter [%s] was not found", PayUParameters::PAYMENT_METHOD));
                     }
                 }
             }
         }
     }
     CommonRequestUtil::validateParameters($parameters, $required);
     $request = RequestPaymentsUtil::buildPaymentRequest($parameters, $transactionType, $lang);
     $payUHttpRequestInfo = new PayUHttpRequestInfo(Environment::PAYMENTS_API, RequestMethod::POST);
     return PayUApiServiceUtil::sendRequest($request, $payUHttpRequestInfo);
 }
Esempio n. 4
0
 public static function paymentMethodList()
 {
     try {
         //inicializace WS
         ini_set("soap.wsdl_cache_enabled", "0");
         $go_client = new SoapClient(GopayConfig::ws(), array());
         $paymentMethodsWS = $go_client->__call("paymentMethodList", array());
         $paymentMethods = new PaymentMethods();
         $paymentMethods->adapt($paymentMethodsWS);
         return $paymentMethods->paymentMethods;
     } catch (SoapFault $f) {
         dpm($f, 'paymentMethodList - SoapFault');
         /*
          * Chyba v komunikaci s GoPay serverem
          */
         return null;
     }
 }