public function confirm($queryString) { $params = Braintree_TransparentRedirect::parseAndValidateQueryString($queryString); $confirmationKlasses = array(Braintree_TransparentRedirect::CREATE_TRANSACTION => 'Braintree_TransactionGateway', Braintree_TransparentRedirect::CREATE_CUSTOMER => 'Braintree_CustomerGateway', Braintree_TransparentRedirect::UPDATE_CUSTOMER => 'Braintree_CustomerGateway', Braintree_TransparentRedirect::CREATE_PAYMENT_METHOD => 'Braintree_CreditCardGateway', Braintree_TransparentRedirect::UPDATE_PAYMENT_METHOD => 'Braintree_CreditCardGateway'); $confirmationGateway = new $confirmationKlasses[$params["kind"]]($this->_gateway); return $confirmationGateway->_doCreate('/transparent_redirect_requests/' . $params['id'] . '/confirm', array()); }
function testData_doesNotClobberDefaultTimezone() { $originalZone = date_default_timezone_get(); date_default_timezone_set('Europe/London'); $trData = Braintree_TransparentRedirect::createCustomerData(array('redirectUrl' => 'http://www.example.com')); $zoneAfterCall = date_default_timezone_get(); date_default_timezone_set($originalZone); $this->assertEquals('Europe/London', $zoneAfterCall); }
function buildTrData($redirectUrl) { $customer = Mage::getSingleton('customer/session')->getCustomer(); if ($this->braintree->exists($customer->getId())) { return Braintree_TransparentRedirect::createCreditCardData(array('redirectUrl' => $redirectUrl, 'creditCard' => array('customerId' => $customer->getId()))); } else { $credit_card_billing = array(); $billing = $customer->getDefaultBilling(); if ($billing) { $address = Mage::getModel('customer/address')->load($billing); $credit_card_billing['billingAddress'] = $this->braintree->toBraintreeAddress($address); } return Braintree_TransparentRedirect::createCustomerData(array('redirectUrl' => $redirectUrl, 'customer' => array('id' => $customer->getId(), 'firstName' => $customer->getFirstname(), 'lastName' => $customer->getLastname(), 'company' => $customer->getCompany(), 'phone' => $customer->getTelephone(), 'fax' => $customer->getFax(), 'email' => $customer->getEmail(), 'creditCard' => $credit_card_billing))); } }
<?php $queryString = $_SERVER['QUERY_STRING']; $result = Braintree_TransparentRedirect::confirm($queryString); if ($result->success) { $message = "Customer Created with ID: " . $result->customer->email; } else { $message = print_r($result->errors->deepAll(), True); } ?> <html> <body> <h1>Transaction Response</h1> <ul> <li>Status - <?php echo $message; ?> </li> </ul> </body> </html>
function updateCustomerViaTr($regularParams, $trParams) { Braintree_TestHelper::suppressDeprecationWarnings(); $trData = Braintree_TransparentRedirect::updateCustomerData(array_merge($trParams, array("redirectUrl" => "http://www.example.com"))); return Braintree_TestHelper::submitTrRequest(Braintree_Customer::updateCustomerUrl(), $regularParams, $trData); }
/** * update a customer from a TransparentRedirect operation * * @access public * @param array $attribs * @return object */ public function updateFromTransparentRedirect($queryString) { trigger_error("DEPRECATED: Please use Braintree_TransparentRedirectRequest::confirm", E_USER_NOTICE); $params = Braintree_TransparentRedirect::parseAndValidateQueryString($queryString); return $this->_doUpdate('post', '/customers/all/confirm_transparent_redirect_request', array('id' => $params['id'])); }
public function form() { $result = Braintree_Transaction::sale(array("amount" => "1000.00", "creditCard" => array("number" => $_POST["number"], "cvv" => $_POST["cvv"], "expirationMonth" => $_POST["month"], "expirationYear" => $_POST["year"]), "options" => array("submitForSettlement" => true))); if ($result->success) { echo "Success! Transaction ID: " . $result->transaction->id; } else { if ($result->transaction) { echo "Error: " . $result->message; echo "<br/>"; echo "Code: " . $result->transaction->processorResponseCode; } else { echo "Validation errors:<br/>"; foreach ($result->errors->deepAll() as $error) { echo "- " . $error->message . "<br/>"; } } } pr($result); die; ?> <html> <head> <title>Braintree Transparent Redirect</title> </head> <body> <?php if (isset($_GET["id"])) { echo "id: " . $_GET["id"]; $result = Braintree_TransparentRedirect::confirm($_SERVER['QUERY_STRING']); pr($result); } if (isset($result) && $result->success) { ?> <h1>Braintree Transparent Redirect Response</h1> <?php $transaction = $result->transaction; ?> <table> <tr><td>transaction id</td><td><?php echo htmlentities($transaction->id); ?> </td></tr> <tr><td>transaction status</td><td><?php echo htmlentities($transaction->status); ?> </td></tr> <tr><td>transaction amount</td><td><?php echo htmlentities($transaction->amount); ?> </td></tr> <tr><td>customer first name</td><td><?php echo htmlentities($transaction->customerDetails->firstName); ?> </td></tr> <tr><td>customer last name</td><td><?php echo htmlentities($transaction->customerDetails->lastName); ?> </td></tr> <tr><td>customer email</td><td><?php echo htmlentities($transaction->customerDetails->email); ?> </td></tr> <tr><td>credit card number</td><td><?php echo htmlentities($transaction->creditCardDetails->maskedNumber); ?> </td></tr> <tr><td>expiration date</td><td><?php echo htmlentities($transaction->creditCardDetails->expirationDate); ?> </td></tr> </table> <?php } else { if (!isset($result)) { echo "gagal"; $result = null; } ?> <h1>Braintree Transparent Redirect Example</h1> <?php if (isset($result)) { ?> <div style="color: red;"><?php echo $result->errors->deepSize(); ?> error(s)</div> <?php } ?> <form method="POST" action="<?php echo Braintree_TransparentRedirect::url(); ?> " autocomplete="off"> <fieldset> <legend>Customer</legend> <?php $this->braintree_text_field('First Name', 'transaction[customer][first_name]', $result); ?> <?php $this->braintree_text_field('Last Name', 'transaction[customer][last_name]', $result); ?> <?php $this->braintree_text_field('Email', 'transaction[customer][email]', $result); ?> </fieldset> <fieldset> <legend>Payment Information</legend> <?php $this->braintree_text_field('Credit Card Number', 'transaction[credit_card][number]', $result); ?> <?php $this->braintree_text_field('Expiration Date (MM/YY)', 'transaction[credit_card][expiration_date]', $result); ?> <?php $this->braintree_text_field('CVV', 'transaction[credit_card][cvv]', $result); ?> </fieldset> <?php $tr_data = Braintree_TransparentRedirect::transactionData(array('redirectUrl' => "http://" . $_SERVER["SERVER_NAME"] . ":" . $_SERVER["SERVER_PORT"] . parse_url($_SERVER["REQUEST_URI"], PHP_URL_PATH), 'transaction' => array('amount' => '10.00', 'type' => 'sale'))); ?> <input type="hidden" name="tr_data" value="<?php echo $tr_data; ?> " /> <br /> <input type="submit" value="Submit" /> </form> <?php } ?> </body> </html> <?php }
<fieldset> <legend>Payment Information</legend> <?php braintree_text_field('Credit Card Number', 'transaction[credit_card][number]', $result); ?> <?php braintree_text_field('Expiration Date (MM/YY)', 'transaction[credit_card][expiration_date]', $result); ?> <?php braintree_text_field('CVV', 'transaction[credit_card][cvv]', $result); ?> </fieldset> <?php $tr_data = Braintree_TransparentRedirect::transactionData(array('redirectUrl' => "http://" . $_SERVER["SERVER_NAME"] . ":" . $_SERVER["SERVER_PORT"] . parse_url($_SERVER["REQUEST_URI"], PHP_URL_PATH), 'transaction' => array('amount' => '10.00', 'type' => 'sale'))); ?> <input type="hidden" name="tr_data" value="<?php echo $tr_data; ?> " /> <br /> <input type="submit" value="Submit" /> </form> <?php } ?> </body> </html>
public function createCreditCardData($params) { return Braintree_TransparentRedirect::createCreditCardData($params); }
function updateCreditCardViaTr($regularParams, $trParams) { $trData = Braintree_TransparentRedirect::updateCreditCardData(array_merge($trParams, array("redirectUrl" => "http://www.example.com"))); return Braintree_TestHelper::submitTrRequest(Braintree_CreditCard::updateCreditCardUrl(), $regularParams, $trData); }
public static function confirm($queryString) { $params = Braintree_TransparentRedirect::parseAndValidateQueryString($queryString); $confirmationKlasses = array(Braintree_TransparentRedirect::CREATE_TRANSACTION => 'Braintree_Transaction', Braintree_TransparentRedirect::CREATE_CUSTOMER => 'Braintree_Customer', Braintree_TransparentRedirect::UPDATE_CUSTOMER => 'Braintree_Customer', Braintree_TransparentRedirect::CREATE_PAYMENT_METHOD => 'Braintree_CreditCard', Braintree_TransparentRedirect::UPDATE_PAYMENT_METHOD => 'Braintree_CreditCard'); return call_user_func(array($confirmationKlasses[$params["kind"]], '_doCreate'), '/transparent_redirect_requests/' . $params['id'] . '/confirm', array()); }
<?php $trData = Braintree_TransparentRedirect::transactionData(array('transaction' => array('type' => Braintree_Transaction::SALE, 'amount' => '1000.00', 'options' => array('submitForSettlement' => true)), 'redirectUrl' => 'http://localhost:8080/braintree')); ?> <html> <head> <style type='text/css'>label {display: block;} input {margin-bottom: 10px;}</style> </head> <body> <h1>Braintree Credit Card Transaction Form</h1> <form id='payment-form' action='<?php echo Braintree_TransparentRedirect::url(); ?> ' method='POST'> <input type='hidden' name='tr_data' value='<?php echo htmlentities($trData); ?> ' /> <div> <h2>Credit Card</h2> <label for='braintree_credit_card_number'>Credit Card Number</label> <input type='text' name='transaction[credit_card][number]' id='braintree_credit_card_number' value='4111111111111111'></input> <label for='braintree_credit_card_exp'>Credit Card Expiry (mm/yyyy)</label> <input type='text' name='transaction[credit_card][expiration_date]' id='braintree_credit_card_exp' value='12/2015'></input> </div> <input class='submit-button' type='submit' /> </form> </body> </html>
public function confirm() { try { return Braintree_TransparentRedirect::confirm($_SERVER['QUERY_STRING']); } catch (Braintree_Exception $e) { Mage::logException($e); $result = stdClass; $result->success = false; return $result; } }
/** * Startup * * @param object $controller * @return void */ public function startup(Controller $controller) { if (in_array($this->controller->params['action'], $this->_callback_actions) || array_key_exists($this->controller->params['action'], $this->_callback_actions)) { $this->action_settings = array(); if (!empty($this->_callback_actions[$this->controller->params['action']]) && is_array($this->_callback_actions[$this->controller->params['action']])) { $this->action_settings = $this->_callback_actions[$this->controller->params['action']]; } $continue = true; $parameters = array(); foreach ($this->_callback_parameters as $parameter) { if (empty($this->controller->params['url'][$parameter])) { $continue = false; break; } else { $parameters[$parameter] = $this->controller->params['url'][$parameter]; } } if ($continue) { App::import('Vendor', 'Braintree.Braintree'); $query_string = http_build_query($parameters, '', '&'); foreach (array('BraintreeAddress', 'BraintreeCreditCard', 'BraintreeCreditCardRelation') as $model_name) { if (!isset($this->{$model_name})) { $this->{$model_name} = ClassRegistry::init('Braintree.' . $model_name); } } if (!$this->beforeConfirmation()) { return false; } try { $result = Braintree_TransparentRedirect::confirm($query_string); } catch (Exception $e) { $result = false; } if (empty($result) || !$result->success) { $this->onFailure($result); return true; } else { if (!$this->onSuccess($result)) { return true; } } if (!$this->afterProcessing()) { return false; } } } }
public function updateAction() { $this->form = $this->createUpdateForm(); if ($this->getParam('http_status') && $this->getParam('hash')) { $res = Braintree_TransparentRedirect::confirm($_SERVER['QUERY_STRING']); if ($res instanceof Braintree_Result_Error) { $this->form->getElementById('credit_card__number-0')->setError($res->message); } else { return $this->redirectLocation(REL_ROOT_URL . '/member'); } } $this->view->form = $this->form; $this->view->invoice = null; $this->view->display_receipt = false; $this->view->display('cc/info.phtml'); }
public static function createViaTr($regularParams, $trParams) { $trData = Braintree_TransparentRedirect::transactionData(array_merge($trParams, array("redirectUrl" => "http://www.example.com"))); return Braintree_TestHelper::submitTrRequest(TransparentRedirect::url(), $regularParams, $trData); }
function testUrl() { $url = Braintree_TransparentRedirect::url(); $developmentPort = getenv("GATEWAY_PORT") ? getenv("GATEWAY_PORT") : 3000; $this->assertEquals("http://localhost:" . $developmentPort . "/merchants/integration_merchant_id/transparent_redirect_requests", $url); }
/** * * @access public * @param array $attribs * @return object */ public static function createFromTransparentRedirect($queryString) { trigger_error("DEPRECATED: Please use Braintree_TransparentRedirectRequest::confirm", E_USER_NOTICE); $params = Braintree_TransparentRedirect::parseAndValidateQueryString($queryString); return self::_doCreate('/transactions/all/confirm_transparent_redirect_request', array('id' => $params['id'])); }
function do_process() { $action = ym_request('action'); if ($action == 'js') { header('Content-Type: text/javascript'); ?> jQuery(document).ready(function() { jQuery('.ym_braintree_button').click(function(event) { event.preventDefault(); jQuery('.ym_form').slideUp(); jQuery('#<?php echo $this->code; ?> _cc_form_unique_' + jQuery(this).attr('data-unique')).slideDown(); }); var braintree = Braintree.create("<?php echo $this->encryptionkey; ?> "); jQuery('.<?php echo $this->code; ?> _cc_form').submit(function(e) { e.preventDefault(); jQuery('.ym_braintree_icon').addClass('ym_ajax_loading_image'); var target = jQuery(this); target.find('.error').remove(); var data = jQuery(this).clone(); data.find('#braintree_credit_card_number').val(braintree.encrypt(jQuery(this).find('#braintree_credit_card_number').val())); data.find('#braintree_credit_card_ccv').val(braintree.encrypt(jQuery(this).find('#braintree_credit_card_ccv').val())); data.find('#braintree_credit_card_exp').val(braintree.encrypt(jQuery(this).find('#braintree_credit_card_exp').val())); target.find('input').attr('disabled', 'disabled'); jQuery.post('<?php echo $this->action_url; ?> &action=ajax', data.serialize(), function(resp) { jQuery('.ym_braintree_icon').removeClass('ym_ajax_loading_image'); resp = jQuery.parseJSON(resp); if (resp['ok']) { target.find('#braintree_credit_card_number').val(''); target.find('#braintree_credit_card_ccv').val(''); target.find('#braintree_credit_card_exp').val(''); jQuery('<div class="success"><p>' + resp['message'] + '</p></div>').prependTo(target); document.location = resp['url']; } else { target.find('input').removeAttr('disabled'); jQuery('<div class="error"><p>' + resp['message'] + '</p></div>').prependTo(target); } }); }); }); <?php exit; } else { if ($action == 'ajax') { ob_start(); $this->_braintree(); // issue sale or subscribe $code = $_POST['code']; list($buy, $what, $pack_id, $user_id) = explode('_', $code); // credit card update $result = Braintree_Customer::update('ym_' . $user_id, array('creditCard' => array('number' => $_POST['customer']['credit_card']['number'], 'cvv' => $_POST['customer']['credit_card']['cvv'], 'expirationDate' => $_POST['customer']['credit_card']['expiration_date']))); if ($result->success) { // grab token and subscribe // if ($pack['num_cycles'] == 1 || $planId) { if ($what == 'subscription') { // above catches both kinds of package/subscription $pack = ym_get_pack_by_id($pack_id); $planId = isset($pack['braintree_plan_id']) ? $pack['braintree_plan_id'] : false; // initiate charge against just added credit card if ($planId) { $result = Braintree_Subscription::create(array('planId' => $planId, 'paymentMethodToken' => $result->customer->creditCards[0]->token)); $amount = $result->subscription->transactions[0]->amount; } else { $result = Braintree_Transaction::sale(array('amount' => $pack['cost'], 'options' => array('submitForSettlement' => true), 'customerId' => $result->customer->id, 'paymentMethodToken' => $result->customer->creditCards[0]->token)); $amount = $result->transaction->amount; } if ($result->success) { // common $this->common_process($code, $amount, true, false); // thanks $url = $this->redirectlogic($pack); $r = array('ok' => true, 'url' => $url, 'message' => __('Payment Complete', 'ym')); } else { $r = $this->_failedBraintree($result, true); } } else { if ($what == 'bundle' || $what == 'post') { // post or bundle purchase if ($what == 'post') { $cost = get_post_meta($pack_id, '_ym_post_purchasable_cost', true); } else { $bundle = ym_get_bundle($pack_id); if (!$bundle) { $r = array('ok' => false, 'message' => __('Bundle Error', 'ym')); } else { $cost = $bundle->cost; } } if ($cost) { $result = Braintree_Transaction::sale(array('amount' => $cost, 'options' => array('submitForSettlement' => true), 'customerId' => $result->customer->id, 'paymentMethodToken' => $result->customer->creditCards[0]->token)); $amount = $result->transaction->amount; if ($result->success) { // common $this->common_process($code, $amount, true, false); // thanks if ($what == 'subscription') { $url = $this->redirectlogic($pack); } else { if ($what == 'post') { $url = $this->redirectlogic(array('ppp' => true, 'post_id' => $pack_id)); } else { $url = $this->redirectlogic(array('ppp' => true, 'ppp_pack_id' => $pack_id)); } } $r = array('ok' => true, 'url' => $url, 'message' => __('Payment Complete', 'ym')); } else { $r = $this->_failedBraintree($result, true); } } } else { // unhandled purchase $r = $this->_failedBraintree($result, true); } } } else { $r = $this->_failedBraintree($result, true); } ob_clean(); echo json_encode($r); // bugger exit; // non ajax/primary js failed // transparent redirect handlers } else { if ($action == 'process') { $this->_braintree(); $queryString = $_SERVER['QUERY_STRING']; try { $result = Braintree_TransparentRedirect::confirm($queryString); } catch (Exception $e) { if (get_class($e) == 'Braintree_Exception_NotFound') { echo 'not found'; } else { echo '<pre>'; print_r($e); echo $e->getMessage(); } exit; } if ($result->success) { $code = ym_request('code'); // grab token and subscribe list($buy, $what, $pack_id, $user_id) = explode('_', $code); $pack = ym_get_pack_by_id($pack_id); $planId = isset($pack['braintree_plan_id']) ? $pack['braintree_plan_id'] : false; if ($pack['num_cycles'] == 1 || $planId) { // initiate charge against just added credit card if ($planId) { $result = Braintree_Subscription::create(array('planId' => $planId, 'paymentMethodToken' => $result->customer->creditCards[0]->token)); $amount = $result->subscription->transactions[0]->amount; } else { $result = Braintree_Transaction::sale(array('amount' => $pack['cost'], 'options' => array('submitForSettlement' => true), 'customerId' => $result->customer->id, 'paymentMethodToken' => $result->customer->creditCards[0]->token)); $amount = $result->transaction->amount; } if ($result->success) { // common $this->common_process($code, $amount, true, false); // thanks $this->redirectlogic($pack, true); exit; } else { $this->_failedBraintree($result); } } else { $this->_failedBraintree($result); } exit; } $this->_failedBraintree($result); } else { $this->_failedBraintree(); } } } }