/** * 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; }