Exemple #1
0
 /**
  * Creates a sale
  * @param Sale $sale 
  * @return mixed
  */
 public function createSale(Sale $sale)
 {
     $uri = Braspag::$apiBase . 'sales';
     $request = json_encode($sale, JSON_UNESCAPED_UNICODE);
     $response = Request::post($uri)->sendsJson()->addHeaders($this->headers)->body($request)->send();
     if ($response->code == HttpStatus::Created) {
         $responsePayment = $response->body->Payment;
         $sale->payment->paymentId = $responsePayment->PaymentId;
         $sale->payment->status = $responsePayment->Status;
         $sale->payment->reasonCode = $responsePayment->ReasonCode;
         $sale->payment->reasonMessage = $responsePayment->ReasonMessage;
         $sale->payment->currency = $responsePayment->Currency;
         $sale->payment->country = $responsePayment->Country;
         $sale->payment->receivedDate = Utils::getResponseValue($responsePayment, 'ReceivedDate');
         $sale->capturedDate = Utils::getResponseValue($responsePayment, 'CapturedDate');
         $sale->voidedDate = Utils::getResponseValue($responsePayment, 'VoidedDate');
         $sale->capturedAmount = Utils::getResponseValue($responsePayment, 'CapturedAmount');
         $sale->capturedAmount = Utils::getResponseValue($responsePayment, 'VoidedAmount');
         $sale->payment->providerReturnCode = Utils::getResponseValue($responsePayment, 'ProviderReturnCode');
         $sale->payment->providerReturnMessage = Utils::getResponseValue($responsePayment, 'ProviderReturnMessage');
         if ($responsePayment->Type == 'CreditCard' || $responsePayment->Type == 'DebitCard') {
             $sale->payment->authenticationUrl = Utils::getResponseValue($responsePayment, 'AuthenticationUrl');
             $sale->payment->authorizationCode = Utils::getResponseValue($responsePayment, 'AuthorizationCode');
             $sale->payment->acquirerTransactionId = Utils::getResponseValue($responsePayment, 'AcquirerTransactionId');
             $sale->payment->proofOfSale = Utils::getResponseValue($responsePayment, 'ProofOfSale');
             $sale->payment->creditCard = Utils::getResponseValue($responsePayment, 'CreditCard');
             if (Utils::getResponseValue($responsePayment, 'FraudAnalysis') != null) {
                 $antiFraudResponse = Utils::getResponseValue($responsePayment, 'FraudAnalysis');
                 $replyData = new FraudAnalysisReplyData();
                 $replyData->addressInfoCode = Utils::getResponseValue($antiFraudResponse->ReplyData, 'AddressInfoCode');
                 $replyData->factorCode = Utils::getResponseValue($antiFraudResponse->ReplyData, 'FactorCode');
                 $replyData->score = Utils::getResponseValue($antiFraudResponse->ReplyData, 'Score');
                 $replyData->binCountry = Utils::getResponseValue($antiFraudResponse->ReplyData, 'BinCountry');
                 $replyData->cardIssuer = Utils::getResponseValue($antiFraudResponse->ReplyData, 'CardIssuer');
                 $replyData->cardScheme = Utils::getResponseValue($antiFraudResponse->ReplyData, 'CardScheme');
                 $replyData->hostSeverity = Utils::getResponseValue($antiFraudResponse->ReplyData, 'HostSeverity');
                 $replyData->internetInfoCode = Utils::getResponseValue($antiFraudResponse->ReplyData, 'InternetInfoCode');
                 $replyData->ipRoutingMethod = Utils::getResponseValue($antiFraudResponse->ReplyData, 'IpRoutingMethod');
                 $replyData->scoreModelUsed = Utils::getResponseValue($antiFraudResponse->ReplyData, 'ScoreModelUsed');
                 $replyData->casePriority = Utils::getResponseValue($antiFraudResponse->ReplyData, 'CasePriority');
                 $sale->payment->fraudAnalysis->status = $antiFraudResponse->Status;
                 $sale->payment->fraudAnalysis->replyData = $replyData;
             }
         } elseif ($response->body->Payment->Type == 'Boleto') {
             $sale->payment->url = Utils::getResponseValue($responsePayment, 'Url');
             $sale->payment->barCodeNumber = Utils::getResponseValue($responsePayment, 'BarCodeNumber');
             $sale->payment->digitableLine = Utils::getResponseValue($responsePayment, 'DigitableLine');
             $sale->payment->boletoNumber = Utils::getResponseValue($responsePayment, 'BoletoNumber');
         } elseif ($response->body->Payment->Type == 'EletronicTransfer') {
             $sale->payment->url = Utils::getResponseValue($responsePayment, 'Url');
         }
         $recurrentResponse = Utils::getResponseValue($responsePayment, 'RecurrentPayment');
         if ($recurrentResponse != null) {
             $sale->payment->recurrentPayment->recurrentPaymentId = Utils::getResponseValue($recurrentResponse, 'RecurrentPaymentId');
             $sale->payment->recurrentPayment->reasonCode = $recurrentResponse->ReasonCode;
             $sale->payment->recurrentPayment->reasonMessage = $recurrentResponse->ReasonMessage;
             $sale->payment->recurrentPayment->nextRecurrency = Utils::getResponseValue($recurrentResponse, 'NextRecurrency');
             $sale->payment->recurrentPayment->startDate = Utils::getResponseValue($recurrentResponse, 'StartDate');
             $sale->payment->recurrentPayment->endDate = Utils::getResponseValue($recurrentResponse, 'EndDate');
             $sale->payment->recurrentPayment->interval = Utils::getResponseValue($recurrentResponse, 'Interval');
             $sale->payment->recurrentPayment->link = $this->parseLink(Utils::getResponseValue($recurrentResponse, 'Link'));
         }
         $sale->payment->links = $this->parseLinks($response->body->Payment->Links);
         return $sale;
     } elseif ($response->code == HttpStatus::BadRequest) {
         Utils::handleApiError($response);
     }
     return $response->code;
 }