public static function createCheckoutRequest(PagSeguroCredentials $credentials, PagSeguroPaymentRequest $paymentRequest)
 {
     LogPagSeguro::info("PagSeguroPaymentService.Register(" . $paymentRequest->toString() . ") - begin");
     $connectionData = new PagSeguroConnectionData($credentials, self::serviceName);
     try {
         $connection = new PagSeguroHttpConnection();
         $connection->post(self::buildCheckoutRequestUrl($connectionData), PagSeguroPaymentParser::getData($paymentRequest), $connectionData->getServiceTimeout(), $connectionData->getCharset());
         $httpStatus = new PagSeguroHttpStatus($connection->getStatus());
         switch ($httpStatus->getType()) {
             case 'OK':
                 $PaymentParserData = PagSeguroPaymentParser::readSuccessXml($connection->getResponse());
                 $paymentUrl = self::buildCheckoutUrl($connectionData, $PaymentParserData->getCode());
                 LogPagSeguro::info("PagSeguroPaymentService.Register(" . $paymentRequest->toString() . ") - end {1}" . $PaymentParserData->getCode());
                 break;
             case 'BAD_REQUEST':
                 $errors = PagSeguroPaymentParser::readErrors($connection->getResponse());
                 $e = new PagSeguroServiceException($httpStatus, $errors);
                 LogPagSeguro::error("PagSeguroPaymentService.Register(" . $paymentRequest->toString() . ") - error " . $e->getOneLineMessage());
                 throw $e;
                 break;
             default:
                 $e = new PagSeguroServiceException($httpStatus);
                 LogPagSeguro::error("PagSeguroPaymentService.Register(" . $paymentRequest->toString() . ") - error " . $e->getOneLineMessage());
                 throw $e;
                 break;
         }
         return isset($paymentUrl) ? $paymentUrl : false;
     } catch (PagSeguroServiceException $e) {
         throw $e;
     } catch (Exception $e) {
         LogPagSeguro::error("Exception: " . $e->getMessage());
         throw $e;
     }
 }
 public static function getData($payment)
 {
     $data = parent::getData($payment);
     if ($payment->getPreApprovalCharge() != null) {
         $data["preApprovalCharge"] = $payment->getPreApprovalCharge();
     }
     if ($payment->getPreApprovalName() != null) {
         $data["preApprovalName"] = $payment->getPreApprovalName();
     }
     if ($payment->getPreApprovalDetails() != null) {
         $data["preApprovalDetails"] = $payment->getPreApprovalDetails();
     }
     if ($payment->getPreApprovalAmountPerPayment() != null) {
         $data["preApprovalAmountPerPayment"] = $payment->getPreApprovalAmountPerPayment();
     }
     if ($payment->getPreApprovalPeriod() != null) {
         $data["preApprovalPeriod"] = $payment->getPreApprovalPeriod();
     }
     if ($payment->getPreApprovalDayOfWeek() != null) {
         $data["preApprovalDayOfWeek"] = $payment->getPreApprovalDayOfWeek();
     }
     if ($payment->getPreApprovalInitialDate() != null) {
         $data["preApprovalInitialDate"] = $payment->getPreApprovalInitialDate();
     }
     if ($payment->getPreApprovalFinalDate() != null) {
         $data["preApprovalFinalDate"] = $payment->getPreApprovalFinalDate();
     }
     if ($payment->getPreApprovalMaxAmountPerPeriod() != null) {
         $data["preApprovalMaxAmountPerPeriod"] = $payment->getPreApprovalMaxAmountPerPeriod();
     }
     if ($payment->getPreApprovalMaxTotalAmount() != null) {
         $data["preApprovalMaxTotalAmount"] = $payment->getPreApprovalMaxTotalAmount();
     }
     if ($payment->getReviewURL() != null) {
         $data["reviewURL"] = $payment->getReviewURL();
     }
     return $data;
 }
 /**
  * @param PagSeguroHttpConnection $connection
  * @param PagSeguroAuthorizationRequest $authorizationRequest
  * @param PagSeguroConnectionData $connectionData
  * @param null $onlyAuthorizationCode
  * @return bool|mixed|string
  * @throws PagSeguroServiceException
  */
 private static function authorizationReturn(PagSeguroHttpConnection $connection, PagSeguroAuthorizationRequest $authorizationRequest, PagSeguroConnectionData $connectionData, $onlyAuthorizationCode = null)
 {
     $httpStatus = new PagSeguroHttpStatus($connection->getStatus());
     switch ($httpStatus->getType()) {
         case 'OK':
             $authorization = PagSeguroAuthorizationParser::readSuccessXml($connection->getResponse());
             if ($onlyAuthorizationCode) {
                 $authorizationReturn = $authorization->getCode();
             } else {
                 $authorizationReturn = self::buildAuthorizationApprovalUrl($connectionData, $authorization->getCode());
             }
             LogPagSeguro::info("PagSeguroAuthorizationService.Register(" . $authorizationRequest->toString() . ") - end {1}" . $authorization->getCode());
             break;
         case 'BAD_REQUEST':
             $errors = PagSeguroPaymentParser::readErrors($connection->getResponse());
             $err = new PagSeguroServiceException($httpStatus, $errors);
             LogPagSeguro::error("PagSeguroAuthorizationService.Register(" . $authorizationRequest->toString() . ") - error " . $err->getOneLineMessage());
             throw $err;
             break;
         default:
             $err = new PagSeguroServiceException($httpStatus);
             LogPagSeguro::error("PagSeguroAuthorizationService.Register(" . $authorizationRequest->toString() . ") - error " . $err->getOneLineMessage());
             throw $err;
             break;
     }
     return isset($authorizationReturn) ? $authorizationReturn : false;
 }
 public static function getData($payment)
 {
     $data = null;
     $data = parent::getData($payment);
     // paymentMode
     if ($payment->getPaymentMode() != null) {
         $data["paymentMode"] = $payment->getPaymentMode()->getValue();
     }
     // paymentMethod
     if ($payment->getPaymentMethod()->getPaymentMethod() != null) {
         $data["paymentMethod"] = $payment->getPaymentMethod()->getPaymentMethod();
     }
     // senderHash
     if ($payment->getSenderHash() != null) {
         $data["senderHash"] = $payment->getSenderHash();
     }
     // receiverEmail
     if ($payment->getReceiverEmail() != null) {
         $data["receiverEmail"] = $payment->getReceiverEmail();
     }
     // Bank name
     if ($payment->getOnlineDebit() != null) {
         $data["bankName"] = $payment->getOnlineDebit()->getBankName();
     }
     //Credit Card
     if ($payment->getCreditCard() != null) {
         //Token
         if ($payment->getCreditCard()->getToken() != null) {
             $data['creditCardToken'] = $payment->getCreditCard()->getToken();
         }
         //Installments
         if ($payment->getCreditCard()->getInstallment() != null) {
             $installment = $payment->getCreditCard()->getInstallment();
             if ($installment->getQuantity() != null && $installment->getValue()) {
                 $data['installmentQuantity'] = $installment->getQuantity();
                 $data['installmentValue'] = PagSeguroHelper::decimalFormat($installment->getValue());
             }
         }
         //Holder
         if ($payment->getCreditCard()->getHolder() != null) {
             $holder = $payment->getCreditCard()->getHolder();
             if ($holder->getName() != null) {
                 $data['creditCardHolderName'] = $holder->getName();
             }
             // documents
             /*** @var $document PagSeguroDocument */
             if ($payment->getCreditCard()->getHolder()->getDocuments() != null) {
                 $documents = $payment->getCreditCard()->getHolder()->getDocuments();
                 $data['creditCardHolderCPF'] = $documents->getValue();
             }
             if ($holder->getBirthDate() != null) {
                 $data['creditCardHolderBirthDate'] = $holder->getBirthDate();
             }
             // phone
             if ($holder->getPhone() != null) {
                 if ($holder->getPhone()->getAreaCode() != null) {
                     $data['creditCardHolderAreaCode'] = $holder->getPhone()->getAreaCode();
                 }
                 if ($holder->getPhone()->getNumber() != null) {
                     $data['creditCardHolderPhone'] = $holder->getPhone()->getNumber();
                 }
             }
         }
         //Billing Address
         if ($payment->getCreditCard()->getBilling() != null) {
             $billingAddress = $payment->getCreditCard()->getBilling()->getAddress();
             if ($billingAddress->getStreet() != null) {
                 $data['billingAddressStreet'] = $billingAddress->getStreet();
             }
             if ($billingAddress->getNumber() != null) {
                 $data['billingAddressNumber'] = $billingAddress->getNumber();
             }
             if ($billingAddress->getComplement() != null) {
                 $data['billingAddressComplement'] = $billingAddress->getComplement();
             }
             if ($billingAddress->getCity() != null) {
                 $data['billingAddressCity'] = $billingAddress->getCity();
             }
             if ($billingAddress->getState() != null) {
                 $data['billingAddressState'] = $billingAddress->getState();
             }
             if ($billingAddress->getDistrict() != null) {
                 $data['billingAddressDistrict'] = $billingAddress->getDistrict();
             }
             if ($billingAddress->getPostalCode() != null) {
                 $data['billingAddressPostalCode'] = $billingAddress->getPostalCode();
             }
             if ($billingAddress->getCountry() != null) {
                 $data['billingAddressCountry'] = $billingAddress->getCountry();
             }
         }
     }
     return $data;
 }