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); }
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; }