Place an order with installments
Overview
Use the placeOrder method to create an order and collect the payment.
Supported payment methods
Credit/Debit cards: Visa, MasterCard and AMEX local Brazilian cards.
Parameters
Parameters |
Type/Description |
sessionID |
Required (string) |
|
Session identifier, the output of the Login method. Include sessionID into all your requests. Avangate throws an exception if the values are incorrect. The sessionID expires in 10 minutes. |
Required (Object) |
|
|
Object designed to collect all data necessary for an order, including billing, product/subscription plan and payment details. |
Requirements
- Payment methods: Visa, MasterCard and AMEX
- Country: Brazil
- Currency BRL
- Specified number of installments under the PaymentMethod object. (Minimum installment threshold is 5 BRL.)
- Phone number
- Fiscal code (CPF/CNPJ)
-
Mandatory billing information must include:
- Transaction: non-recurring
- Installments are available only for:
- Brazilian customers
- Local Visa, MasterCard and AMEX cards
- Non-recurring transactions
<?php $host = "https://api.avangate.com"; $client = new SoapClient($host . "/soap/4.0/?wsdl", array( 'location' => $host . "/soap/4.0/", "stream_context" => stream_context_create(array( 'ssl' => array( 'verify_peer' => false, 'verify_peer_name' => false ) )) )); function hmac($key, $data) { $b = 64; // byte length for md5 if (strlen($key) > $b) { $key = pack("H*", md5($key)); } $key = str_pad($key, $b, chr(0x00)); $ipad = str_pad('', $b, chr(0x36)); $opad = str_pad('', $b, chr(0x5c)); $k_ipad = $key ^ $ipad; $k_opad = $key ^ $opad; return md5($k_opad . pack("H*", md5($k_ipad . $data))); } $merchantCode = "MERCHANT_CODE";// your account's merchant code available in the 'System settings' area of the cPanel: https://secure.avangate.com/cpanel/account_settings.php $key = "SECRET_KEY";// your account's secret key available in the 'System settings' area of the cPanel: https://secure.avangate.com/cpanel/account_settings.php $now = date('Y-m-d H:i:s'); //date_default_timezone_set('UTC') $string = strlen($merchantCode) . $merchantCode . strlen($now) . $now; $hash = hmac($key, $string); try { $sessionID = $client->login($merchantCode, $now, $hash); } catch (SoapFault $e) { echo "Authentication: " . $e->getMessage(); exit; } var_dump($sessionID); $Order = new stdClass(); $Order->RefNo = NULL; $Order->Currency = 'brl'; $Order->Country = 'BR'; $Order->Language = 'en'; $Order->CustomerIP = '91.220.121.21'; $Order->ExternalReference = NULL; $Order->Source = NULL; $Order->AffiliateId = NULL; $Order->CustomerReference = NULL; $Order->Items = array(); $Order->Items[0] = new stdClass(); $Order->Items[0]->Code = 'my_subscription_1'; $Order->Items[0]->Quantity = 1; $Order->Items[0]->PriceOptions = NULL; $Order->Items[0]->SKU = NULL; $Order->Items[0]->Price = NULL; $Order->Items[0]->CrossSell = NULL; $Order->Items[0]->Trial = false; $Order->Items[0]->AdditionalFields = NULL; $Order->Items[0]->Promotion = NULL; $Order->BillingDetails = new stdClass(); $Order->BillingDetails->FirstName = 'FirstName'; $Order->BillingDetails->LastName = 'LastName'; $Order->BillingDetails->CountryCode = 'BR'; $Order->BillingDetails->State = 'DF'; $Order->BillingDetails->City = 'LA'; $Order->BillingDetails->Address1 = 'Address example'; $Order->BillingDetails->Address2 = NULL; $Order->BillingDetails->Zip = '70403-900'; $Order->BillingDetails->Email = 'customer@email.com'; $Order->BillingDetails->Phone = "556133127400"; $Order->BillingDetails->FiscalCode = "056.027.963-98"; $Order->BillingDetails->Company = NULL; $Order->DeliveryDetails = NULL; $Order->PaymentDetails = new stdClass (); $Order->PaymentDetails->Type = 'CC'; $Order->PaymentDetails->Currency = 'brl'; $Order->PaymentDetails->PaymentMethod = new stdClass (); $Order->PaymentDetails->CustomerIP = '10.10.10.10'; $Order->PaymentDetails->PaymentMethod->RecurringEnabled = true; $Order->PaymentDetails->PaymentMethod->CardNumber = "4111111111111111"; $Order->PaymentDetails->PaymentMethod->CardType = 'visa'; $Order->PaymentDetails->PaymentMethod->ExpirationYear = '2019'; $Order->PaymentDetails->PaymentMethod->ExpirationMonth = '12'; $Order->PaymentDetails->PaymentMethod->HolderName = 'John'; $Order->PaymentDetails->PaymentMethod->CCID = '123'; $Order->Promotions = NULL; $Order->AdditionalFields = NULL; $Order->LocalTime = NULL; $Order->GiftDetails = NULL; try { $OrderInstallments = $client->getInstallments($sessionID, $Order); } catch (SoapFault $e) { echo "Order_Installments: " . $e->getMessage(); exit; } var_dump("Order_Installments", $OrderInstallments); $Order = new stdClass(); $Order->RefNo = NULL; $Order->Currency = 'brl'; $Order->Country = 'BR'; $Order->Language = 'en'; $Order->CustomerIP = '91.220.121.21'; $Order->ExternalReference = NULL; $Order->Source = NULL; $Order->AffiliateId = NULL; $Order->CustomerReference = NULL; $Order->Items = array(); $Order->Items[0] = new stdClass(); $Order->Items[0]->Code = 'my_subscription_1'; $Order->Items[0]->Quantity = 1; $Order->Items[0]->PriceOptions = NULL; $Order->Items[0]->SKU = NULL; $Order->Items[0]->Price = NULL; $Order->Items[0]->CrossSell = NULL; $Order->Items[0]->Trial = false; $Order->Items[0]->AdditionalFields = NULL; $Order->Items[0]->Promotion = NULL; $Order->BillingDetails = new stdClass(); $Order->BillingDetails->FirstName = 'FirstName'; $Order->BillingDetails->LastName = 'LastName'; $Order->BillingDetails->CountryCode = 'BR'; $Order->BillingDetails->State = 'DF'; $Order->BillingDetails->City = 'LA'; $Order->BillingDetails->Address1 = 'Address example'; $Order->BillingDetails->Address2 = NULL; $Order->BillingDetails->Zip = '70403-900'; $Order->BillingDetails->Email = 'customer@email.com'; $Order->BillingDetails->Phone = "556133127400"; $Order->BillingDetails->FiscalCode = "056.027.963-98"; $Order->BillingDetails->Company = NULL; $Order->DeliveryDetails = NULL; $Order->PaymentDetails = new stdClass (); $Order->PaymentDetails->Type = 'CC'; $Order->PaymentDetails->Currency = 'brl'; $Order->PaymentDetails->PaymentMethod = new stdClass (); $Order->PaymentDetails->CustomerIP = '10.10.10.10'; $Order->PaymentDetails->PaymentMethod->RecurringEnabled = true; $Order->PaymentDetails->PaymentMethod->CardNumber = "4111111111111111"; $Order->PaymentDetails->PaymentMethod->InstallmentsNumber = 2; $Order->PaymentDetails->PaymentMethod->CardType = 'visa'; $Order->PaymentDetails->PaymentMethod->ExpirationYear = '2019'; $Order->PaymentDetails->PaymentMethod->ExpirationMonth = '12'; $Order->PaymentDetails->PaymentMethod->HolderName = 'John'; $Order->PaymentDetails->PaymentMethod->CCID = '123'; $Order->Promotions = NULL; $Order->AdditionalFields = NULL; $Order->LocalTime = NULL; $Order->GiftDetails = NULL; try { $newOrder = $client->placeOrder($sessionID, $Order); } catch (SoapFault $e) { echo "newOrder: " . $e->getMessage(); exit; } var_dump("newOrder", $newOrder);