Exemplo n.º 1
0
 function save_owner($event_data = array())
 {
     if (empty($event_data)) {
         $event_data = $this->getData();
     }
     $uid = isset($event_data['uid']) ? $event_data['uid'] : false;
     if (!$uid && (!defined('AMP_FORM_ID_EVENT_OWNER') || !AMP_FORM_ID_EVENT_OWNER)) {
         return false;
     }
     require_once 'AMP/System/User/Profile/Profile.php';
     $owner = new AMP_System_User_Profile($this->dbcon, $uid);
     if (!$owner->hasData()) {
         $owner->setDefaults();
         $owner->mergeData(array('modin' => AMP_FORM_ID_EVENT_OWNER));
     }
     $allowed_keys = $this->export_keys();
     foreach ($this->_legacy_fields as $old_name => $new_name) {
         if (!isset($event_data[$old_name])) {
             continue;
         }
         $event_data[$new_name] = $event_data[$old_name];
     }
     $allowed_data = array_combine_key($allowed_keys, $event_data);
     unset($allowed_data['id']);
     $owner->mergeData($allowed_data);
     $result = $owner->save();
     if (!$result) {
         return false;
     }
     $this->_owner =& $owner;
     return $owner->id;
 }
Exemplo n.º 2
0
 function save($data)
 {
     $data = $this->udm->getData();
     foreach ($data as $key => $value) {
         if ($field = $this->checkPrefix($key)) {
             $plugin[$field] = $value;
         }
     }
     $options = $this->getOptions();
     require_once 'PayPal.php';
     require_once 'PayPal/Profile/API.php';
     require_once 'PayPal/Profile/Handler.php';
     require_once 'PayPal/Profile/Handler/Array.php';
     require_once 'PayPal/Type/DoDirectPaymentRequestType.php';
     require_once 'PayPal/Type/DoDirectPaymentRequestDetailsType.php';
     require_once 'PayPal/Type/DoDirectPaymentResponseType.php';
     require_once 'PayPal/Type/BasicAmountType.php';
     require_once 'PayPal/Type/PaymentDetailsType.php';
     require_once 'PayPal/Type/AddressType.php';
     require_once 'PayPal/Type/CreditCardDetailsType.php';
     require_once 'PayPal/Type/PayerInfoType.php';
     require_once 'PayPal/Type/PersonNameType.php';
     $pid = ProfileHandler::generateID();
     $handler = ProfileHandler_Array::getInstance(array('username' => $options['api_username'], 'password' => $options['api_password'], 'certificateFile' => $options['cert_file'], 'subject' => null, 'environment' => $options['environment']));
     $profile = APIProfile::getInstance($pid, $handler);
     $dp_request = PayPal::getType('DoDirectPaymentRequestType');
     $firstName = $data['First_Name'];
     $lastName = $data['Last_Name'];
     $creditCardType = $plugin['cc_type'];
     $creditCardNumber = $plugin['cc_number'];
     $expDateMonth = $plugin['cc_expiration']['m'];
     // Month must be padded with leading zero
     $padDateMonth = str_pad($expDateMonth, 2, '0', STR_PAD_LEFT);
     $expDateYear = $plugin['cc_expiration']['Y'];
     $cvv2Number = $plugin['cc_cvv2'];
     $address1 = $data['Street'];
     $address2 = isset($data['Street_1']) ? $data['Street_1'] : null;
     $city = $data['City'];
     $state = $data['State'];
     $zip = $data['Zip'];
     $amount = $plugin['amount'];
     $OrderTotal = PayPal::getType('BasicAmountType');
     $OrderTotal->setattr('currencyID', 'USD');
     $OrderTotal->setval($amount, 'iso-8859-1');
     $PaymentDetails = PayPal::getType('PaymentDetailsType');
     $PaymentDetails->setOrderTotal($OrderTotal);
     $shipTo = PayPal::getType('AddressType');
     $shipTo->setName($firstName . ' ' . $lastName);
     $shipTo->setStreet1($address1);
     $shipTo->setStreet2($address2);
     $shipTo->setCityName($city);
     $shipTo->setStateOrProvince($state);
     $shipTo->setCountry('US');
     $shipTo->setPostalCode($zip);
     $PaymentDetails->setShipToAddress($shipTo);
     $dp_details = PayPal::getType('DoDirectPaymentRequestDetailsType');
     $dp_details->setPaymentDetails($PaymentDetails);
     // Credit Card info
     $card_details = PayPal::getType('CreditCardDetailsType');
     $card_details->setCreditCardType($creditCardType);
     $card_details->setCreditCardNumber($creditCardNumber);
     $card_details->setExpMonth($padDateMonth);
     $card_details->setExpYear($expDateYear);
     $card_details->setCVV2($cvv2Number);
     $payer = PayPal::getType('PayerInfoType');
     $person_name = PayPal::getType('PersonNameType');
     $person_name->setFirstName($firstName);
     $person_name->setLastName($lastName);
     $payer->setPayerName($person_name);
     $payer->setPayerCountry('US');
     $payer->setAddress($shipTo);
     if (isset($data['Email'])) {
         $payer->setPayer($data['Email']);
     }
     $card_details->setCardOwner($payer);
     $dp_details->setCreditCard($card_details);
     $dp_details->setIPAddress($_SERVER['SERVER_ADDR']);
     $dp_details->setPaymentAction('Sale');
     $dp_request->setDoDirectPaymentRequestDetails($dp_details);
     $caller = PayPal::getCallerServices($profile);
     if (PEAR::isError($caller)) {
         trigger_error($caller->getMessage());
         return false;
     }
     $response = $caller->DoDirectPayment($dp_request);
     $ack = $response->getAck();
     define('ACK_SUCCESS', 'Success');
     define('ACK_SUCCESS_WITH_WARNING', 'SuccessWithWarning');
     switch ($ack) {
         case ACK_SUCCESS:
         case ACK_SUCCESS_WITH_WARNING:
             if (isset($options['response']) && $options['response']) {
                 $response_code = 'Transaction ID: ' . $response->getTransactionID() . "\n" . 'Completed AVS Code: ' . $response->getAVSCode() . "\n" . 'CVV2 Code: ' . $response->getCVV2Code();
                 require_once 'AMP/System/User/Profile/Profile.php';
                 $profile = new AMP_System_User_Profile($this->dbcon, $this->udm->uid);
                 if ($profile->hasData()) {
                     $update = array($options['response'] => $response_code);
                     $profile->mergeData($update);
                     $profile->save();
                 } else {
                     trigger_error('cannot update profile with paypal response: ' . $response_code);
                 }
             }
             return true;
         default:
             require_once 'PayPal/Type/AbstractResponseType.php';
             require_once 'PayPal/Type/ErrorType.php';
             require_once 'PayPal/Type/DoDirectPaymentResponseType.php';
             $errors = $response->getErrors();
             if (!is_array($errors)) {
                 $errors = array($errors);
             }
             foreach ($errors as $error) {
                 trigger_error($error->getShortMessage() . ' : ' . $error->getLongMessage());
                 $flash = AMP_System_Flash::instance();
                 $flash->add_error($error->getLongMessage());
             }
     }
     return false;
 }