public function createUpdateForm() { $user = $this->getDi()->auth->getUser(true); if (!$user) { throw new Am_Exception_InputError("You are not logged-in"); } if (!($bid = $user->data()->get(Am_Paysystem_Braintree::CUSTOMER_ID))) { throw new Am_Exception_Paysystem('Customer braintree id is empty'); } if (!($bt_member = Braintree_Customer::find($bid))) { throw new Am_Exception_Paysystem('Wrong customer braintree id'); } if (!($token = $bt_member->creditCards[0]->token)) { throw new Am_Exception_Paysystem('Empty token for credit card'); } $form = $this->plugin->createForm(Am_Form_CreditCard::USER_UPDATE); $form->setDataSources(array($this->_request, new HTML_QuickForm2_DataSource_Array($form->getDefaultValuesSalem($bt_member)))); $form->addHidden('tr_data')->setValue(Braintree_TransparentRedirect::updateCreditCardData(array('redirectUrl' => $this->plugin->getPluginUrl(Am_Paysystem_Braintree::ACTION_UPDATE), 'paymentMethodToken' => $token, 'creditCard' => array('billingAddress' => array('options' => array('updateExisting' => true)))))); return $form; }
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); }
function testUpdateCreditCardFromTransparentRedirect() { $customer = Braintree_Customer::create(array('firstName' => 'Mike', 'lastName' => 'Jonez'))->customer; $creditCard = Braintree_CreditCard::create(array('customerId' => $customer->id, 'number' => Braintree_Test_CreditCardNumbers::$masterCard, 'expirationMonth' => '10', 'expirationYear' => '10'))->creditCard; $params = array('credit_card' => array('number' => Braintree_Test_CreditCardNumbers::$visa)); $trParams = array('paymentMethodToken' => $creditCard->token, 'creditCard' => array('expirationMonth' => '11', 'expirationYear' => '11')); $trData = Braintree_TransparentRedirect::updateCreditCardData(array_merge($trParams, array("redirectUrl" => "http://www.example.com"))); $queryString = Braintree_TestHelper::submitTrRequest(Braintree_TransparentRedirect::url(), $params, $trData); Braintree_TransparentRedirect::confirm($queryString); $creditCard = Braintree_CreditCard::find($creditCard->token); $this->assertequals('401288', $creditCard->bin); $this->assertequals('1881', $creditCard->last4); $this->assertequals('11/2011', $creditCard->expirationDate); }