Exemplo n.º 1
0
 public function updateCreditCard($data, $form)
 {
     $member = Member::get()->byID($data['MemberID']);
     $isConID = $member->ISContactID;
     // Get the Page controller
     $Pg_Ctrl = new Page_Controller();
     //Get InfusionSoft Api
     $creditCardType = $Pg_Ctrl->getISCreditCardType($data['CreditCardType']);
     $app = $Pg_Ctrl->getInfusionSoftApi();
     // Validate credit card
     $card = array('CardType' => $creditCardType, 'ContactId' => $isConID, 'CardNumber' => $data['CreditCardNumber'], 'ExpirationMonth' => sprintf("%02s", $data['ExpiryMonth']), 'ExpirationYear' => $data['ExpiryYear'], 'CVV2' => $data['CreditCardCVV']);
     $result = $app->validateCard($card);
     if ($result['Valid'] != 'true') {
         $form->sessionMessage("The credit card details are invalid!", 'bad');
         return $this->edit(Controller::curr()->getRequest());
     }
     //Update the credit card on InfusionSoft
     $country = Geoip::countryCode2name($data['Country']);
     $ccData = array('BillAddress1' => $data['StreetAddress1'], 'BillAddress2' => $data['StreetAddress2'], 'BillCity' => $data['City'], 'BillState' => $data['State'], 'BillZip' => $data['PostalCode'], 'BillCountry' => $country, 'CardType' => $creditCardType, 'NameOnCard' => $data['NameOnCard'], 'CVV2' => $data['CreditCardCVV'], 'ExpirationMonth' => sprintf("%02s", $data['ExpiryMonth']), 'ExpirationYear' => $data['ExpiryYear']);
     $app->dsUpdate("CreditCard", $data['ISCCID'], $ccData);
     if (isset($data['Current'])) {
         // Update billing address on InfusionSoft
         $conDat = array('Company' => $data['Company'], 'StreetAddress1' => $data['StreetAddress1'], 'StreetAddress2' => $data['StreetAddress2'], 'City' => $data['City'], 'State' => $data['State'], 'PostalCode' => $data['PostalCode'], 'Country' => $country);
         $conID = $app->updateCon($isConID, $conDat);
     }
     //Get the credit card
     $creditCard = CreditCard::get()->filter(array('CreditCardNumber' => $data['CreditCardNumber']))->First();
     //Unset the current card
     if (isset($data['Current']) && !$creditCard->Current) {
         $Pg_Ctrl->unsetCurrentCreditCard($member->ID);
     }
     //Update the credit card on site
     $creditCard->CreditCardType = $data['CreditCardType'];
     $creditCard->NameOnCard = $data['NameOnCard'];
     $creditCard->CreditCardCVV = $data['CreditCardCVV'];
     $creditCard->ExpiryMonth = $data['ExpiryMonth'];
     $creditCard->ExpiryYear = $data['ExpiryYear'];
     $creditCard->Company = $data['Company'];
     $creditCard->StreetAddress1 = $data['StreetAddress1'];
     $creditCard->StreetAddress2 = $data['StreetAddress2'];
     $creditCard->City = $data['City'];
     $creditCard->State = $data['State'];
     $creditCard->PostalCode = $data['PostalCode'];
     $creditCard->Country = $data['Country'];
     if (isset($data['Current']) && !$creditCard->Current) {
         $creditCard->Current = 1;
     }
     if (isset($data['UsedForTrial'])) {
         $creditCard->UsedForTrial = 1;
     }
     $creditCard->write();
     $form->sessionMessage("Credit Card and Billing Address successfully updated.", 'good');
     $randomNumber = rand();
     return $this->getController()->redirect("admin/manage-data/CreditCard/EditForm/field/CreditCard/item/{$creditCard->ID}/edit?rand={$randomNumber}");
 }