예제 #1
0
function metacharge_error($msg)
{
    global $order_id, $payment_id, $pnref, $db;
    global $vars;
    $db->log_error(sprintf(_PLUG_PAY_METACHARGE_FERROR, $msg, $pnref, $payment_id, '<br />') . "\n" . metacharge_get_dump($vars));
    die($msg);
}
예제 #2
0
 function do_payment($payment_id, $member_id, $product_id, $price, $begin_date, $expire_date, &$vars)
 {
     global $config, $db;
     $orig_product_id = $product_id;
     if (is_array($product_id)) {
         $product_id = $product_id[0];
     }
     $product =& get_product($product_id);
     if (count($orig_product_id) > 1) {
         $product->config['title'] = $config['multi_title'];
     }
     $u = $db->get_user($member_id);
     $vars = array('intInstID' => $this->config['installation_id'], 'strCartID' => $payment_id, 'strCurrency' => 'USD', 'strDesc' => substr($product->config['title'], 0, 192), 'strEmail' => substr($u['email'], 0, 100), 'strCardHolder' => substr($u['name_f'] . ' ' . $u['name_l'], 0, 20));
     if ($config['use_address_info']) {
         $vars += array('strAddress' => substr($u['street'], 0, 255), 'strCity' => substr($u['city'], 0, 40), 'strState' => substr($u['state'], 0, 40), 'strCountry' => substr($u['country'], 0, 2), 'strPostcode' => substr($u['zip'], 0, 15));
     }
     if ($this->config['testing']) {
         $vars['intTestMode'] = 1;
         // If included, indicates a test purchase.
         // A VISA card with card number 1234123412341234 should be used on the payment page.
         // Values: 0=equivalent to field omitted (payment is live), 1=all payments are successful, 2=all payments fail.
         // Banks are not involved in test payments.
     }
     if ($product->config['metacharge_currency']) {
         $vars['strCurrency'] = $product->config['metacharge_currency'];
     }
     if ($product->config['is_recurring']) {
         $p = $db->get_payment($payment_id);
         $vars['intRecurs'] = '1';
         // For scheduled payments, indicates if scheduled payments should recur. Values: 0=no, 1=yes.
         if ($product->config['rebill_times']) {
             $vars['intCancelAfter'] = intval($product->config['rebill_times']);
         }
         // Cancel a subscription after this many successful payments.
         $has_trials = false;
         if ($product->config['trial1_days'] && $product->config['trial1_price']) {
             $has_trials = true;
             $vars['fltSchAmount1'] = metacharge_get_price($product->config['trial1_price']);
             $vars['strSchPeriod1'] = metacharge_get_period($product->config['trial1_days'], 'trial1_days');
             $p['expire_date'] = $product->get_expire($begin_date, 'trial1_days');
             $p['amount'] = $product->config['trial1_price'];
             $db->update_payment($payment_id, $p);
         }
         if ($has_trials && $product->config['trial2_days'] && $product->config['trial2_price']) {
             $vars['fltSchAmount2'] = metacharge_get_price($product->config['trial2_price']);
             $vars['strSchPeriod2'] = metacharge_get_period($product->config['trial2_days'], 'trial2_days');
         }
         if ($has_trials && $product->config['trial3_days'] && $product->config['trial3_price']) {
             $vars['fltSchAmount3'] = metacharge_get_price($product->config['trial3_price']);
             $vars['strSchPeriod3'] = metacharge_get_period($product->config['trial3_days'], 'trial3_days');
         }
         //            if (!$has_trials){
         $vars['fltSchAmount'] = metacharge_get_price($price);
         $vars['strSchPeriod'] = metacharge_get_period($product->config['expire_days'], 'expire_days');
         // char(4)
         //            }
     }
     $vars['fltAmount'] = metacharge_get_price($price);
     $db->log_error("METACHARGE SENT: " . metacharge_get_dump($vars));
     $t =& new_smarty();
     $t->template_dir = dirname(__FILE__);
     $t->assign(array('vars' => $vars));
     $t->display('metacharge.html');
     exit;
 }