コード例 #1
0
 function _get_rabobank_data($data, $tran_id)
 {
     // new data
     $n_data = array();
     // map
     $map = array('currencyCode' => 'currency', 'merchantId' => 'merchantID', 'normalReturnUrl' => 'urlSuccess', 'amount' => 'amount', 'transactionReference' => 'purchaseID', 'customerLanguage' => 'language', 'orderId' => 'purchaseID');
     // loop
     foreach ($map as $k => $v) {
         $n_data[$k] = $data[$v];
     }
     // date
     // $n_data['expirationDate']	    = $data['validUntil'];// date(DATE_ISO8601, strtotime('+1 hour'));
     // key version
     $n_data['keyVersion'] = $this->setting['key_version'];
     $n_data['paymentMeanBrandList'] = $this->setting['payment_mean_brand'];
     // current 4217 code
     $n_data['currencyCode'] = mgm_get_currency_iso4217($n_data['currencyCode']);
     $n_data['customerLanguage'] = substr($n_data['customerLanguage'], 0, 2);
     // url
     $n_data['automaticResponseUrl'] = site_url() . '/idealraboomnikassa_proxy.php?url_' . base64_encode(add_query_arg(array('extra' => $data['purchaseID']), $this->setting['notify_url']));
     $n_data['normalReturnUrl'] = site_url() . '/idealraboomnikassa_proxy.php?url_' . base64_encode(add_query_arg(array('extra' => $data['purchaseID']), $this->setting['return_url']));
     // convert = to %3D, rabo strips =
     // $n_data['automaticResponseUrl'] = str_replace('=', '%3D', $n_data['automaticResponseUrl']);
     // $n_data['normalReturnUrl']      = str_replace('=', '%3D', $n_data['normalReturnUrl']);
     // filter null
     $n_data = array_filter($n_data);
     // data string
     $data_str = _http_build_query($n_data, null, '|', '', false);
     $seal_str = $data_str . $this->setting['secret_key'];
     // seal
     $seal = hash('sha256', utf8_encode($seal_str));
     //computeSeal
     // interface
     $interface = 'HP_1.0';
     // return
     return array('Data' => $data_str, 'Seal' => $seal, 'InterfaceVersion' => $interface);
 }
コード例 #2
0
 function _get_button_data($pack, $tran_id = NULL)
 {
     // system setting
     $system_obj = mgm_get_class('system');
     $user_id = $pack['user_id'];
     $user = get_userdata($user_id);
     $member = mgm_get_member($user_id);
     //pack currency over rides genral setting currency - issue #1602
     if (!isset($pack['currency']) || empty($pack['currency'])) {
         $pack['currency'] = $this->setting['currency'];
     }
     // setup data array
     $data = array('clientAccnum' => $this->setting['client_acccnum'], 'clientSubacc' => $this->setting['client_subacc']);
     // upgrade
     if ($this->setting['upgrade_api'] == 'upgrade' && ($pack['subscription_option'] == 'upgrade' || $pack['subscription_option'] == 'purchase_another')) {
         // encode
         $data['enc'] = $this->_create_upgrade_enc($pack, $data, $tran_id);
     } else {
         // merge
         // formname
         $formname = isset($pack['product']['ccbill_formname']) && !empty($pack['product']['ccbill_formname']) ? $pack['product']['ccbill_formname'] : $this->setting['formname'];
         // data
         $data = array_merge($data, array('formName' => $formname, 'language' => 'English', 'email' => $user->user_email));
         // address fields
         $this->_set_address_fields($user, $data);
         // subscription purchase with ongoing/limited
         if (!isset($pack['buypost']) && isset($pack['duration_type'])) {
             // supports one-time recurring
             // if ($pack['num_cycles'] != 1 && isset($pack['duration_type']) ) { // old style
             // old functionality: using subscription id
             if (isset($pack['product']['ccbill_substype_id']) && !empty($pack['product']['ccbill_substype_id'])) {
                 // format type id
                 $typeid_fmt = str_pad(trim($pack['product']['ccbill_substype_id']), 10, '0', STR_PAD_LEFT);
                 // iso currency
                 $currency_iso = mgm_get_currency_iso4217($pack['currency']);
                 // set
                 $data['subscriptionTypeId'] = implode(':', array($typeid_fmt, $currency_iso));
                 $data['allowedTypes'] = $data['subscriptionTypeId'];
             } elseif (isset($this->setting['dynamic_pricing']) && $this->setting['dynamic_pricing'] == 'enabled') {
                 // use dynamic pricing
                 // vaidate
                 $this->_valididate_dynamic_pricing(false);
                 // types
                 $intv_types = array('d' => 1, 'w' => 7, 'm' => 30, 'y' => 365);
                 // currency
                 $data['currencyCode'] = mgm_get_currency_iso4217($pack['currency']);
                 // #1086 iso integer code code for currency
                 // price
                 $data['formPrice'] = number_format($pack['cost'], 2, '.', '');
                 //issue #1666
                 if (isset($pack['num_cycles']) && (int) $pack['num_cycles'] > 0) {
                     $data['formPeriod'] = $intv_types[strtolower($pack['duration_type'])] * $pack['duration'] * $pack['num_cycles'];
                     // 2;// in days
                 } else {
                     $data['formPeriod'] = $intv_types[strtolower($pack['duration_type'])] * $pack['duration'];
                 }
                 // trial
                 if ($pack['trial_on']) {
                     $data['formPrice'] = number_format($pack['trial_cost'], 2, '.', '');
                     $data['formPeriod'] = $intv_types[$pack['trial_duration_type']] * $pack['trial_duration'] * $pack['trial_num_cycles'];
                     //in days
                 }
                 //issue #1739
                 if ($pack['num_cycles'] != 1) {
                     // cost
                     $data['formRecurringPrice'] = $data['formPrice'];
                     $data['formRecurringPeriod'] = $intv_types[$pack['duration_type']] * $pack['duration'];
                     //number of days
                     $data['formRebills'] = isset($pack['num_cycles']) && (int) $pack['num_cycles'] > 0 ? (int) $pack['num_cycles'] : 99;
                     // iteration(99=infinite)
                 }
                 $data['formDigest'] = md5($data['formPrice'] . $data['formPeriod'] . $data['formRecurringPrice'] . $data['formRecurringPeriod'] . $data['formRebills'] . $data['currencyCode'] . $this->setting['md5_hashsalt']);
             }
             // send mgm created username/password
             if ($this->setting['send_userpass'] == 'yes') {
                 // username
                 $data['username'] = $user->user_login;
                 $data['password'] = mgm_decrypt_password($member->user_password, $user_id);
             }
         } else {
             // post purchase
             if (isset($this->setting['dynamic_pricing']) && $this->setting['dynamic_pricing'] == 'enabled') {
                 // vaidate
                 $this->_valididate_dynamic_pricing(false);
                 // set price for addons
                 $data['formPrice'] = $pack['cost'];
                 // apply addons
                 $this->_apply_addons($pack, $data, array('amount' => 'formPrice'));
                 // price
                 $data['formPrice'] = number_format($data['formPrice'], 2, '.', '');
                 $data['formPeriod'] = 2;
                 // in days @todo manage via settings
                 $data['currencyCode'] = mgm_get_currency_iso4217($pack['currency']);
                 // #1086 iso integer code code for currency
                 $data['formDigest'] = md5($data['formPrice'] . $data['formPeriod'] . $data['currencyCode'] . $this->setting['md5_hashsalt']);
             }
         }
         // custom passthrough
         $data['custom'] = $tran_id;
     }
     // update currency - issue #1602
     /*		if($pack['currency'] != $this->setting['currency']){
     			$pack['currency'] = $this->setting['currency'];
     		}*/
     // add filter @todo test
     $data = apply_filters('mgm_payment_button_data', $data, $tran_id, $this->module, $pack);
     // update pack/transaction
     mgm_update_transaction(array('data' => json_encode($pack), 'module' => $this->module), $tran_id);
     // return data
     return $data;
 }