function commerce_braintree_cardonfile_charge in Commerce Braintree 7.3
Same name and namespace in other branches
- 7.2 commerce_braintree.module \commerce_braintree_cardonfile_charge()
 
Commerce Card on File charge callback.
3 string references to 'commerce_braintree_cardonfile_charge'
- commerce_braintree_commerce_payment_method_info in ./
commerce_braintree.module  - Implements hook_commerce_payment_method_info().
 - commerce_braintree_dropin_commerce_payment_method_info in modules/
commerce_braintree_dropin/ commerce_braintree_dropin.module  - Implements hook_commerce_payment_method_info().
 - commerce_braintree_hostedfields_commerce_payment_method_info in modules/
commerce_braintree_hostedfields/ commerce_braintree_hostedfields.module  - Implements hook_commerce_payment_method_info().
 
File
- ./
commerce_braintree.module, line 1010  - Integrates Braintree Transparent Redirect with Drupal Commerce.
 
Code
function commerce_braintree_cardonfile_charge($payment_method, $card_data, $order, $charge) {
  // Determine if we should settle the transaction immediately.
  if (isset($payment_method['settings']['submit_for_settlement'])) {
    $submit_for_settlement = (bool) $payment_method['settings']['submit_for_settlement'];
  }
  else {
    // Default to TRUE if this setting hasn't been explicitly set by the store admin.
    $submit_for_settlement = TRUE;
  }
  // Create the sale data object to submit to Braintree.
  $sale_data = array(
    'amount' => commerce_currency_amount_to_decimal($charge['amount'], $charge['currency_code']),
    'orderId' => $order->order_id,
    'paymentMethodToken' => $card_data->remote_id,
    'merchantAccountId' => commerce_braintree_get_merchant_account_id($payment_method, $charge['currency_code']),
    'options' => array(
      'submitForSettlement' => $submit_for_settlement,
    ),
  );
  // Allow other modules to alter the sale data.
  drupal_alter('commerce_braintree_dropin_sale_data', $sale_data, $order);
  // Attempt to charge the card on file.
  commerce_braintree_initialize($payment_method);
  $response = Braintree_Transaction::sale($sale_data);
  // Process the response and create a commerce payment transaction.
  $transaction = commerce_braintree_js_process_transaction($order, $payment_method, $charge, $response);
  $message_vars = array(
    '@order' => $order->order_id,
    '@amount' => commerce_currency_format($charge['amount'], $charge['currency_code'], NULL, TRUE),
  );
  // Return the result of the transaction and the feedback for the user.
  if (!empty($transaction->status) && $transaction->status != COMMERCE_PAYMENT_STATUS_FAILURE) {
    drupal_set_message(t('Payment transaction for @order in the amount of @amount successful.', $message_vars));
    return TRUE;
  }
  else {
    drupal_set_message(t('Payment transaction for @order in the amount of @amount failed.', $message_vars), 'error');
    return FALSE;
  }
}