コード例 #1
0
 function _log_transaction()
 {
     // check
     if ($this->_is_transaction($_POST['M_custom'])) {
         // tran id
         $tran_id = (int) $_POST['M_custom'];
         // return data
         if (isset($_POST['M_payment_type'])) {
             $option_name = $this->module . '_' . strtolower($_POST['M_payment_type']) . '_return_data';
         } else {
             $option_name = $this->module . '_return_data';
         }
         // set
         mgm_add_transaction_option(array('transaction_id' => $tran_id, 'option_name' => $option_name, 'option_value' => json_encode($_POST)));
         // options
         $options = array('M_payment_type', 'futurePayId', 'transId', 'futurePayStatusChange', 'ctransreceipt');
         // loop
         foreach ($options as $option) {
             if (isset($_POST[$option])) {
                 mgm_add_transaction_option(array('transaction_id' => $tran_id, 'option_name' => strtolower($this->module . '_' . $option), 'option_value' => $_POST[$option]));
             }
         }
         // return transaction id
         return $tran_id;
     }
     // error
     return false;
 }
コード例 #2
0
 function _log_transaction()
 {
     // check
     if ($this->_is_transaction($_POST['x_custom'])) {
         // tran id
         $tran_id = (int) $_POST['x_custom'];
         // return data
         if (isset($this->response['transaction_type'])) {
             $option_name = $this->module . '_' . strtolower($this->response['transaction_type']) . '_return_data';
         } else {
             $option_name = $this->module . '_return_data';
         }
         // set
         mgm_add_transaction_option(array('transaction_id' => $tran_id, 'option_name' => $option_name, 'option_value' => json_encode($this->response)));
         // options
         $options = array('transaction_type', 'subscription_id', 'transaction_id');
         // loop
         foreach ($options as $option) {
             if (isset($this->response[$option])) {
                 mgm_add_transaction_option(array('transaction_id' => $tran_id, 'option_name' => strtolower($this->module . '_' . $option), 'option_value' => $this->response[$option]));
             }
         }
         // return transaction id
         return $tran_id;
     }
     // error
     return false;
 }
コード例 #3
0
 function _log_transaction()
 {
     // custom
     $alt_tran_id = $this->_get_alternate_transaction_id();
     // check
     if ($this->_is_transaction($alt_tran_id)) {
         // tran id
         $tran_id = (int) $alt_tran_id;
         // return data
         /*if(isset($_REQUEST['txn_type'])){
         			$option_name = $this->module.'_'.strtolower($_REQUEST['txn_type']).'_return_data';
         		}else{*/
         $option_name = $this->module . '_return_data';
         //}
         // set
         mgm_add_transaction_option(array('transaction_id' => $tran_id, 'option_name' => $option_name, 'option_value' => json_encode($_POST)));
         // options
         $options = array('TxAuthNo', 'VPSTxId');
         // loop
         foreach ($options as $option) {
             if (isset($_POST[$option])) {
                 mgm_add_transaction_option(array('transaction_id' => $tran_id, 'option_name' => strtolower($this->module . '_' . $option), 'option_value' => $_POST[$option]));
             }
         }
         // return transaction id
         return $tran_id;
     }
     // error
     return false;
 }
コード例 #4
0
 function _log_transaction()
 {
     // parse
     $passthrough = $this->_parse_passthrough();
     // check
     if ($this->_is_transaction($passthrough['custom'])) {
         // tran id
         $tran_id = (int) $passthrough['custom'];
         // return data
         if (isset($_POST['ctransaction'])) {
             $option_name = $this->module . '_' . strtolower($_POST['ctransaction']) . '_return_data';
         } else {
             $option_name = $this->module . '_return_data';
         }
         // set
         mgm_add_transaction_option(array('transaction_id' => $tran_id, 'option_name' => $option_name, 'option_value' => json_encode($_POST)));
         // options
         $options = array('ctransaction', 'ctransreceipt');
         // loop
         foreach ($options as $option) {
             if (isset($_POST[$option])) {
                 mgm_add_transaction_option(array('transaction_id' => $tran_id, 'option_name' => strtolower($this->module . '_' . $option), 'option_value' => $_POST[$option]));
             }
         }
         // return transaction id
         return $tran_id;
     }
     // error
     return false;
 }
コード例 #5
0
 /**
  * record transaction details
  *
  * @return unknown
  */
 function _log_transaction()
 {
     // check
     if ($this->_is_transaction($_POST['custom'])) {
         // tran id
         $tran_id = (int) $_POST['custom'];
         // return data
         if (isset($this->response['TRANSACTIONTYPE'])) {
             $option_name = $this->module . '_' . strtolower($this->response['TRANSACTIONTYPE']) . '_return_data';
         } else {
             $option_name = $this->module . '_return_data';
         }
         // set
         mgm_add_transaction_option(array('transaction_id' => $tran_id, 'option_name' => $option_name, 'option_value' => json_encode($this->response)));
         // options
         $options = array('PROFILEID', 'CORRELATIONID', 'TRANSACTIONID');
         // loop
         foreach ($options as $option) {
             if (isset($this->response[$option])) {
                 mgm_add_transaction_option(array('transaction_id' => $tran_id, 'option_name' => strtolower($this->module . '_' . $option), 'option_value' => isset($this->response[$option]) ? $this->response[$option] : ''));
             }
         }
         // return transaction id
         return $tran_id;
     }
     // error
     return false;
 }
コード例 #6
0
 function _log_transaction()
 {
     // check
     if ($this->_is_transaction($_POST['custom'])) {
         // tran id
         $tran_id = (int) $_POST['custom'];
         // return data
         if (isset($this->response->object)) {
             $option_name = $this->module . '_' . strtolower($this->response->object) . '_return_data';
         } else {
             $option_name = $this->module . '_return_data';
         }
         // set
         mgm_add_transaction_option(array('transaction_id' => $tran_id, 'option_name' => $option_name, 'option_value' => json_encode($this->response)));
         // options
         $options = array('object', 'id', 'created', 'invoice');
         // loop
         foreach ($options as $option) {
             if (isset($this->response->{$option})) {
                 // value
                 $option_value = $this->response->{$option};
                 // id
                 if ($option == 'id') {
                     $option = $this->response->object . '_' . $option;
                 }
                 // customer_id, charge_id
                 // add
                 mgm_add_transaction_option(array('transaction_id' => $tran_id, 'option_name' => strtolower($this->module . '_' . $option), 'option_value' => $option_value));
             }
         }
         // return transaction id
         return $tran_id;
     }
     // error
     return false;
 }
コード例 #7
0
 function _log_transaction()
 {
     // passthrough var
     $alt_tran_id = $this->_get_alternate_transaction_id();
     // check
     if ($this->_is_transaction($alt_tran_id)) {
         // tran id
         $tran_id = (int) $alt_tran_id;
         // return data
         if (isset($_POST['message_type'])) {
             $option_name = $this->module . '_' . strtolower($_POST['message_type']) . '_return_data';
         } else {
             $option_name = $this->module . '_return_data';
         }
         // set
         mgm_add_transaction_option(array('transaction_id' => $tran_id, 'option_name' => $option_name, 'option_value' => json_encode($_POST)));
         // options
         $options = array('message_type', 'order_number', 'sale_id');
         // loop
         foreach ($options as $option) {
             // set
             if (isset($_POST[$option])) {
                 mgm_add_transaction_option(array('transaction_id' => $tran_id, 'option_name' => strtolower($this->module . '_' . $option), 'option_value' => $_POST[$option]));
             }
         }
         // sale id
         if (isset($_POST['order_number']) && !isset($_POST['sale_id'])) {
             mgm_add_transaction_option(array('transaction_id' => $tran_id, 'option_name' => $this->module . '_sale_id', 'option_value' => $_POST['order_number']));
         }
         // return transaction id
         return $tran_id;
     }
     // error
     return false;
 }
コード例 #8
0
 function _log_transaction()
 {
     // check
     if ($this->_is_transaction($_REQUEST['extra'])) {
         // tran id
         $tran_id = (int) $_REQUEST['extra'];
         // return data
         if (isset($_REQUEST['Action'])) {
             $option_name = $this->module . '_' . strtolower($_REQUEST['Action']) . '_return_data';
         } else {
             $option_name = $this->module . '_return_data';
         }
         // set
         mgm_add_transaction_option(array('transaction_id' => $tran_id, 'option_name' => $option_name, 'option_value' => json_encode($_REQUEST)));
         // options
         $options = array('Action', 'SUBSCRIPTION_ID', 'SubscriptionID', 'TRANSACTION_ID');
         // loop
         foreach ($options as $option) {
             // check
             if (isset($_REQUEST[$option])) {
                 mgm_add_transaction_option(array('transaction_id' => $tran_id, 'option_name' => strtolower($this->module . '_' . $option), 'option_value' => $_REQUEST[$option]));
             }
         }
         // return transaction id
         return $tran_id;
     }
     // error
     return false;
 }
コード例 #9
0
 /**
  * API helper method add transaction option
  *
  * @param array $data
  * @return int $id
  * @deprecated 
  * @see mgm_add_transaction_option()
  */
 function _add_transaction_option($data)
 {
     // return
     return mgm_add_transaction_option($data);
 }
コード例 #10
0
 function _log_transaction()
 {
     // check
     if ($this->_is_transaction($_POST['apc_1'])) {
         // tran id
         $tran_id = (int) $_POST['apc_1'];
         // return data
         if (isset($_POST['ap_purchasetype'])) {
             $option_name = $this->module . '_' . strtolower($_POST['ap_purchasetype']) . '_return_data';
         } else {
             $option_name = $this->module . '_return_data';
         }
         // set
         mgm_add_transaction_option(array('transaction_id' => $tran_id, 'option_name' => $option_name, 'option_value' => json_encode($_POST)));
         // options
         $options = array('ap_purchasetype', 'ap_subscriptionreferencenumber', 'ap_referencenumber');
         // loop
         foreach ($options as $option) {
             if (isset($_POST[$option])) {
                 mgm_add_transaction_option(array('transaction_id' => $tran_id, 'option_name' => strtolower($this->module . '_' . $option), 'option_value' => $_POST[$option]));
             }
         }
         // return transaction id
         return $tran_id;
     }
     // error
     return false;
 }
コード例 #11
0
 /**
  * create recurring profile
  */
 function _create_paypal_profile()
 {
     // double check
     if ($_POST['RESULT'] != 0) {
         return;
     }
     // @todo
     // void the auth
     // $this->_void_auth();
     // tran
     $tran = mgm_get_transaction($_POST['M_CUSTOM']);
     // pack
     $pack = $tran['data'];
     // log
     // mgm_log($pack, $this->module . __FUNCTION__);
     // one time billing cycle
     if (isset($pack['num_cycles']) && (int) $pack['num_cycles'] == 1) {
         // log
         mgm_log('Exit Flag for One time billing', $this->module . __FUNCTION__);
         // exit
         return;
     }
     // log
     mgm_log('Process flag to Create Profile', $this->module . __FUNCTION__);
     // user data
     $user_id = $pack['user_id'];
     $user = get_userdata($user_id);
     // item
     $item = $this->get_pack_item($pack);
     // periods
     $pay_periods = array('d' => 'DAYS', 'w' => 'WEEK', 'm' => 'MONT', 'y' => 'YEAR');
     // day not supported by Paypal
     $pay_terms = array('d' => 365, 'w' => 52, 'm' => 12, 'y' => 1);
     // secured
     $secured = array('PARTNER' => $this->setting['partner'], 'VENDOR' => $this->setting['vendor'], 'USER' => $this->setting['username'], 'PWD' => $this->setting['password'], 'MAXFAILPAYMENTS' => (int) $this->setting['max_failed_payments']);
     // greater than 0, set term to ongoing
     if ((int) $pack['num_cycles'] > 1) {
         $term = $pay_terms[$pack['duration_type']] * ($pack['num_cycles'] - 1);
         // reduce 1 since auth captures first payment right away
     } else {
         $term = 0;
     }
     // exprs
     $duration_exprs = mgm_get_class('subscription_packs')->get_duration_exprs();
     //array('d'=>'DAY','w' => 'WEEK', 'm'=>'MONTH', 'y'=>'YEAR' );
     // start date should be next billing cycle date, //date('mdY', strtotime('+1 DAY')),//MMDDYYYY
     $start_date = date('mdY', strtotime('+' . 1 * (int) $pack['duration'] . ' ' . $duration_exprs[$pack['duration_type']]));
     // method
     switch ($_POST['METHOD']) {
         case 'CC':
             // Credit Card DCC
             // comment
             $comment = sprintf('%s By %s', $item['name'], $user->user_email);
             # code...
             $data = array('TRXTYPE' => 'R', 'TENDER' => 'C', 'ACTION' => 'A', 'PROFILENAME' => $item['name'], 'ORIGID' => $_POST['PNREF'], 'START' => $start_date, 'PAYPERIOD' => $pay_periods[$pack['duration_type']], 'TERM' => $term, 'AMT' => $pack['cost'], 'EMAIL' => $user->user_email, 'DESC' => $item['name'], 'COMMENT1' => $this->_remove_special_chars($comment));
             break;
         case 'P':
             // PayPal, EC
         // PayPal, EC
         default:
             // comment
             $comment = sprintf('%s By %s', $item['name'], $user->user_email);
             # code...
             $data = array('TRXTYPE' => 'R', 'TENDER' => 'P', 'ACTION' => 'A', 'PROFILENAME' => $item['name'], 'BAID' => isset($_POST['BAID']) && !empty($_POST['BAID']) ? $_POST['BAID'] : $_POST['PNREF'], 'START' => $start_date, 'PAYPERIOD' => $pay_periods[$pack['duration_type']], 'TERM' => $term, 'AMT' => $pack['cost'], 'EMAIL' => $user->user_email, 'DESC' => $item['name'], 'COMMENT1' => $this->_remove_special_chars($comment));
             // check, notify admin
             if (!isset($_POST['BAID']) || empty($_POST['BAID'])) {
                 // subject
                 $subject = 'BAID missing in PayPal Payflow Profile Creation';
                 // message
                 $message = sprintf('BAID missing in PayPal Payflow Profile Creation, Please contact PayPal, POST DATA: %s', print_r($_POST, true));
                 // send
                 mgm_notify_admin(null, $subject, $message);
                 // log
                 mgm_log($message, $this->module . __FUNCTION__);
             }
             break;
     }
     // additional fields
     $this->_set_address_fields($user, $data);
     // merge
     $data = array_merge($secured, $data);
     // log
     mgm_log($data, $this->module . __FUNCTION__);
     // data
     $data_post = _http_build_query($data, null, '&', '', false);
     // do not encode
     // link
     $post_url = $this->_get_endpoint();
     //issue #1508
     $url_parsed = parse_url($post_url);
     // domain/host
     $domain = $url_parsed['host'];
     // headers
     $http_headers = array('POST /cgi-bin/webscr HTTP/1.1\\r\\n', 'Content-Type: application/x-www-form-urlencoded\\r\\n', 'Host: ' . $domain . '\\r\\n', 'Connection: close\\r\\n\\r\\n');
     // post
     $http_response = mgm_remote_post($post_url, $data_post, array('headers' => $http_headers, 'timeout' => 30, 'sslverify' => false));
     // parse
     $response = array();
     // parse
     parse_str($http_response, $response);
     // log
     mgm_log($response, $this->module . __FUNCTION__);
     // profile id
     if ($response['RESULT'] == 0) {
         // set in post
         $_POST['PROFILEID'] = $response['PROFILEID'];
         // set in option
         mgm_add_transaction_option(array('transaction_id' => $_POST['M_CUSTOM'], 'option_name' => strtolower($this->module . '_PROFILEID'), 'option_value' => isset($_POST['PROFILEID']) ? $_POST['PROFILEID'] : ''));
     }
 }