At minimum, an amount, credit card number, and
credit card expiration date are required.
Minimalistic example:
Transaction::saleNoValidate(array(
'amount' => '100.00',
'creditCard' => array(
'number' => '5105105105105100',
'expirationDate' => '05/12',
),
));
Full example:
Transaction::saleNoValidate(array(
'amount' => '100.00',
'orderId' => '123',
'channel' => 'MyShoppingCardProvider',
'creditCard' => array(
if token is omitted, the gateway will generate a token
'token' => 'credit_card_123',
'number' => '5105105105105100',
'expirationDate' => '05/2011',
'cvv' => '123',
),
'customer' => array(
if id is omitted, the gateway will generate an id
'id' => 'customer_123',
'firstName' => 'Dan',
'lastName' => 'Smith',
'company' => 'Braintree',
'email' => 'dan@example.com',
'phone' => '419-555-1234',
'fax' => '419-555-1235',
'website' => 'http://braintreepayments.com'
),
'billing' => array(
'firstName' => 'Carl',
'lastName' => 'Jones',
'company' => 'Braintree',
'streetAddress' => '123 E Main St',
'extendedAddress' => 'Suite 403',
'locality' => 'Chicago',
'region' => 'IL',
'postalCode' => '60622',
'countryName' => 'United States of America'
),
'shipping' => array(
'firstName' => 'Andrew',
'lastName' => 'Mason',
'company' => 'Braintree',
'streetAddress' => '456 W Main St',
'extendedAddress' => 'Apt 2F',
'locality' => 'Bartlett',
'region' => 'IL',
'postalCode' => '60103',
'countryName' => 'United States of America'
),
'customFields' => array(
'birthdate' => '11/13/1954'
)
)
== Storing in the Vault ==
The customer and credit card information used for
a transaction can be stored in the vault by setting
transaction[options][storeInVault] to true.
$transaction = Transaction::saleNoValidate(array(
'customer' => array(
'firstName' => 'Adam',
'lastName' => 'Williams'
),
'creditCard' => array(
'number' => '5105105105105100',
'expirationDate' => '05/2012'
),
'options' => array(
'storeInVault' => true
)
));
echo $transaction->customerDetails->id
'865534'
echo $transaction->creditCardDetails->token
'6b6m'
To also store the billing address in the vault, pass the
addBillingAddressToPaymentMethod option.
Transaction.saleNoValidate(array(
...
'options' => array(
'storeInVault' => true
'addBillingAddressToPaymentMethod' => true
)
));
== Submitting for Settlement==
This can only be done when the transction's
status is authorized. If amount is not specified,
the full authorized amount will be settled. If you would like to settle
less than the full authorized amount, pass the desired amount.
You cannot settle more than the authorized amount.
A transaction can be submitted for settlement when created by setting
$transaction[options][submitForSettlement] to true.
$transaction = Transaction::saleNoValidate(array(
'amount' => '100.00',
'creditCard' => array(
'number' => '5105105105105100',
'expirationDate' => '05/2012'
),
'options' => array(
'submitForSettlement' => true
)
));
== More information ==
For more detailed information on Transactions, see {@link http://www.braintreepayments.com/gateway/transaction-api http://www.braintreepaymentsolutions.com/gateway/transaction-api}