Version 2.1.7

This commit is contained in:
Neo committed 2025-12-19 00:21:15 -08:00
1 parent 0eecc172d9
commit f73f8bff6d
941 files changed
+215301 -103093

No files matched your search

@@ -0,0 +1,376 @@
<?php
/*
+--------------------------------------------------------------------------
| Invision Power Board 2.1.7
| =============================================
| by Matthew Mecham
| (c) 2001 - 2005 Invision Power Services, Inc.
| http://www.invisionpower.com
| =============================================
| Web: http://www.invisionboard.com
| http://www.ibresource.ru/products/invisionpowerboard/
| Time: Tuesday 18th of July 2006 05:56:00 PM
| Release: 52f408a29988b02f45b5e6f4ba5af0ae
| Licence Info: http://www.invisionboard.com/?license
| http://www.ibresource.ru/license
+---------------------------------------------------------------------------
| INVISION POWER BOARD IS NOT FREE / OPEN SOURCE!
+---------------------------------------------------------------------------
| INVISION POWER BOARD ÍÅ ßÂËßÅÒÑß ÁÅÑÏËÀÒÍÛÌ ÏÐÎÃÐÀÌÌÍÛÌ ÎÁÅÑÏÅ×ÅÍÈÅÌ!
| Ïðàâà íà ÏÎ ïðèíàäëåæàò Invision Power Services
| Ïðàâà íà ïåðåâîä IBResource (http://www.ibresource.ru)
+---------------------------------------------------------------------------
|
| > Payment Gateway API: PAYPAL
| > Module written by Matt Mecham
| > Date started: 31st March 2005 (14:45)
|
|
+--------------------------------------------------------------------------
*/
if ( ! defined( 'GW_CORE_INIT' ) )
{
print "You cannot access this module in this manner";
exit();
}
//--------------------------------------------------------------------------
// DEFINITIONS EXPECTED AT THIS POINT
//--------------------------------------------------------------------------
// GW_URL_VALIDATE : The url for validating payment
// GW_URL_PAYDONE : The url that the gatways returns the viewer to after
// : payment processed successfully
// GW_URL_PAYCANCEL: The url that the gatways returns the viewer to after
// : payment processed unsuccessfully or when cancelled
//--------------------------------------------------------------------------
// ITEM ARRAY
//--------------------------------------------------------------------------
// 'currency_code' => Currency code,
// 'member_unique_id' => member's ID,
// 'member_name' => member's NAME,
// 'member_email' => member's EMAIL,
// 'package_cost' => Requested package cost
// 'package_id' => Requested package ID
// 'package_title' => Requested package title
// 'duration_int' => Requested package duration int (ie: 12)
// 'duration_unit' => Requested package duration unit (ie: m,d,y,w) [ month, day, year, week ]
// 'company_email' => Company's email address
// 'ttr_int' => Time to run (Time left on current package) integar (ie 3)
// 'ttr_unit' => Time to run (Time left on current package) unit (ie w)
// 'ttr_balance' => Time to run (Balance left on current package)
// 'ttr_package_id' => Current package id (used for upgrading)
//--------------------------------------------------------------------------
class class_gw_module EXTENDS class_gateway
{
# Global
var $ipsclass;
# Identify
var $i_am = '2checkout';
var $can_do_recurring_billing = 0;
var $can_do_upgrades = 0;
/*-------------------------------------------------------------------------*/
// INIT
/*-------------------------------------------------------------------------*/
function main_init()
{
}
/*-------------------------------------------------------------------------*/
// Generate hidden fields [ Recurring, normal screen ]
/*-------------------------------------------------------------------------*/
function gw_generate_hidden_fields_normal_recurring( $items=array() )
{
// Not available for this gateway
return $this->core_compile_hidden_fields();
}
/*-------------------------------------------------------------------------*/
// Generate hidden fields [ Recurring, upgrade screen ]
/*-------------------------------------------------------------------------*/
function gw_generate_hidden_fields_upgrade_recurring( $items=array() )
{
// Not available for this gateway
return $this->core_compile_hidden_fields();
}
/*-------------------------------------------------------------------------*/
// Generate hidden fields [ normal screen ]
/*-------------------------------------------------------------------------*/
function gw_generate_hidden_fields_normal( $items=array() )
{
$this->core_add_hidden_field( "merchant_order_id" , $items['package_id'].'x'.$items['member_unique_id'].'x0' );
$this->core_add_hidden_field( "sid" , $items['vendor_id'] );
$this->core_add_hidden_field( "product_id" , $items['product_id'] );
$this->core_add_hidden_field( "quantity" , 1 );
return $this->core_compile_hidden_fields();
}
/*-------------------------------------------------------------------------*/
// Generate hidden fields [ upgrade screen ]
/*-------------------------------------------------------------------------*/
function gw_generate_hidden_fields_upgrade( $items=array() )
{
// NO method
return $this->core_compile_hidden_fields();
}
/*-------------------------------------------------------------------------*/
// Generate Purchase button
/*-------------------------------------------------------------------------*/
function gw_generate_purchase_button()
{
return '<input type="submit" name="b1" value="'.$this->ipsclass->lang['s_continue_button2'].'" />';
}
/*-------------------------------------------------------------------------*/
// Generate Form action [normal]
/*-------------------------------------------------------------------------*/
function gw_generate_normal_form_action()
{
return "https://www.2checkout.com/cgi-bin/sbuyers/purchase.2c";
}
/*-------------------------------------------------------------------------*/
// Generate Form action [upgrade]
/*-------------------------------------------------------------------------*/
function gw_generate_upgrade_form_action()
{
return $this->gw_generate_normal_form_action();
}
/*-------------------------------------------------------------------------*/
// Generate Form action [normal, recurring]
/*-------------------------------------------------------------------------*/
function gw_generate_normal_recurring_form_action()
{
return $this->gw_generate_normal_form_action();
}
/*-------------------------------------------------------------------------*/
// Generate Form action [upgrade, recurring]
/*-------------------------------------------------------------------------*/
function gw_generate_upgrade_recurring_form_action()
{
return $this->gw_generate_normal_form_action();
}
/*-------------------------------------------------------------------------*/
// Validate Payment
// What we need to return:
// 'currency_code' => Currency code,
// 'payment_amount' => Amount paid,
// 'payment_status' => REFUND, ONEOFF, RECURRING
// 'member_unique_id' => member's ID,
// 'purchase_package_id'=> Purchased package ID
// 'current_package_id' => Current package ID (used for upgrading)
// 'verified' => TRUE , FALSE (Gateway verifies info as correct)
// 'subscription_id' => (Used for recurring payments)
// 'transaction_id' => Gateway transaction ID
/*-------------------------------------------------------------------------*/
function gw_validate_payment()
{
//--------------------------------------
// INIT
//--------------------------------------
$referers = array( 'www.2checkout.com', '2checkout.com' );
$got_match = 0;
//--------------------------------------
// Debug...
//--------------------------------------
if ( GW_TEST_MODE_ON )
{
if ( ! is_array( $_POST ) or ! count( $_POST ) )
{
$_POST = $_GET;
}
}
//--------------------------------------
// Check...
//--------------------------------------
foreach( $referers as $r )
{
if ( preg_match( "#https?://$r#i", $_SERVER['HTTP_REFERER'] ) )
{
$got_match = 1;
}
}
if ( ! $got_match AND ! GW_TEST_MODE_ON )
{
$this->error = 'not_valid';
return array( 'verified' => FALSE );
}
//--------------------------------------
// Populate return array
//--------------------------------------
list( $purchase_package_id, $member_id, $cur_sub_id, ) = explode( 'x', trim($_REQUEST['merchant_order_id']) );
$return = array( 'currency_code' => 'USD',
'payment_amount' => $_REQUEST['total'],
'member_unique_id' => intval($member_id),
'purchase_package_id'=> intval($purchase_package_id),
'current_package_id' => intval($cur_sub_id),
'verified' => TRUE,
'subscription_id' => '0-'.intval($member_id),
'transaction_id' => $_REQUEST['order_number'] .'x'.time() );
//--------------------------------------
// Sort out payment status
//--------------------------------------
$return['payment_status'] = 'ONEOFF';
//--------------------------------------
// Pass back to handler
//--------------------------------------
return $return;
}
/*-------------------------------------------------------------------------*/
// Process recurring payment check
// Return: array( 'amount_paid', 'state' [ PAID, DEAD, FAILED, PENDING ]
/*-------------------------------------------------------------------------*/
function gw_do_normal_payment_check( $balance_to_pay=0, $total_package_cost=0, $upgrade=0 )
{
$this->gateway->error = "";
//--------------------------------------
// INIT
//--------------------------------------
$return = array();
//--------------------------------------
// Completed
//--------------------------------------
if ( $upgrade AND ( $_POST['amount'] == $balance_to_pay ) )
{
//--------------------------------------
// Paid correct amount
//--------------------------------------
$return['amount_paid'] = $_POST['amount'];
$return['state'] = 'PAID';
}
else if ( ! $upgrade AND ( $_POST['amount'] == $total_package_cost ) )
{
//--------------------------------------
// Paid correct amount
//--------------------------------------
$return['amount_paid'] = $_POST['amount'];
$return['state'] = 'PAID';
}
else
{
//-----------------------
// End of subscription
//-----------------------
$return['state'] = 'FAILED';
}
return $return;
}
/*-------------------------------------------------------------------------*/
// Process recurring payment check
// Return: array( 'amount_paid', 'state' [ PAID, DEAD, FAILED, PENDING ]
/*-------------------------------------------------------------------------*/
function gw_do_recurring_payment_check( $balance_to_pay=0, $total_package_cost=0 )
{
$this->gateway->error = "";
//--------------------------------------
// INIT
//--------------------------------------
$return = array();
return $return;
}
//---------------------------------------
// Return ACP Package Variables
//
// Returns names for the package custom
// fields, etc
//---------------------------------------
function acp_return_package_variables()
{
$return = array(
'subextra_custom_1' => array( 'used' => 0, 'varname' => '' ),
'subextra_custom_2' => array( 'used' => 0, 'varname' => '' ),
'subextra_custom_3' => array( 'used' => 0, 'varname' => '' ),
'subextra_custom_4' => array( 'used' => 0, 'varname' => '' ),
'subextra_custom_5' => array( 'used' => 0, 'varname' => '' ),
);
return $return;
}
//---------------------------------------
// Return ACP Method Variables
//
// Returns names for the package custom
// fields, etc
//---------------------------------------
function acp_return_method_variables()
{
$return = array(
'submethod_custom_1' => array( 'used' => 0, 'varname' => '' ),
'submethod_custom_2' => array( 'used' => 0, 'varname' => '' ),
'submethod_custom_3' => array( 'used' => 0, 'varname' => '' ),
'submethod_custom_4' => array( 'used' => 0, 'varname' => '' ),
'submethod_custom_5' => array( 'used' => 0, 'varname' => '' ),
);
return $return;
}
}
?>
@@ -0,0 +1,451 @@
<?php
/*
+--------------------------------------------------------------------------
| Invision Power Board 2.1.7
| =============================================
| by Matthew Mecham
| (c) 2001 - 2005 Invision Power Services, Inc.
| http://www.invisionpower.com
| =============================================
| Web: http://www.invisionboard.com
| http://www.ibresource.ru/products/invisionpowerboard/
| Time: Tuesday 18th of July 2006 05:56:00 PM
| Release: 52f408a29988b02f45b5e6f4ba5af0ae
| Licence Info: http://www.invisionboard.com/?license
| http://www.ibresource.ru/license
+---------------------------------------------------------------------------
| INVISION POWER BOARD IS NOT FREE / OPEN SOURCE!
+---------------------------------------------------------------------------
| INVISION POWER BOARD ÍÅ ßÂËßÅÒÑß ÁÅÑÏËÀÒÍÛÌ ÏÐÎÃÐÀÌÌÍÛÌ ÎÁÅÑÏÅ×ÅÍÈÅÌ!
| Ïðàâà íà ÏÎ ïðèíàäëåæàò Invision Power Services
| Ïðàâà íà ïåðåâîä IBResource (http://www.ibresource.ru)
+---------------------------------------------------------------------------
|
| > Payment Gateway API: PAYPAL
| > Module written by Matt Mecham
| > Date started: 31st March 2005 (14:45)
|
|
+--------------------------------------------------------------------------
*/
if ( ! defined( 'GW_CORE_INIT' ) )
{
print "You cannot access this module in this manner";
exit();
}
//--------------------------------------------------------------------------
// DEFINITIONS EXPECTED AT THIS POINT
//--------------------------------------------------------------------------
// GW_URL_VALIDATE : The url for validating payment
// GW_URL_PAYDONE : The url that the gatways returns the viewer to after
// : payment processed successfully
// GW_URL_PAYCANCEL: The url that the gatways returns the viewer to after
// : payment processed unsuccessfully or when cancelled
//--------------------------------------------------------------------------
// ITEM ARRAY
//--------------------------------------------------------------------------
// 'currency_code' => Currency code,
// 'member_unique_id' => member's ID,
// 'member_name' => member's NAME,
// 'member_email' => member's EMAIL,
// 'package_cost' => Requested package cost
// 'package_id' => Requested package ID
// 'package_title' => Requested package title
// 'duration_int' => Requested package duration int (ie: 12)
// 'duration_unit' => Requested package duration unit (ie: m,d,y,w) [ month, day, year, week ]
// 'company_email' => Company's email address
// 'ttr_int' => Time to run (Time left on current package) integar (ie 3)
// 'ttr_unit' => Time to run (Time left on current package) unit (ie w)
// 'ttr_balance' => Time to run (Balance left on current package)
// 'ttr_package_id' => Current package id (used for upgrading)
//--------------------------------------------------------------------------
class class_gw_module EXTENDS class_gateway
{
# Global
var $ipsclass;
# Identify
var $i_am = 'authorizenet';
var $can_do_recurring_billing = 0;
var $can_do_upgrades = 1;
/*-------------------------------------------------------------------------*/
// INIT
/*-------------------------------------------------------------------------*/
function main_init()
{
}
/*-------------------------------------------------------------------------*/
// Generate hidden fields [ Recurring, normal screen ]
/*-------------------------------------------------------------------------*/
function gw_generate_hidden_fields_normal_recurring( $items=array() )
{
// Not available for this gateway
return $this->core_compile_hidden_fields();
}
/*-------------------------------------------------------------------------*/
// Generate hidden fields [ Recurring, upgrade screen ]
/*-------------------------------------------------------------------------*/
function gw_generate_hidden_fields_upgrade_recurring( $items=array() )
{
// Not available for this gateway
return $this->core_compile_hidden_fields();
}
/*-------------------------------------------------------------------------*/
// Generate hidden fields [ normal screen ]
/*-------------------------------------------------------------------------*/
function gw_generate_hidden_fields_normal( $items=array() )
{
$txn_key = $items['company_email'];
$fp_seq = rand(0,1000);
$fp_time = time();
$fp_hash = $this->my_calculatefp( $items['vendor_id'], $txn_key, $items['package_cost'], $fp_seq, $fp_time, $items['currency_code'] );
$this->core_add_hidden_field( "x_cust_id" , $items['package_id'].'x'.$items['member_unique_id'].'x0' );
$this->core_add_hidden_field( "x_login" , $items['company_email'] );
$this->core_add_hidden_field( "x_amount" , $items['package_cost'] );
$this->core_add_hidden_field( "x_currency_code" , $items['currency_code'] );
$this->core_add_hidden_field( "x_description" , $items['package_title'] );
$this->core_add_hidden_field( "x_relay_response" , 'TRUE' );
$this->core_add_hidden_field( "x_show_form" , 'PAYMENT_FORM' );
$this->core_add_hidden_field( "x_test_request" , 'FALSE' );
$this->core_add_hidden_field( "x_fp_hash" , $fp_hash );
$this->core_add_hidden_field( "x_fp_timestamp" , $fp_time );
$this->core_add_hidden_field( "x_fp_sequence" , $fp_seq );
$this->core_add_hidden_field( "x_relay_url" , GW_URL_VALIDATE );
$this->core_add_hidden_field( "x_invoice_num" , $fp_time.'-'.$fp_seq.'-'.$items['currency_code'] );
return $this->core_compile_hidden_fields();
}
/*-------------------------------------------------------------------------*/
// Generate hidden fields [ upgrade screen ]
/*-------------------------------------------------------------------------*/
function gw_generate_hidden_fields_upgrade( $items=array() )
{
$txn_key = $items['company_email'];
$fp_seq = rand(0,1000);
$fp_time = time();
$fp_hash = $this->my_calculatefp( $items['vendor_id'], $txn_key, $items['ttr_balance'], $fp_seq, $fp_time, $items['currency_code'] );
$this->core_add_hidden_field( "x_cust_id" , $items['package_id'].'x'.$items['member_unique_id'].'x'.$items['ttr_package_id'] );
$this->core_add_hidden_field( "x_login" , $items['company_email'] );
$this->core_add_hidden_field( "x_amount" , $items['ttr_balance'] );
$this->core_add_hidden_field( "x_currency_code" , $items['currency_code'] );
$this->core_add_hidden_field( "x_description" , $items['package_title'] );
$this->core_add_hidden_field( "x_relay_response" , 'TRUE' );
$this->core_add_hidden_field( "x_show_form" , 'PAYMENT_FORM' );
$this->core_add_hidden_field( "x_test_request" , 'FALSE' );
$this->core_add_hidden_field( "x_fp_hash" , $fp_hash );
$this->core_add_hidden_field( "x_fp_timestamp" , $fp_time );
$this->core_add_hidden_field( "x_fp_sequence" , $fp_seq );
$this->core_add_hidden_field( "x_relay_url" , GW_URL_VALIDATE );
$this->core_add_hidden_field( "x_invoice_num" , $fp_time.'-'.$fp_seq.'-'.$items['currency_code'] );
return $this->core_compile_hidden_fields();
}
/*-------------------------------------------------------------------------*/
// Generate Purchase button
/*-------------------------------------------------------------------------*/
function gw_generate_purchase_button()
{
return '<input type="submit" name="b1" value="'.$this->ipsclass->lang['s_continue_button2'].'" />';
}
/*-------------------------------------------------------------------------*/
// Generate Form action [normal]
/*-------------------------------------------------------------------------*/
function gw_generate_normal_form_action()
{
return "https://secure.authorize.net/gateway/transact.dll";
}
/*-------------------------------------------------------------------------*/
// Generate Form action [upgrade]
/*-------------------------------------------------------------------------*/
function gw_generate_upgrade_form_action()
{
return $this->gw_generate_normal_form_action();
}
/*-------------------------------------------------------------------------*/
// Generate Form action [normal, recurring]
/*-------------------------------------------------------------------------*/
function gw_generate_normal_recurring_form_action()
{
return $this->gw_generate_normal_form_action();
}
/*-------------------------------------------------------------------------*/
// Generate Form action [upgrade, recurring]
/*-------------------------------------------------------------------------*/
function gw_generate_upgrade_recurring_form_action()
{
return $this->gw_generate_normal_form_action();
}
/*-------------------------------------------------------------------------*/
// Validate Payment
// What we need to return:
// 'currency_code' => Currency code,
// 'payment_amount' => Amount paid,
// 'payment_status' => REFUND, ONEOFF, RECURRING
// 'member_unique_id' => member's ID,
// 'purchase_package_id'=> Purchased package ID
// 'current_package_id' => Current package ID (used for upgrading)
// 'verified' => TRUE , FALSE (Gateway verifies info as correct)
// 'subscription_id' => (Used for recurring payments)
// 'transaction_id' => Gateway transaction ID
/*-------------------------------------------------------------------------*/
function gw_validate_payment( $extra=array() )
{
//--------------------------------------
// INIT
//--------------------------------------
//--------------------------------------
// Debug...
//--------------------------------------
if ( GW_TEST_MODE_ON )
{
if ( ! is_array( $_POST ) or ! count( $_POST ) )
{
$_POST = $_GET;
}
}
//--------------------------------------
// Check hash
//--------------------------------------
list( $fp_time, $fp_seq, $currency_code, ) = explode( '-', $_REQUEST['x_invoice_num'] );
list( $purchase_package_id, $member_id, $cur_sub_id, ) = explode( 'x', trim($_REQUEST['x_cust_id']) );
$in_hash = $_REQUEST['x_md5_hash'] ? $_REQUEST['x_md5_hash'] : $_REQUEST['x_MD5_Hash'];
$txn_key = $extra['company_email'];
$fp_hash = $this->my_calculatefp( $extra['vendor_id'], $txn_key, $_REQUEST['x_amount'], intval($fp_seq), intval($fp_time), trim($currency_code) );
$an_response_code = $_REQUEST['x_response_code'];
$test_hash = strtoupper( md5( $extra['vendor_id'] . $_REQUEST['x_trans_id'] . $_REQUEST['x_amount']) );
if ( $in_hash != $test_hash )
{
$an_response_code = 0;
}
//--------------------------------------
// Check...
//--------------------------------------
if ( $an_response_code != 1 AND ! GW_TEST_MODE_ON )
{
$this->error = 'not_valid';
return array( 'verified' => FALSE );
}
//--------------------------------------
// Populate return array
//--------------------------------------
$return = array( 'currency_code' => trim($currency_code),
'payment_amount' => $_REQUEST['x_amount'],
'member_unique_id' => intval($member_id),
'purchase_package_id'=> intval($purchase_package_id),
'current_package_id' => intval($cur_sub_id),
'verified' => TRUE,
'subscription_id' => '0-'.intval($member_id),
'transaction_id' => $_REQUEST['x_trans_id'] );
//--------------------------------------
// Sort out payment status
//--------------------------------------
$return['payment_status'] = 'ONEOFF';
//--------------------------------------
// Pass back to handler
//--------------------------------------
return $return;
}
/*-------------------------------------------------------------------------*/
// Process recurring payment check
// Return: array( 'amount_paid', 'state' [ PAID, DEAD, FAILED, PENDING ]
/*-------------------------------------------------------------------------*/
function gw_do_normal_payment_check( $balance_to_pay=0, $total_package_cost=0, $upgrade=0 )
{
$this->gateway->error = "";
//--------------------------------------
// INIT
//--------------------------------------
$return = array();
//--------------------------------------
// Completed
//--------------------------------------
if ( $upgrade )
{
//--------------------------------------
// Completed
//--------------------------------------
$return['amount_paid'] = $balance_to_pay;
$return['state'] = 'PAID';
}
else
{
//--------------------------------------
// Completed
//--------------------------------------
$return['amount_paid'] = $total_package_cost;
$return['state'] = 'PAID';
}
return $return;
}
/*-------------------------------------------------------------------------*/
// Process recurring payment check
// Return: array( 'amount_paid', 'state' [ PAID, DEAD, FAILED, PENDING ]
/*-------------------------------------------------------------------------*/
function gw_do_recurring_payment_check( $balance_to_pay=0, $total_package_cost=0 )
{
$this->gateway->error = "";
//--------------------------------------
// INIT
//--------------------------------------
$return = array();
return $return;
}
/*-------------------------------------------------------------------------*/
// INSTALL Gateway...
/*-------------------------------------------------------------------------*/
function install_gateway()
{
//--------------------------------------
// DB queries
//--------------------------------------
$this->db_info = array( 'human_title' => 'Authorize.net',
'human_desc' => 'All major credit cards accepted',
'module_name' => $this->i_am,
'allow_creditcards' => 1,
'allow_auto_validate' => 1,
'default_currency' => 'USD' );
$this->install_lang = array( 'gw_'.$this->i_am => 'Click the button below to complete this order via our secure online payment page.' );
}
//---------------------------------------
// Return ACP Package Variables
//
// Returns names for the package custom
// fields, etc
//---------------------------------------
function acp_return_package_variables()
{
$return = array(
'subextra_custom_1' => array( 'used' => 0, 'varname' => '' ),
'subextra_custom_2' => array( 'used' => 0, 'varname' => '' ),
'subextra_custom_3' => array( 'used' => 0, 'varname' => '' ),
'subextra_custom_4' => array( 'used' => 0, 'varname' => '' ),
'subextra_custom_5' => array( 'used' => 0, 'varname' => '' ),
);
return $return;
}
//---------------------------------------
// Return ACP Method Variables
//
// Returns names for the package custom
// fields, etc
//---------------------------------------
function acp_return_method_variables()
{
$return = array(
'submethod_custom_1' => array( 'used' => 0, 'varname' => '' ),
'submethod_custom_2' => array( 'used' => 0, 'varname' => '' ),
'submethod_custom_3' => array( 'used' => 0, 'varname' => '' ),
'submethod_custom_4' => array( 'used' => 0, 'varname' => '' ),
'submethod_custom_5' => array( 'used' => 0, 'varname' => '' ),
);
return $return;
}
function my_hmac ($key, $data)
{
// RFC 2104 HMAC implementation for php.
// Creates an md5 HMAC.
// Eliminates the need to install mhash to compute a HMAC
// Hacked by Lance Rushing
$b = 64; // byte length for md5
if (strlen($key) > $b) {
$key = pack("H*",md5($key));
}
$key = str_pad($key, $b, chr(0x00));
$ipad = str_pad('', $b, chr(0x36));
$opad = str_pad('', $b, chr(0x5c));
$k_ipad = $key ^ $ipad ;
$k_opad = $key ^ $opad;
return md5($k_opad . pack("H*",md5($k_ipad . $data)));
}
function my_calculatefp($loginid, $txnkey, $amount, $sequence, $tstamp, $currency = "")
{
return $this->my_hmac($txnkey, $loginid . "^" . $sequence . "^" . $tstamp . "^" . $amount . "^" . $currency);
}
}
?>
@@ -0,0 +1,274 @@
<?php
/*
+--------------------------------------------------------------------------
| Invision Power Board 2.1.7
| =============================================
| by Matthew Mecham
| (c) 2001 - 2005 Invision Power Services, Inc.
| http://www.invisionpower.com
| =============================================
| Web: http://www.invisionboard.com
| http://www.ibresource.ru/products/invisionpowerboard/
| Time: Tuesday 18th of July 2006 05:56:00 PM
| Release: 52f408a29988b02f45b5e6f4ba5af0ae
| Licence Info: http://www.invisionboard.com/?license
| http://www.ibresource.ru/license
+---------------------------------------------------------------------------
| INVISION POWER BOARD IS NOT FREE / OPEN SOURCE!
+---------------------------------------------------------------------------
| INVISION POWER BOARD ÍÅ ßÂËßÅÒÑß ÁÅÑÏËÀÒÍÛÌ ÏÐÎÃÐÀÌÌÍÛÌ ÎÁÅÑÏÅ×ÅÍÈÅÌ!
| Ïðàâà íà ÏÎ ïðèíàäëåæàò Invision Power Services
| Ïðàâà íà ïåðåâîä IBResource (http://www.ibresource.ru)
+---------------------------------------------------------------------------
| INVISION POWER BOARD IS NOT FREE SOFTWARE!
| http://www.invisionboard.com/?license
+---------------------------------------------------------------------------
|
| > CORE Gateway Files
| > Script written by Matt Mecham
| > Date started: 31st March 2005 (14:45)
|
+--------------------------------------------------------------------------
*/
//---------------------------------------
// Security check
//---------------------------------------
if ( ! defined( 'GW_CORE_INIT' ) )
{
print "You cannot access this module in this manner";
exit();
}
class class_gateway
{
# Global
var $ipsclass;
var $hidden_fields = array();
var $debug;
var $debug_file;
var $payment_status;
var $days_to_seconds;
/*-------------------------------------------------------------------------*/
// CONSTRUCTOR
/*-------------------------------------------------------------------------*/
function class_gateway()
{
//--------------------------------------
// Debug?
//--------------------------------------
if ( defined( 'GW_DEBUG_MODE_ON' ) AND GW_DEBUG_MODE_ON )
{
$this->debug = TRUE;
$this->debug_file = ROOT_PATH.'cache/paysubs-'.time().'.php';
}
$this->payment_status = array(
'Completed' => 'paid',
'Failed' => 'failed',
'Denied' => 'failed',
'Refunded' => 'failed'
);
$this->day_to_seconds = array( 'd' => 86400,
'w' => 604800,
'm' => 2592000,
'y' => 31536000,
);
}
/*-------------------------------------------------------------------------*/
// Add hidden field
/*-------------------------------------------------------------------------*/
function core_add_hidden_field( $field, $value )
{
//--------------------------------------
// Check..
//--------------------------------------
if ( ! $field )
{
return '';
}
//--------------------------------------
// Add it
//--------------------------------------
$this->hidden_fields[] = "<input type='hidden' name='{$field}' value='{$value}' />";
}
/*-------------------------------------------------------------------------*/
// Compile hidden field
/*-------------------------------------------------------------------------*/
function core_compile_hidden_fields()
{
//--------------------------------------
// Check..
//--------------------------------------
return implode( "\n", $this->hidden_fields );
}
/*-------------------------------------------------------------------------*/
// Clear hidden field
/*-------------------------------------------------------------------------*/
function core_clear_hidden_fields()
{
//--------------------------------------
// Check..
//--------------------------------------
$this->hidden_fields = array();
}
/*-------------------------------------------------------------------------*/
// Post back to gateway: urls= array( curl_full, sock_url sock_path )
/*-------------------------------------------------------------------------*/
function core_post_back( $urls=array(), $post_back_str="", $port=80 )
{
//--------------------------------------
// INIT
//--------------------------------------
$curl_used = 0;
$result = "";
//--------------------------------------
// Got a post back string?
//--------------------------------------
if ( ! $post_back_str )
{
foreach ($_POST as $key => $val)
{
$post_back[] = $key . '=' . urlencode ($val);
}
$post_back_str = implode('&', $post_back);
}
//--------------------------------------
// Attempt CURL
//--------------------------------------
if ( function_exists("curl_init") )
{
if ( $sock = curl_init() )
{
curl_setopt( $sock, CURLOPT_URL , $urls['curl_full'] );
curl_setopt( $sock, CURLOPT_TIMEOUT , 15 );
curl_setopt( $sock, CURLOPT_POST , TRUE );
curl_setopt( $sock, CURLOPT_POSTFIELDS , $post_back_str );
curl_setopt( $sock, CURLOPT_POSTFIELDSIZE , 0);
curl_setopt( $sock, CURLOPT_RETURNTRANSFER , TRUE );
$result = curl_exec($sock);
curl_close($sock);
if ($result !== FALSE)
{
$curl_used = 1;
}
}
}
//--------------------------------------
// Not got a result?
//--------------------------------------
if ( ! $curl_used )
{
$header = "POST {$urls['sock_path']} HTTP/1.0\r\n";
$header .= "Host: {$urls['sock_url']}\r\n";
$header .= "Content-Type: application/x-www-form-urlencoded\r\n";
$header .= "Content-Length: " . strlen($post_back_str) . "\r\n\r\n";
socket_set_timeout($fp, 30);
if ( $fp = fsockopen( $urls['sock_url'], $port, $errno, $errstr, 30 ) )
{
fwrite($fp, $header . $post_back_str);
while ( ! feof($fp) )
{
$result .= fgets($fp, 1024);
}
fclose($fp);
}
}
//--------------------------------------
// Return...
//--------------------------------------
return $result;
}
/*-------------------------------------------------------------------------*/
// Core: print status message
/*-------------------------------------------------------------------------*/
function core_print_status_message()
{
if ( strstr( php_sapi_name(), 'cgi' ) )
{
@header('Status: 200 OK');
}
else
{
@header('HTTP/1.1 200 OK');
}
}
/*-------------------------------------------------------------------------*/
// Append debug file
/*-------------------------------------------------------------------------*/
function _write_debug_message( $message )
{
//--------------------------------------
// Check
//--------------------------------------
if ( ! $this->debug OR ! $this->debug_file )
{
return;
}
//--------------------------------------
// INIT message
//--------------------------------------
$bars = '----------------------------------------------------------------------------';
$date_now = date( 'F j, Y, g:i a' );
$msg_to_write = $bars."\n"."Date: ".$date_now."\n"."Gateway: ".$this->i_am."\n".$bars."\n".$message;
if ( $FH = @fopen( $this->debug_file, 'a+' ) )
{
@fwrite( $FH, $msg_to_write, strlen( $msg_to_write ) );
@fclose( $FH );
}
}
}
?>
@@ -0,0 +1,306 @@
<?php
/*
+--------------------------------------------------------------------------
| Invision Power Board 2.1.7
| =============================================
| by Matthew Mecham
| (c) 2001 - 2005 Invision Power Services, Inc.
| http://www.invisionpower.com
| =============================================
| Web: http://www.invisionboard.com
| http://www.ibresource.ru/products/invisionpowerboard/
| Time: Tuesday 18th of July 2006 05:56:00 PM
| Release: 52f408a29988b02f45b5e6f4ba5af0ae
| Licence Info: http://www.invisionboard.com/?license
| http://www.ibresource.ru/license
+---------------------------------------------------------------------------
| INVISION POWER BOARD IS NOT FREE / OPEN SOURCE!
+---------------------------------------------------------------------------
| INVISION POWER BOARD ÍÅ ßÂËßÅÒÑß ÁÅÑÏËÀÒÍÛÌ ÏÐÎÃÐÀÌÌÍÛÌ ÎÁÅÑÏÅ×ÅÍÈÅÌ!
| Ïðàâà íà ÏÎ ïðèíàäëåæàò Invision Power Services
| Ïðàâà íà ïåðåâîä IBResource (http://www.ibresource.ru)
+---------------------------------------------------------------------------
|
| > Payment Gateway API: PAYPAL
| > Module written by Matt Mecham
| > Date started: 31st March 2005 (14:45)
|
|
+--------------------------------------------------------------------------
*/
if ( ! defined( 'GW_CORE_INIT' ) )
{
print "You cannot access this module in this manner";
exit();
}
//--------------------------------------------------------------------------
// DEFINITIONS EXPECTED AT THIS POINT
//--------------------------------------------------------------------------
// GW_URL_VALIDATE : The url for validating payment
// GW_URL_PAYDONE : The url that the gatways returns the viewer to after
// : payment processed successfully
// GW_URL_PAYCANCEL: The url that the gatways returns the viewer to after
// : payment processed unsuccessfully or when cancelled
//--------------------------------------------------------------------------
// ITEM ARRAY
//--------------------------------------------------------------------------
// 'currency_code' => Currency code,
// 'member_unique_id' => member's ID,
// 'member_name' => member's NAME,
// 'member_email' => member's EMAIL,
// 'package_cost' => Requested package cost
// 'package_id' => Requested package ID
// 'package_title' => Requested package title
// 'duration_int' => Requested package duration int (ie: 12)
// 'duration_unit' => Requested package duration unit (ie: m,d,y,w) [ month, day, year, week ]
// 'company_email' => Company's email address
// 'ttr_int' => Time to run (Time left on current package) integar (ie 3)
// 'ttr_unit' => Time to run (Time left on current package) unit (ie w)
// 'ttr_balance' => Time to run (Balance left on current package)
// 'ttr_package_id' => Current package id (used for upgrading)
// 'vendor_id' => The ID of the vendor (not used in all gateways)
// 'product_id' => The gateway ID of the product (not used in all gateways)
// 'extra_1' thru 5 => Gateway extras ( from DB / tied in method_vars )
//--------------------------------------------------------------------------
class class_gw_module EXTENDS class_gateway
{
# Global
var $ipsclass;
# Identify
var $i_am = 'manual';
var $can_do_recurring_billing = 0;
var $can_do_upgrades = 1;
/*-------------------------------------------------------------------------*/
// INIT
/*-------------------------------------------------------------------------*/
function main_init()
{
}
/*-------------------------------------------------------------------------*/
// Generate hidden fields [ Recurring, normal screen ]
/*-------------------------------------------------------------------------*/
function gw_generate_hidden_fields_normal_recurring( $items=array() )
{
// Not available for this gateway
return $this->core_compile_hidden_fields();
}
/*-------------------------------------------------------------------------*/
// Generate hidden fields [ Recurring, upgrade screen ]
/*-------------------------------------------------------------------------*/
function gw_generate_hidden_fields_upgrade_recurring( $items=array() )
{
// Not available for this gateway
return $this->core_compile_hidden_fields();
}
/*-------------------------------------------------------------------------*/
// Generate hidden fields [ normal screen ]
/*-------------------------------------------------------------------------*/
function gw_generate_hidden_fields_normal( $items=array() )
{
return GW_MANUAL_ADDRESS;
}
/*-------------------------------------------------------------------------*/
// Generate hidden fields [ upgrade screen ]
/*-------------------------------------------------------------------------*/
function gw_generate_hidden_fields_upgrade( $items=array() )
{
return GW_MANUAL_ADDRESS;
}
/*-------------------------------------------------------------------------*/
// Generate Purchase button
/*-------------------------------------------------------------------------*/
function gw_generate_purchase_button()
{
return '<input type="button" value="&gt; &gt;" onclick="pop_ticket()" />';
}
/*-------------------------------------------------------------------------*/
// Generate Form action [normal]
/*-------------------------------------------------------------------------*/
function gw_generate_normal_form_action()
{
return "";
}
/*-------------------------------------------------------------------------*/
// Generate Form action [upgrade]
/*-------------------------------------------------------------------------*/
function gw_generate_upgrade_form_action()
{
return $this->gw_generate_normal_form_action();
}
/*-------------------------------------------------------------------------*/
// Generate Form action [normal, recurring]
/*-------------------------------------------------------------------------*/
function gw_generate_normal_recurring_form_action()
{
return $this->gw_generate_normal_form_action();
}
/*-------------------------------------------------------------------------*/
// Generate Form action [upgrade, recurring]
/*-------------------------------------------------------------------------*/
function gw_generate_upgrade_recurring_form_action()
{
return $this->gw_generate_normal_form_action();
}
/*-------------------------------------------------------------------------*/
// Validate Payment
// What we need to return:
// 'currency_code' => Currency code,
// 'payment_amount' => Amount paid,
// 'payment_status' => REFUND, ONEOFF, RECURRING
// 'member_unique_id' => member's ID,
// 'purchase_package_id'=> Purchased package ID
// 'current_package_id' => Current package ID (used for upgrading)
// 'verified' => TRUE , FALSE (Gateway verifies info as correct)
// 'subscription_id' => (Used for recurring payments)
// 'transaction_id' => Gateway transaction ID
/*-------------------------------------------------------------------------*/
function gw_validate_payment( $extra=array() )
{
$return['payment_status'] = 'ONEOFF';
//--------------------------------------
// Pass back to handler
//--------------------------------------
return $return;
}
/*-------------------------------------------------------------------------*/
// Process recurring payment check
// Return: array( 'amount_paid', 'state' [ PAID, DEAD, FAILED, PENDING ]
/*-------------------------------------------------------------------------*/
function gw_do_normal_payment_check( $balance_to_pay=0, $total_package_cost=0, $upgrade=0 )
{
$this->gateway->error = "";
//--------------------------------------
// INIT
//--------------------------------------
$return = array();
//--------------------------------------
// Completed
//--------------------------------------
if ( $upgrade )
{
//--------------------------------------
// Completed
//--------------------------------------
$return['amount_paid'] = $balance_to_pay;
$return['state'] = 'PENDING';
}
else
{
//--------------------------------------
// Completed
//--------------------------------------
$return['amount_paid'] = $total_package_cost;
$return['state'] = 'PENDING';
}
return $return;
}
/*-------------------------------------------------------------------------*/
// Process recurring payment check
// Return: array( 'amount_paid', 'state' [ PAID, DEAD, FAILED, PENDING ]
/*-------------------------------------------------------------------------*/
function gw_do_recurring_payment_check( $balance_to_pay=0, $total_package_cost=0 )
{
$this->gateway->error = "";
//--------------------------------------
// INIT
//--------------------------------------
$return = array();
return $return;
}
//---------------------------------------
// Return ACP Package Variables
//
// Returns names for the package custom
// fields, etc
//---------------------------------------
function acp_return_package_variables()
{
$return = array(
'subextra_custom_1' => array( 'used' => 0, 'varname' => '' ),
'subextra_custom_2' => array( 'used' => 0, 'varname' => '' ),
'subextra_custom_3' => array( 'used' => 0, 'varname' => '' ),
'subextra_custom_4' => array( 'used' => 0, 'varname' => '' ),
'subextra_custom_5' => array( 'used' => 0, 'varname' => '' ),
);
return $return;
}
//---------------------------------------
// Return ACP Method Variables
//
// Returns names for the package custom
// fields, etc
//---------------------------------------
function acp_return_method_variables()
{
$return = array(
'submethod_custom_1' => array( 'used' => 1, 'varname' => 'payname' , 'formname' => 'Name to address payment to' ),
'submethod_custom_2' => array( 'used' => 1, 'varname' => 'address1', 'formname' => 'Payment Address (1)' ),
'submethod_custom_3' => array( 'used' => 1, 'varname' => 'address2', 'formname' => 'Payment Address (2)' ),
'submethod_custom_4' => array( 'used' => 1, 'varname' => 'address3', 'formname' => 'Payment Address (3)' ),
'submethod_custom_5' => array( 'used' => 1, 'varname' => 'address4', 'formname' => 'Payment Address (4)' ),
);
return $return;
}
}
?>
@@ -0,0 +1,394 @@
<?php
/*
+--------------------------------------------------------------------------
| Invision Power Board 2.1.7
| =============================================
| by Matthew Mecham
| (c) 2001 - 2005 Invision Power Services, Inc.
| http://www.invisionpower.com
| =============================================
| Web: http://www.invisionboard.com
| http://www.ibresource.ru/products/invisionpowerboard/
| Time: Tuesday 18th of July 2006 05:56:00 PM
| Release: 52f408a29988b02f45b5e6f4ba5af0ae
| Licence Info: http://www.invisionboard.com/?license
| http://www.ibresource.ru/license
+---------------------------------------------------------------------------
| INVISION POWER BOARD IS NOT FREE / OPEN SOURCE!
+---------------------------------------------------------------------------
| INVISION POWER BOARD ÍÅ ßÂËßÅÒÑß ÁÅÑÏËÀÒÍÛÌ ÏÐÎÃÐÀÌÌÍÛÌ ÎÁÅÑÏÅ×ÅÍÈÅÌ!
| Ïðàâà íà ÏÎ ïðèíàäëåæàò Invision Power Services
| Ïðàâà íà ïåðåâîä IBResource (http://www.ibresource.ru)
+---------------------------------------------------------------------------
|
| > Payment Gateway API: PAYPAL
| > Module written by Matt Mecham
| > Date started: 31st March 2005 (14:45)
|
|
+--------------------------------------------------------------------------
*/
if ( ! defined( 'GW_CORE_INIT' ) )
{
print "You cannot access this module in this manner";
exit();
}
//--------------------------------------------------------------------------
// DEFINITIONS EXPECTED AT THIS POINT
//--------------------------------------------------------------------------
// GW_URL_VALIDATE : The url for validating payment
// GW_URL_PAYDONE : The url that the gatways returns the viewer to after
// : payment processed successfully
// GW_URL_PAYCANCEL: The url that the gatways returns the viewer to after
// : payment processed unsuccessfully or when cancelled
//--------------------------------------------------------------------------
// ITEM ARRAY
//--------------------------------------------------------------------------
// 'currency_code' => Currency code,
// 'member_unique_id' => member's ID,
// 'member_name' => member's NAME,
// 'member_email' => member's EMAIL,
// 'package_cost' => Requested package cost
// 'package_id' => Requested package ID
// 'package_title' => Requested package title
// 'duration_int' => Requested package duration int (ie: 12)
// 'duration_unit' => Requested package duration unit (ie: m,d,y,w) [ month, day, year, week ]
// 'company_email' => Company's email address
// 'ttr_int' => Time to run (Time left on current package) integar (ie 3)
// 'ttr_unit' => Time to run (Time left on current package) unit (ie w)
// 'ttr_balance' => Time to run (Balance left on current package)
// 'ttr_package_id' => Current package id (used for upgrading)
//--------------------------------------------------------------------------
class class_gw_module EXTENDS class_gateway
{
# Global
var $ipsclass;
# Identify
var $i_am = 'nochex';
var $can_do_recurring_billing = 0;
var $can_do_upgrades = 1;
/*-------------------------------------------------------------------------*/
// INIT
/*-------------------------------------------------------------------------*/
function main_init()
{
}
/*-------------------------------------------------------------------------*/
// Generate hidden fields [ Recurring, normal screen ]
/*-------------------------------------------------------------------------*/
function gw_generate_hidden_fields_normal_recurring( $items=array() )
{
// Not available for this gateway
return $this->core_compile_hidden_fields();
}
/*-------------------------------------------------------------------------*/
// Generate hidden fields [ Recurring, upgrade screen ]
/*-------------------------------------------------------------------------*/
function gw_generate_hidden_fields_upgrade_recurring( $items=array() )
{
// Not available for this gateway
return $this->core_compile_hidden_fields();
}
/*-------------------------------------------------------------------------*/
// Generate hidden fields [ normal screen ]
/*-------------------------------------------------------------------------*/
function gw_generate_hidden_fields_normal( $items=array() )
{
$this->core_add_hidden_field( "ordernumber" , $items['package_id'].'x'.$items['member_unique_id'].'x0' );
$this->core_add_hidden_field( "amount" , $items['package_cost'] );
$this->core_add_hidden_field( "desc" , $items['package_title'] );
$this->core_add_hidden_field( "email" , $items['company_email'] );
$this->core_add_hidden_field( "From_email" , $items['member_email'] );
$this->core_add_hidden_field( "status" , 'live' );
$this->core_add_hidden_field( "responderurl" , GW_URL_VALIDATE );
$this->core_add_hidden_field( "returnurl" , GW_URL_PAYDONE );
return $this->core_compile_hidden_fields();
}
/*-------------------------------------------------------------------------*/
// Generate hidden fields [ upgrade screen ]
/*-------------------------------------------------------------------------*/
function gw_generate_hidden_fields_upgrade( $items=array() )
{
$this->core_add_hidden_field( "ordernumber" , $items['package_id'].'x'.$items['member_unique_id'].'x'.$items['ttr_package_id'] );
$this->core_add_hidden_field( "amount" , $items['package_cost'] );
$this->core_add_hidden_field( "email" , $items['company_email'] );
$this->core_add_hidden_field( "From_email" , $items['member_email'] );
$this->core_add_hidden_field( "status" , 'live' );
$this->core_add_hidden_field( "responderurl" , GW_URL_VALIDATE );
$this->core_add_hidden_field( "returnurl" , GW_URL_PAYDONE );
return $this->core_compile_hidden_fields();
}
/*-------------------------------------------------------------------------*/
// Generate Purchase button
/*-------------------------------------------------------------------------*/
function gw_generate_purchase_button()
{
return '<input type="image" src="http://www.nochex.com/web/images/cardsboth2.gif" name="submit" alt="'.$this->ipsclass->lang['paywith_nochex'].'" />';
}
/*-------------------------------------------------------------------------*/
// Generate Form action [normal]
/*-------------------------------------------------------------------------*/
function gw_generate_normal_form_action()
{
// Test
//return 'https://www.nochex.com/nochex.dll/apc/testapc';
return "https://www.nochex.com/nochex.dll/checkout";
}
/*-------------------------------------------------------------------------*/
// Generate Form action [upgrade]
/*-------------------------------------------------------------------------*/
function gw_generate_upgrade_form_action()
{
return $this->gw_generate_normal_form_action();
}
/*-------------------------------------------------------------------------*/
// Generate Form action [normal, recurring]
/*-------------------------------------------------------------------------*/
function gw_generate_normal_recurring_form_action()
{
return $this->gw_generate_normal_form_action();
}
/*-------------------------------------------------------------------------*/
// Generate Form action [upgrade, recurring]
/*-------------------------------------------------------------------------*/
function gw_generate_upgrade_recurring_form_action()
{
return $this->gw_generate_normal_form_action();
}
/*-------------------------------------------------------------------------*/
// Validate Payment
// What we need to return:
// 'currency_code' => Currency code,
// 'payment_amount' => Amount paid,
// 'payment_status' => REFUND, ONEOFF, RECURRING
// 'member_unique_id' => member's ID,
// 'purchase_package_id'=> Purchased package ID
// 'current_package_id' => Current package ID (used for upgrading)
// 'verified' => TRUE , FALSE (Gateway verifies info as correct)
// 'subscription_id' => (Used for recurring payments)
// 'transaction_id' => Gateway transaction ID
/*-------------------------------------------------------------------------*/
function gw_validate_payment()
{
//--------------------------------------
// INIT
//--------------------------------------
//--------------------------------------
// Debug...
//--------------------------------------
if ( GW_TEST_MODE_ON )
{
if ( ! is_array( $_POST ) or ! count( $_POST ) )
{
$_POST = $_GET;
}
}
//--------------------------------------
// URLS
//--------------------------------------
$urls = array( 'curl_full' => 'https://www.nochex.com/nochex.dll/apc/apc',
'sock_url' => 'ssl://www.nochex.com',
'sock_path' => '/nochex.dll/apc/apc' );
//--------------------------------------
// Throw back to PayPal to verify
//--------------------------------------
$state = $this->core_post_back( $urls, "", 443 );
//--------------------------------------
// Check...
//--------------------------------------
$state = ( strcmp($state, 'AUTHORISED') == 0 ) ? 'AUTHORISED' : 'INVALID';
if ( $state != 'AUTHORISED' AND ! GW_TEST_MODE_ON )
{
$this->error = 'not_valid';
return array( 'verified' => FALSE );
}
//--------------------------------------
// Populate return array
//--------------------------------------
list( $purchase_package_id, $member_id, $cur_sub_id, ) = explode( 'x', trim($_POST['order_id']) );
$return = array( 'currency_code' => 'GBP',
'payment_amount' => $_POST['amount'],
'member_unique_id' => intval($member_id),
'purchase_package_id'=> intval($purchase_package_id),
'current_package_id' => intval($cur_sub_id),
'verified' => TRUE,
'subscription_id' => '0-'.intval($member_id),
'transaction_id' => $_POST['transaction_id'] );
//--------------------------------------
// Sort out payment status
//--------------------------------------
$return['payment_status'] = 'ONEOFF';
//--------------------------------------
// Pass back to handler
//--------------------------------------
return $return;
}
/*-------------------------------------------------------------------------*/
// Process recurring payment check
// Return: array( 'amount_paid', 'state' [ PAID, DEAD, FAILED, PENDING ]
/*-------------------------------------------------------------------------*/
function gw_do_normal_payment_check( $balance_to_pay=0, $total_package_cost=0, $upgrade=0 )
{
$this->gateway->error = "";
//--------------------------------------
// INIT
//--------------------------------------
$return = array();
//--------------------------------------
// Completed
//--------------------------------------
if ( $upgrade AND ( $_POST['amount'] == $balance_to_pay ) )
{
//--------------------------------------
// Paid correct amount
//--------------------------------------
$return['amount_paid'] = $_POST['amount'];
$return['state'] = 'PAID';
}
else if ( ! $upgrade AND ( $_POST['amount'] == $total_package_cost ) )
{
//--------------------------------------
// Paid correct amount
//--------------------------------------
$return['amount_paid'] = $_POST['amount'];
$return['state'] = 'PAID';
}
else
{
//-----------------------
// End of subscription
//-----------------------
$return['state'] = 'FAILED';
}
return $return;
}
/*-------------------------------------------------------------------------*/
// Process recurring payment check
// Return: array( 'amount_paid', 'state' [ PAID, DEAD, FAILED, PENDING ]
/*-------------------------------------------------------------------------*/
function gw_do_recurring_payment_check( $balance_to_pay=0, $total_package_cost=0 )
{
$this->gateway->error = "";
//--------------------------------------
// INIT
//--------------------------------------
$return = array();
return $return;
}
//---------------------------------------
// Return ACP Package Variables
//
// Returns names for the package custom
// fields, etc
//---------------------------------------
function acp_return_package_variables()
{
$return = array(
'subextra_custom_1' => array( 'used' => 0, 'varname' => '' ),
'subextra_custom_2' => array( 'used' => 0, 'varname' => '' ),
'subextra_custom_3' => array( 'used' => 0, 'varname' => '' ),
'subextra_custom_4' => array( 'used' => 0, 'varname' => '' ),
'subextra_custom_5' => array( 'used' => 0, 'varname' => '' ),
);
return $return;
}
//---------------------------------------
// Return ACP Method Variables
//
// Returns names for the package custom
// fields, etc
//---------------------------------------
function acp_return_method_variables()
{
$return = array(
'submethod_custom_1' => array( 'used' => 0, 'varname' => '' ),
'submethod_custom_2' => array( 'used' => 0, 'varname' => '' ),
'submethod_custom_3' => array( 'used' => 0, 'varname' => '' ),
'submethod_custom_4' => array( 'used' => 0, 'varname' => '' ),
'submethod_custom_5' => array( 'used' => 0, 'varname' => '' ),
);
return $return;
}
}
?>
@@ -0,0 +1,588 @@
<?php
/*
+--------------------------------------------------------------------------
| Invision Power Board 2.1.7
| =============================================
| by Matthew Mecham
| (c) 2001 - 2005 Invision Power Services, Inc.
| http://www.invisionpower.com
| =============================================
| Web: http://www.invisionboard.com
| http://www.ibresource.ru/products/invisionpowerboard/
| Time: Tuesday 18th of July 2006 05:56:00 PM
| Release: 52f408a29988b02f45b5e6f4ba5af0ae
| Licence Info: http://www.invisionboard.com/?license
| http://www.ibresource.ru/license
+---------------------------------------------------------------------------
| INVISION POWER BOARD IS NOT FREE / OPEN SOURCE!
+---------------------------------------------------------------------------
| INVISION POWER BOARD ÍÅ ßÂËßÅÒÑß ÁÅÑÏËÀÒÍÛÌ ÏÐÎÃÐÀÌÌÍÛÌ ÎÁÅÑÏÅ×ÅÍÈÅÌ!
| Ïðàâà íà ÏÎ ïðèíàäëåæàò Invision Power Services
| Ïðàâà íà ïåðåâîä IBResource (http://www.ibresource.ru)
+---------------------------------------------------------------------------
|
| > Payment Gateway API: PAYPAL
| > Module written by Matt Mecham
| > Date started: 31st March 2005 (14:45)
|
|
+--------------------------------------------------------------------------
*/
if ( ! defined( 'GW_CORE_INIT' ) )
{
print "You cannot access this module in this manner";
exit();
}
//--------------------------------------------------------------------------
// DEFINITIONS EXPECTED AT THIS POINT
//--------------------------------------------------------------------------
// GW_URL_VALIDATE : The url for validating payment
// GW_URL_PAYDONE : The url that the gatways returns the viewer to after
// : payment processed successfully
// GW_URL_PAYCANCEL: The url that the gatways returns the viewer to after
// : payment processed unsuccessfully or when cancelled
//--------------------------------------------------------------------------
// ITEM ARRAY
//--------------------------------------------------------------------------
// 'currency_code' => Currency code,
// 'member_unique_id' => member's ID,
// 'member_name' => member's NAME,
// 'member_email' => member's EMAIL,
// 'package_cost' => Requested package cost
// 'package_id' => Requested package ID
// 'package_title' => Requested package title
// 'duration_int' => Requested package duration int (ie: 12)
// 'duration_unit' => Requested package duration unit (ie: m,d,y,w) [ month, day, year, week ]
// 'company_email' => Company's email address
// 'ttr_int' => Time to run (Time left on current package) integar (ie 3)
// 'ttr_unit' => Time to run (Time left on current package) unit (ie w)
// 'ttr_balance' => Time to run (Balance left on current package)
// 'ttr_package_id' => Current package id (used for upgrading)
// 'vendor_id' => The ID of the vendor (not used in all gateways)
// 'product_id' => The gateway ID of the product (not used in all gateways)
// 'extra_1' thru 5 => Gateway extras ( from DB / tied in method_vars )
//--------------------------------------------------------------------------
class class_gw_module EXTENDS class_gateway
{
# Global
var $ipsclass;
# Identify
var $i_am = 'PayPal';
var $can_do_recurring_billing = 1;
var $can_do_upgrades = 1;
/*-------------------------------------------------------------------------*/
// INIT
/*-------------------------------------------------------------------------*/
function main_init()
{
}
/*-------------------------------------------------------------------------*/
// Generate hidden fields [ Recurring, normal screen ]
/*-------------------------------------------------------------------------*/
function gw_generate_hidden_fields_normal_recurring( $items=array() )
{
$this->core_add_hidden_field( "cmd" , "_xclick-subscriptions" );
$this->core_add_hidden_field( "currency_code", $items['currency_code'] );
$this->core_add_hidden_field( "custom" , $items['member_unique_id'] );
$this->core_add_hidden_field( "item_number" , $items['package_id'] );
$this->core_add_hidden_field( "t3" , strtoupper($items['duration_unit'] ));
$this->core_add_hidden_field( "p3" , $items['duration_int'] );
$this->core_add_hidden_field( "a3" , $items['package_cost'] );
$this->core_add_hidden_field( "business" , $items['company_email'] );
$this->core_add_hidden_field( "item_name" , $items['package_title'] );
$this->core_add_hidden_field( "no_shipping" , 1 );
$this->core_add_hidden_field( "src" , 1 );
$this->core_add_hidden_field( "rm" , 2 );
$this->core_add_hidden_field( "no_note" , 1 );
$this->core_add_hidden_field( "notify_url" , GW_URL_VALIDATE );
$this->core_add_hidden_field( "return" , GW_URL_PAYDONE );
$this->core_add_hidden_field( "cancel_return", GW_URL_PAYCANCEL );
return $this->core_compile_hidden_fields();
}
/*-------------------------------------------------------------------------*/
// Generate hidden fields [ Recurring, upgrade screen ]
/*-------------------------------------------------------------------------*/
function gw_generate_hidden_fields_upgrade_recurring( $items=array() )
{
$this->core_add_hidden_field( "cmd" , "_xclick-subscriptions" );
$this->core_add_hidden_field( "currency_code", $items['currency_code'] );
$this->core_add_hidden_field( "custom" , $items['member_unique_id'] );
$this->core_add_hidden_field( "item_number" , $items['package_id'] );
$this->core_add_hidden_field( "t3" , strtoupper($items['duration_unit']) );
$this->core_add_hidden_field( "p3" , $items['duration_int'] );
$this->core_add_hidden_field( "a3" , $items['package_cost'] );
$this->core_add_hidden_field( "a1" , $items['ttr_balance'] );
$this->core_add_hidden_field( "p1" , $items['ttr_int'] );
$this->core_add_hidden_field( "t1" , strtoupper($items['ttr_unit'] ));
$this->core_add_hidden_field( "memo" , "upgrade" );
$this->core_add_hidden_field( "invoice" , $items['ttr_package_id'].'x'.$items['package_id'].'x'.$items['member_unique_id'] );
$this->core_add_hidden_field( "business" , $items['company_email'] );
$this->core_add_hidden_field( "item_name" , $items['package_title'] );
$this->core_add_hidden_field( "no_shipping" , 1 );
$this->core_add_hidden_field( "src" , 1 );
$this->core_add_hidden_field( "no_note" , 1 );
$this->core_add_hidden_field( "rm" , 2 );
$this->core_add_hidden_field( "notify_url" , GW_URL_VALIDATE );
$this->core_add_hidden_field( "return" , GW_URL_PAYDONE );
$this->core_add_hidden_field( "cancel_return", GW_URL_PAYCANCEL );
return $this->core_compile_hidden_fields();
}
/*-------------------------------------------------------------------------*/
// Generate hidden fields [ normal screen ]
/*-------------------------------------------------------------------------*/
function gw_generate_hidden_fields_normal( $items=array() )
{
$this->core_add_hidden_field( "cmd" , "_xclick" );
$this->core_add_hidden_field( "currency_code", $items['currency_code'] );
$this->core_add_hidden_field( "custom" , $items['member_unique_id'] );
$this->core_add_hidden_field( "item_number" , $items['package_id'] );
$this->core_add_hidden_field( "item_name" , $items['package_title'] );
$this->core_add_hidden_field( "amount" , $items['package_cost'] );
$this->core_add_hidden_field( "business" , $items['company_email'] );
$this->core_add_hidden_field( "no_shipping" , 1 );
$this->core_add_hidden_field( "src" , 1 );
$this->core_add_hidden_field( "notify_url" , GW_URL_VALIDATE );
$this->core_add_hidden_field( "return" , GW_URL_PAYDONE );
$this->core_add_hidden_field( "cancel_return", GW_URL_PAYCANCEL );
return $this->core_compile_hidden_fields();
}
/*-------------------------------------------------------------------------*/
// Generate hidden fields [ upgrade screen ]
/*-------------------------------------------------------------------------*/
function gw_generate_hidden_fields_upgrade( $items=array() )
{
$this->core_add_hidden_field( "cmd" , "_xclick" );
$this->core_add_hidden_field( "currency_code", $items['currency_code'] );
$this->core_add_hidden_field( "custom" , $items['member_unique_id'] );
$this->core_add_hidden_field( "item_number" , $items['package_id'] );
$this->core_add_hidden_field( "business" , $items['company_email'] );
$this->core_add_hidden_field( "item_name" , $items['package_title'] );
$this->core_add_hidden_field( "invoice" , $items['ttr_package_id'].'x'.$items['package_id'].'x'.$items['member_unique_id'] );
$this->core_add_hidden_field( "amount" , $items['ttr_balance'] );
$this->core_add_hidden_field( "no_shipping" , 1 );
$this->core_add_hidden_field( "src" , 1 );
$this->core_add_hidden_field( "notify_url" , GW_URL_VALIDATE );
$this->core_add_hidden_field( "return" , GW_URL_PAYDONE );
$this->core_add_hidden_field( "cancel_return", GW_URL_PAYCANCEL );
return $this->core_compile_hidden_fields();
}
/*-------------------------------------------------------------------------*/
// Generate Purchase button
/*-------------------------------------------------------------------------*/
function gw_generate_purchase_button()
{
return '<input type="image" src="https://www.paypal.com/images/x-click-but6.gif" name="submit" alt="'.$this->ipsclass->lang['paywith_paypal'].'" />';
}
/*-------------------------------------------------------------------------*/
// Generate Form action [normal]
/*-------------------------------------------------------------------------*/
function gw_generate_normal_form_action()
{
return "https://www.paypal.com/cgi-bin/webscr";
}
/*-------------------------------------------------------------------------*/
// Generate Form action [upgrade]
/*-------------------------------------------------------------------------*/
function gw_generate_upgrade_form_action()
{
return $this->gw_generate_normal_form_action();
}
/*-------------------------------------------------------------------------*/
// Generate Form action [normal, recurring]
/*-------------------------------------------------------------------------*/
function gw_generate_normal_recurring_form_action()
{
return $this->gw_generate_normal_form_action();
}
/*-------------------------------------------------------------------------*/
// Generate Form action [upgrade, recurring]
/*-------------------------------------------------------------------------*/
function gw_generate_upgrade_recurring_form_action()
{
return $this->gw_generate_normal_form_action();
}
/*-------------------------------------------------------------------------*/
// Validate Payment
// What we need to return:
// 'currency_code' => Currency code,
// 'payment_amount' => Amount paid,
// 'payment_status' => REFUND, ONEOFF, RECURRING
// 'member_unique_id' => member's ID,
// 'purchase_package_id'=> Purchased package ID
// 'current_package_id' => Current package ID (used for upgrading)
// 'verified' => TRUE , FALSE (Gateway verifies info as correct)
// 'subscription_id' => (Used for recurring payments)
// 'transaction_id' => Gateway transaction ID
/*-------------------------------------------------------------------------*/
function gw_validate_payment()
{
//--------------------------------------
// INIT
//--------------------------------------
//--------------------------------------
// Debug...
//--------------------------------------
if ( GW_TEST_MODE_ON )
{
if ( ! is_array( $_POST ) or ! count( $_POST ) )
{
$_POST = $_GET;
}
}
$post_back[] = 'cmd=_notify-validate';
foreach ($_POST as $key => $val)
{
$post_back[] = $key . '=' . urlencode ($val);
}
$post_back_str = implode('&', $post_back);
//--------------------------------------
// URLS
//--------------------------------------
$urls = array( 'curl_full' => 'http://www.paypal.com/cgi-bin/webscr',
'sock_url' => 'www.paypal.com',
'sock_path' => '/cgi-bin/webscr' );
//--------------------------------------
// Throw back to PayPal to verify
//--------------------------------------
$state = $this->core_post_back( $urls, $post_back_str, 80 );
//--------------------------------------
// Check...
//--------------------------------------
$state = ( stristr($state, 'VERIFIED') ) ? 'VERIFIED' : 'INVALID';
if ( $state != 'VERIFIED' )
{
if ( ! GW_TEST_MODE_ON )
{
$this->error = 'not_valid';
return array( 'verified' => FALSE );
}
}
//--------------------------------------
// Fix ticket: #56264 Second POST - we can ignore
//--------------------------------------
if ( ! $_POST['txn_id'] and $_POST['txn_type'] == 'subscr_signup' )
{
exit();
}
//--------------------------------------
// Populate return array
//--------------------------------------
list( $cur_sub_id, ) = explode( 'x', trim($_POST['invoice']) );
$return = array( 'currency_code' => $_POST['mc_currency'],
'payment_amount' => $_POST['mc_gross'],
'member_unique_id' => intval($_POST['custom']),
'purchase_package_id'=> intval($_POST['item_number']),
'current_package_id' => intval($cur_sub_id),
'verified' => TRUE,
'subscription_id' => $_POST['subscr_id'],
'transaction_id' => $_POST['txn_id'] );
//--------------------------------------
// Sort out payment status
//--------------------------------------
if ( $_POST['payment_status'] == 'Refunded' OR $_POST['txn_type'] == 'subscr_cancel' )
{
$return['payment_status'] = 'REFUND';
}
else if ( strstr( $_POST['txn_type'], 'subscr_' ) )
{
$return['payment_status'] = 'RECURRING';
}
else if ( $_POST['txn_type'] == 'web_accept' )
{
$return['payment_status'] = 'ONEOFF';
}
else
{
$return['payment_status'] = '';
}
//--------------------------------------
// Pass back to handler
//--------------------------------------
return $return;
}
/*-------------------------------------------------------------------------*/
// Process recurring payment check
// Return: array( 'amount_paid', 'state' [ PAID, DEAD, FAILED, PENDING ]
/*-------------------------------------------------------------------------*/
function gw_do_normal_payment_check( $balance_to_pay=0, $total_package_cost=0, $upgrade=0 )
{
$this->gateway->error = "";
//--------------------------------------
// INIT
//--------------------------------------
$return = array();
//--------------------------------------
// Completed
//--------------------------------------
if ( $_POST['payment_status'] == 'Completed' )
{
//--------------------------------------
// Check amount..
//--------------------------------------
if ( $_POST['mc_gross'] == $total_package_cost )
{
//--------------------------------------
// Paid correct amount
//--------------------------------------
$return['amount_paid'] = $_POST['mc_gross'];
$return['state'] = 'PAID';
}
else
{
if ( $upgrade )
{
//--------------------------------------
// Upgrading....
//--------------------------------------
if ( $_POST['mc_gross'] == $balance_to_pay )
{
$return['amount_paid'] = $_POST['mc_gross'];
$return['state'] = 'PAID';
}
}
else
{
//--------------------------------------
// Incorrect amount
//--------------------------------------
$this->error = "Wrong payment amount. Looking for {$total_package_cost}, got {$_POST['mc_gross']}";
return;
}
}
}
else if ( $_POST['payment_status'] == 'Pending' )
{
//-----------------------
// Failed...
//-----------------------
$return['state'] = 'PENDING';
}
else
{
//-----------------------
// End of subscription
//-----------------------
$return['state'] = 'FAILED';
}
return $return;
}
/*-------------------------------------------------------------------------*/
// Process recurring payment check
// Return: array( 'amount_paid', 'state' [ PAID, DEAD, FAILED, PENDING ]
/*-------------------------------------------------------------------------*/
function gw_do_recurring_payment_check( $balance_to_pay=0, $total_package_cost=0 )
{
$this->gateway->error = "";
//--------------------------------------
// INIT
//--------------------------------------
$return = array();
//--------------------------------------
// Sign up
//--------------------------------------
if ( $_POST['txn_type'] == 'subscr_signup' OR $_POST['txn_type'] == 'subscr_payment' )
{
//--------------------------------------
// Check amount..
//--------------------------------------
if ( $_POST['amount1'] )
{
//--------------------------------------
// First period, get amount.
//--------------------------------------
if ( $balance_to_pay != $_POST['amount1'] )
{
$this->error = "Wrong upgrade subs amount. Looking for $balance_to_pay, got {$_POST['amount1']}";
return;
}
$return['amount_paid'] = $_POST['amount1'];
$return['state'] = 'PAID';
}
else if ( $_POST['amount3'] )
{
//--------------------------------------
// Real subscription
//--------------------------------------
if ( $total_package_cost != $_POST['amount3'] )
{
$this->error = "Wrong upgrade subs amount. Looking for {$total_package_cost}, got {$_POST['amount3']}";
return;
}
$return['amount_paid'] = $total_package_cost;
$return['state'] = 'PAID';
}
else
{
//--------------------------------------
// If all else fails..
//--------------------------------------
if ( $total_package_cost != $_POST['mc_gross'] AND $_POST['mc_gross'] != $balance_to_pay )
{
$this->error = "Wrong upgrade subs amount. Looking for {$total_package_cost}, got {$_POST['mc_gross']}";
return;
}
$return['amount_paid'] = $_POST['mc_gross'];
$return['state'] = 'PAID';
}
}
else if ( $_POST['txn_type'] == 'subscr_failed' )
{
//--------------------------------------
// Failed...
//--------------------------------------
$return['state'] = 'FAILED';
}
else if ( $_POST['txn_type'] == 'subscr_cancel' )
{
//--------------------------------------
// Dead...
//--------------------------------------
$return['state'] = 'DEAD';
}
else if ( $_POST['txn_type'] == 'subscr_eot' )
{
//--------------------------------------
// End of subscription
//--------------------------------------
$return['state'] = 'DEAD';
}
return $return;
}
//---------------------------------------
// Return ACP Package Variables
//
// Returns names for the package custom
// fields, etc
//---------------------------------------
function acp_return_package_variables()
{
$return = array(
'subextra_custom_1' => array( 'used' => 0, 'varname' => '' ),
'subextra_custom_2' => array( 'used' => 0, 'varname' => '' ),
'subextra_custom_3' => array( 'used' => 0, 'varname' => '' ),
'subextra_custom_4' => array( 'used' => 0, 'varname' => '' ),
'subextra_custom_5' => array( 'used' => 0, 'varname' => '' ),
);
return $return;
}
//---------------------------------------
// Return ACP Method Variables
//
// Returns names for the package custom
// fields, etc
//---------------------------------------
function acp_return_method_variables()
{
$return = array(
'submethod_custom_1' => array( 'used' => 0, 'varname' => '' ),
'submethod_custom_2' => array( 'used' => 0, 'varname' => '' ),
'submethod_custom_3' => array( 'used' => 0, 'varname' => '' ),
'submethod_custom_4' => array( 'used' => 0, 'varname' => '' ),
'submethod_custom_5' => array( 'used' => 0, 'varname' => '' ),
);
return $return;
}
}
?>
@@ -0,0 +1,479 @@
<?php
/*
+--------------------------------------------------------------------------
| Invision Power Board 2.1.7
| =============================================
| by Matthew Mecham
| (c) 2001 - 2005 Invision Power Services, Inc.
| http://www.invisionpower.com
| =============================================
| Web: http://www.invisionboard.com
| http://www.ibresource.ru/products/invisionpowerboard/
| Time: Tuesday 18th of July 2006 05:56:00 PM
| Release: 52f408a29988b02f45b5e6f4ba5af0ae
| Licence Info: http://www.invisionboard.com/?license
| http://www.ibresource.ru/license
+---------------------------------------------------------------------------
| INVISION POWER BOARD IS NOT FREE / OPEN SOURCE!
+---------------------------------------------------------------------------
| INVISION POWER BOARD ÍÅ ßÂËßÅÒÑß ÁÅÑÏËÀÒÍÛÌ ÏÐÎÃÐÀÌÌÍÛÌ ÎÁÅÑÏÅ×ÅÍÈÅÌ!
| Ïðàâà íà ÏÎ ïðèíàäëåæàò Invision Power Services
| Ïðàâà íà ïåðåâîä IBResource (http://www.ibresource.ru)
+---------------------------------------------------------------------------
|
| > Payment Gateway API: PAYPAL
| > Module written by Matt Mecham
| > Date started: 31st March 2005 (14:45)
|
|
+--------------------------------------------------------------------------
*/
if ( ! defined( 'GW_CORE_INIT' ) )
{
print "You cannot access this module in this manner";
exit();
}
//--------------------------------------------------------------------------
// DEFINITIONS EXPECTED AT THIS POINT
//--------------------------------------------------------------------------
// GW_URL_VALIDATE : The url for validating payment
// GW_URL_PAYDONE : The url that the gatways returns the viewer to after
// : payment processed successfully
// GW_URL_PAYCANCEL: The url that the gatways returns the viewer to after
// : payment processed unsuccessfully or when cancelled
//--------------------------------------------------------------------------
// ITEM ARRAY
//--------------------------------------------------------------------------
// 'currency_code' => Currency code,
// 'member_unique_id' => member's ID,
// 'member_name' => member's NAME,
// 'member_email' => member's EMAIL,
// 'package_cost' => Requested package cost
// 'package_id' => Requested package ID
// 'package_title' => Requested package title
// 'duration_int' => Requested package duration int (ie: 12)
// 'duration_unit' => Requested package duration unit (ie: m,d,y,w) [ month, day, year, week ]
// 'company_email' => Company's email address
// 'ttr_int' => Time to run (Time left on current package) integar (ie 3)
// 'ttr_unit' => Time to run (Time left on current package) unit (ie w)
// 'ttr_balance' => Time to run (Balance left on current package)
// 'ttr_package_id' => Current package id (used for upgrading)
// 'vendor_id' => The ID of the vendor (not used in all gateways)
// 'product_id' => The gateway ID of the product (not used in all gateways)
// 'extra_1' thru 5 => Gateway extras ( from DB / tied in method_vars )
//--------------------------------------------------------------------------
class class_gw_module EXTENDS class_gateway
{
# Global
var $ipsclass;
# Identify
var $i_am = 'protx';
var $can_do_recurring_billing = 0;
var $can_do_upgrades = 1;
/*-------------------------------------------------------------------------*/
// INIT
/*-------------------------------------------------------------------------*/
function main_init()
{
}
/*-------------------------------------------------------------------------*/
// Generate hidden fields [ Recurring, normal screen ]
/*-------------------------------------------------------------------------*/
function gw_generate_hidden_fields_normal_recurring( $items=array() )
{
// Not available for this gateway
return $this->core_compile_hidden_fields();
}
/*-------------------------------------------------------------------------*/
// Generate hidden fields [ Recurring, upgrade screen ]
/*-------------------------------------------------------------------------*/
function gw_generate_hidden_fields_upgrade_recurring( $items=array() )
{
// Not available for this gateway
return $this->core_compile_hidden_fields();
}
/*-------------------------------------------------------------------------*/
// Generate hidden fields [ normal screen ]
/*-------------------------------------------------------------------------*/
function gw_generate_hidden_fields_normal( $items=array() )
{
$username = $items['extra_1'];
$password = $items['extra_2'];
//---------------------------------------
// Generate crypt string
//---------------------------------------
$plain = "VendorTxCode=" . rand(0,1000)."x{$items['member_unique_id']}x{$items['package_id']}x0" . "&";
$plain .= "Amount=" . $items['package_cost'] . "&";
$plain .= "Currency=" . $items['currency_code'] . "&";
$plain .= "Description=" . $items['package_title'] ."&";
$plain .= "SuccessURL=" . GW_URL_VALIDATE . "&";
$plain .= "FailureURL=" . GW_URL_VALIDATE . "&";
$plain .= "CustomerName=&";
$plain .= "CustomerEmail=" . $items['member_email'] . "&";
$plain .= "VendorEMail=" . $items['company_email'] . "&";
$plain .= "DeliveryAddress=&";
$plain .= "DeliveryPostCode=&";
$plain .= "BillingAddress=&";
$plain .= "BillingPostCode=";
$crypt = base64_encode( $this->_simple_xor( $plain, $password ) );
$this->core_add_hidden_field( "Crypt" , $crypt );
$this->core_add_hidden_field( "Vendor" , $username );
$this->core_add_hidden_field( "TxType" , 'PAYMENT' );
$this->core_add_hidden_field( "VPSProtocol" , '2.21' );
return $this->core_compile_hidden_fields();
}
/*-------------------------------------------------------------------------*/
// Generate hidden fields [ upgrade screen ]
/*-------------------------------------------------------------------------*/
function gw_generate_hidden_fields_upgrade( $items=array() )
{
$username = $items['extra_1'];
$password = $items['extra_2'];
//---------------------------------------
// Generate crypt string
//---------------------------------------
$plain = "VendorTxCode=" . rand(0,1000)."x{$items['member_unique_id']}x{$items['package_id']}x{$items['ttr_package_id']}" . "&";
$plain .= "Amount=" . $items['ttr_balance'] . "&";
$plain .= "Currency=" . $items['currency_code'] . "&";
$plain .= "Description=" . $items['package_title'] ."&";
$plain .= "SuccessURL=" . GW_URL_VALIDATE . "&";
$plain .= "FailureURL=" . GW_URL_VALIDATE . "&";
$plain .= "CustomerName=&";
$plain .= "CustomerEmail=" . $items['member_email'] . "&";
$plain .= "VendorEMail=" . $items['company_email'] . "&";
$plain .= "DeliveryAddress=&";
$plain .= "DeliveryPostCode=&";
$plain .= "BillingAddress=&";
$plain .= "BillingPostCode=";
$crypt = base64_encode( $this->_simple_xor( $plain, $password ) );
$this->core_add_hidden_field( "Crypt" , $crypt );
$this->core_add_hidden_field( "Vendor" , $username );
$this->core_add_hidden_field( "TxType" , 'PAYMENT' );
$this->core_add_hidden_field( "VPSProtocol" , '2.21' );
return $this->core_compile_hidden_fields();
}
/*-------------------------------------------------------------------------*/
// Generate Purchase button
/*-------------------------------------------------------------------------*/
function gw_generate_purchase_button()
{
return '<input type="submit" value="'.$this->ipsclass->lang['paywith_protx'].'" />';
}
/*-------------------------------------------------------------------------*/
// Generate Form action [normal]
/*-------------------------------------------------------------------------*/
function gw_generate_normal_form_action()
{
# test
//return 'https://ukvpstest.protx.com/vps2form/submit.asp';
return "https://ukvps.protx.com/vps2form/submit.asp";
}
/*-------------------------------------------------------------------------*/
// Generate Form action [upgrade]
/*-------------------------------------------------------------------------*/
function gw_generate_upgrade_form_action()
{
return $this->gw_generate_normal_form_action();
}
/*-------------------------------------------------------------------------*/
// Generate Form action [normal, recurring]
/*-------------------------------------------------------------------------*/
function gw_generate_normal_recurring_form_action()
{
return $this->gw_generate_normal_form_action();
}
/*-------------------------------------------------------------------------*/
// Generate Form action [upgrade, recurring]
/*-------------------------------------------------------------------------*/
function gw_generate_upgrade_recurring_form_action()
{
return $this->gw_generate_normal_form_action();
}
/*-------------------------------------------------------------------------*/
// Validate Payment
// What we need to return:
// 'currency_code' => Currency code,
// 'payment_amount' => Amount paid,
// 'payment_status' => REFUND, ONEOFF, RECURRING
// 'member_unique_id' => member's ID,
// 'purchase_package_id'=> Purchased package ID
// 'current_package_id' => Current package ID (used for upgrading)
// 'verified' => TRUE , FALSE (Gateway verifies info as correct)
// 'subscription_id' => (Used for recurring payments)
// 'transaction_id' => Gateway transaction ID
/*-------------------------------------------------------------------------*/
function gw_validate_payment( $extra=array() )
{
//--------------------------------------
// INIT
//--------------------------------------
$username = $extra['extra_1'];
$password = $extra['extra_2'];
//--------------------------------------
// Debug...
//--------------------------------------
if ( GW_TEST_MODE_ON )
{
if ( ! is_array( $_POST ) or ! count( $_POST ) )
{
$_POST = $_GET;
}
}
//--------------------------------------
// Process GET data
//--------------------------------------
$values = $this->_get_token( $this->_simple_xor( base64_decode($_GET['crypt']), $password ) );
foreach( $values as $k => $v )
{
$_POST[ 'px_'.$k ] = $v;
}
//--------------------------------------
// Check...
//--------------------------------------
if ( $values['Status'] != 'OK' AND ! GW_TEST_MODE_ON )
{
$this->error = 'not_valid';
return array( 'verified' => FALSE );
}
//--------------------------------------
// Populate return array
//--------------------------------------
list( $tix, $member_id, $purchase_package_id, $cur_sub_id ) = explode( "x", $values['VendorTxCode'] );
$return = array( 'currency_code' => 'GBP',
'payment_amount' => sprintf( "%.2f", $values['Amount'] ),
'member_unique_id' => intval($member_id),
'purchase_package_id'=> intval($purchase_package_id),
'current_package_id' => intval($cur_sub_id),
'verified' => TRUE,
'subscription_id' => '0-'.intval($member_id),
'transaction_id' => $values['VPSTxID'] );
//--------------------------------------
// Sort out payment status
//--------------------------------------
$return['payment_status'] = 'ONEOFF';
//--------------------------------------
// Pass back to handler
//--------------------------------------
return $return;
}
/*-------------------------------------------------------------------------*/
// Process recurring payment check
// Return: array( 'amount_paid', 'state' [ PAID, DEAD, FAILED, PENDING ]
/*-------------------------------------------------------------------------*/
function gw_do_normal_payment_check( $balance_to_pay=0, $total_package_cost=0, $upgrade=0 )
{
$this->gateway->error = "";
//--------------------------------------
// INIT
//--------------------------------------
$return = array();
//--------------------------------------
// Completed
//--------------------------------------
if ( $upgrade )
{
//--------------------------------------
// Completed
//--------------------------------------
$return['amount_paid'] = $balance_to_pay;
$return['state'] = 'PAID';
}
else
{
//--------------------------------------
// Completed
//--------------------------------------
$return['amount_paid'] = $total_package_cost;
$return['state'] = 'PAID';
}
return $return;
}
/*-------------------------------------------------------------------------*/
// Process recurring payment check
// Return: array( 'amount_paid', 'state' [ PAID, DEAD, FAILED, PENDING ]
/*-------------------------------------------------------------------------*/
function gw_do_recurring_payment_check( $balance_to_pay=0, $total_package_cost=0 )
{
$this->gateway->error = "";
//--------------------------------------
// INIT
//--------------------------------------
$return = array();
return $return;
}
//---------------------------------------
// Return ACP Package Variables
//
// Returns names for the package custom
// fields, etc
//---------------------------------------
function acp_return_package_variables()
{
$return = array(
'subextra_custom_1' => array( 'used' => 0, 'varname' => '' ),
'subextra_custom_2' => array( 'used' => 0, 'varname' => '' ),
'subextra_custom_3' => array( 'used' => 0, 'varname' => '' ),
'subextra_custom_4' => array( 'used' => 0, 'varname' => '' ),
'subextra_custom_5' => array( 'used' => 0, 'varname' => '' ),
);
return $return;
}
//---------------------------------------
// Return ACP Method Variables
//
// Returns names for the package custom
// fields, etc
//---------------------------------------
function acp_return_method_variables()
{
$return = array(
'submethod_custom_1' => array( 'used' => 1, 'formname' => 'Protx User Name', 'formextra' => 'This is the username assigned to your Protx account' ),
'submethod_custom_2' => array( 'used' => 1, 'formname' => 'Protx Encryption Password' , 'formextra' => 'This is the password assigned to your Protx account to encrypt the form data' ),
'submethod_custom_3' => array( 'used' => 0, 'varname' => '' ),
'submethod_custom_4' => array( 'used' => 0, 'varname' => '' ),
'submethod_custom_5' => array( 'used' => 0, 'varname' => '' ),
);
return $return;
}
function _simple_xor($instr, $k)
{
$kList = array();
$output = "";
for($i = 0; $i < strlen($k); $i++)
{
$kList[$i] = ord(substr($k, $i, 1));
}
for($i = 0; $i < strlen($instr); $i++)
{
$output.= chr(ord(substr($instr, $i, 1)) ^ ($kList[$i % strlen($k)]));
}
return $output;
}
function _get_token($thisString)
{
$Tokens = array("Status","StatusDetail","VendorTxCode","VPSTxID","TxAuthNo","Amount","AVSCV2");
$output = array();
$resultArray = array();
for ($i = count($Tokens)-1; $i >= 0 ; $i--)
{
$start = strpos($thisString, $Tokens[$i]);
if ($start !== false)
{
$resultArray[$i]->start = $start;
$resultArray[$i]->token = $Tokens[$i];
}
}
sort($resultArray);
for ($i = 0; $i<count($resultArray); $i++)
{
$valueStart = $resultArray[$i]->start + strlen($resultArray[$i]->token) + 1;
if ($i==(count($resultArray)-1))
{
$output[$resultArray[$i]->token] = substr($thisString, $valueStart);
}
else
{
$valueLength = $resultArray[$i+1]->start - $resultArray[$i]->start - strlen($resultArray[$i]->token) - 2;
$output[$resultArray[$i]->token] = substr($thisString, $valueStart, $valueLength);
}
}
return $output;
}
}
?>
@@ -0,0 +1,338 @@
<?php
/*
+--------------------------------------------------------------------------
| Invision Power Board 2.1.7
| =============================================
| by Matthew Mecham
| (c) 2001 - 2005 Invision Power Services, Inc.
| http://www.invisionpower.com
| =============================================
| Web: http://www.invisionboard.com
| http://www.ibresource.ru/products/invisionpowerboard/
| Time: Tuesday 18th of July 2006 05:56:00 PM
| Release: 52f408a29988b02f45b5e6f4ba5af0ae
| Licence Info: http://www.invisionboard.com/?license
| http://www.ibresource.ru/license
+---------------------------------------------------------------------------
| INVISION POWER BOARD IS NOT FREE / OPEN SOURCE!
+---------------------------------------------------------------------------
| INVISION POWER BOARD ÍÅ ßÂËßÅÒÑß ÁÅÑÏËÀÒÍÛÌ ÏÐÎÃÐÀÌÌÍÛÌ ÎÁÅÑÏÅ×ÅÍÈÅÌ!
| Ïðàâà íà ÏÎ ïðèíàäëåæàò Invision Power Services
| Ïðàâà íà ïåðåâîä IBResource (http://www.ibresource.ru)
+---------------------------------------------------------------------------
|
| > Payment Gateway API: PAYPAL
| > Module written by Matt Mecham
| > Date started: 31st March 2005 (14:45)
|
|
+--------------------------------------------------------------------------
*/
if ( ! defined( 'GW_CORE_INIT' ) )
{
print "You cannot access this module in this manner";
exit();
}
//--------------------------------------------------------------------------
// DEFINITIONS EXPECTED AT THIS POINT
//--------------------------------------------------------------------------
// GW_URL_VALIDATE : The url for validating payment
// GW_URL_PAYDONE : The url that the gatways returns the viewer to after
// : payment processed successfully
// GW_URL_PAYCANCEL: The url that the gatways returns the viewer to after
// : payment processed unsuccessfully or when cancelled
//--------------------------------------------------------------------------
// ITEM ARRAY
//--------------------------------------------------------------------------
// 'currency_code' => Currency code,
// 'member_unique_id' => member's ID,
// 'member_name' => member's NAME,
// 'member_email' => member's EMAIL,
// 'package_cost' => Requested package cost
// 'package_id' => Requested package ID
// 'package_title' => Requested package title
// 'duration_int' => Requested package duration int (ie: 12)
// 'duration_unit' => Requested package duration unit (ie: m,d,y,w) [ month, day, year, week ]
// 'company_email' => Company's email address
// 'ttr_int' => Time to run (Time left on current package) integar (ie 3)
// 'ttr_unit' => Time to run (Time left on current package) unit (ie w)
// 'ttr_balance' => Time to run (Balance left on current package)
// 'ttr_package_id' => Current package id (used for upgrading)
// 'vendor_id' => The ID of the vendor (not used in all gateways)
// 'product_id' => The gateway ID of the product (not used in all gateways)
// 'extra_1' thru 5 => Gateway extras ( from DB / tied in method_vars )
//--------------------------------------------------------------------------
class class_gw_module EXTENDS class_gateway
{
# Global
var $ipsclass;
# Identify
var $i_am = 'safshop';
var $can_do_recurring_billing = 0;
var $can_do_upgrades = 0;
/*-------------------------------------------------------------------------*/
// INIT
/*-------------------------------------------------------------------------*/
function main_init()
{
}
/*-------------------------------------------------------------------------*/
// Generate hidden fields [ Recurring, normal screen ]
/*-------------------------------------------------------------------------*/
function gw_generate_hidden_fields_normal_recurring( $items=array() )
{
// Not available for this gateway
return $this->core_compile_hidden_fields();
}
/*-------------------------------------------------------------------------*/
// Generate hidden fields [ Recurring, upgrade screen ]
/*-------------------------------------------------------------------------*/
function gw_generate_hidden_fields_upgrade_recurring( $items=array() )
{
// Not available for this gateway
return $this->core_compile_hidden_fields();
}
/*-------------------------------------------------------------------------*/
// Generate hidden fields [ normal screen ]
/*-------------------------------------------------------------------------*/
function gw_generate_hidden_fields_normal( $items=array() )
{
$this->core_add_hidden_field( "ordernumber" , $items['package_id'].'x'.$items['member_unique_id'].'x0' );
$this->core_add_hidden_field( "productid" , $items['product_id'] );
$this->core_add_hidden_field( "vendorid" , $items['vendor_id'] );
$this->core_add_hidden_field( "buttonid" , "Buy" );
$this->core_add_hidden_field( "item1" , $items['package_cost'] );
$this->core_add_hidden_field( "myurl" , GW_URL_PAYDONE );
$this->core_add_hidden_field( "act" , "paysubs" );
$this->core_add_hidden_field( "CODE" , "incoming" );
$this->core_add_hidden_field( "type" , "safshop" );
return $this->core_compile_hidden_fields();
}
/*-------------------------------------------------------------------------*/
// Generate hidden fields [ upgrade screen ]
/*-------------------------------------------------------------------------*/
function gw_generate_hidden_fields_upgrade( $items=array() )
{
// Not available for this gateway
return $this->core_compile_hidden_fields();
}
/*-------------------------------------------------------------------------*/
// Generate Purchase button
/*-------------------------------------------------------------------------*/
function gw_generate_purchase_button()
{
return '<input type="submit" name="b1" value="'.$this->ipsclass->lang['paywith_gen'].'" />';
}
/*-------------------------------------------------------------------------*/
// Generate Form action [normal]
/*-------------------------------------------------------------------------*/
function gw_generate_normal_form_action()
{
return "https://order.safshop.net/servicepayment.cgi";
}
/*-------------------------------------------------------------------------*/
// Generate Form action [upgrade]
/*-------------------------------------------------------------------------*/
function gw_generate_upgrade_form_action()
{
return $this->gw_generate_normal_form_action();
}
/*-------------------------------------------------------------------------*/
// Generate Form action [normal, recurring]
/*-------------------------------------------------------------------------*/
function gw_generate_normal_recurring_form_action()
{
return $this->gw_generate_normal_form_action();
}
/*-------------------------------------------------------------------------*/
// Generate Form action [upgrade, recurring]
/*-------------------------------------------------------------------------*/
function gw_generate_upgrade_recurring_form_action()
{
return $this->gw_generate_normal_form_action();
}
/*-------------------------------------------------------------------------*/
// Validate Payment
// What we need to return:
// 'currency_code' => Currency code,
// 'payment_amount' => Amount paid,
// 'payment_status' => REFUND, ONEOFF, RECURRING
// 'member_unique_id' => member's ID,
// 'purchase_package_id'=> Purchased package ID
// 'current_package_id' => Current package ID (used for upgrading)
// 'verified' => TRUE , FALSE (Gateway verifies info as correct)
// 'subscription_id' => (Used for recurring payments)
// 'transaction_id' => Gateway transaction ID
/*-------------------------------------------------------------------------*/
function gw_validate_payment()
{
//--------------------------------------
// INIT
//--------------------------------------
//--------------------------------------
// Debug...
//--------------------------------------
if ( GW_TEST_MODE_ON )
{
if ( ! is_array( $_POST ) or ! count( $_POST ) )
{
$_POST = $_GET;
}
}
//--------------------------------------
// Populate return array
//--------------------------------------
list( $purchase_package_id, $member_id, $cur_sub_id, ) = explode( 'x', trim($_POST['ordernumber']) );
$return = array( 'currency_code' => 'USD',
'payment_amount' => 0,
'member_unique_id' => intval($member_id),
'purchase_package_id'=> intval($purchase_package_id),
'current_package_id' => intval($cur_sub_id),
'verified' => $_POST['safshopresult'] ? TRUE : FALSE,
'subscription_id' => '0-'.intval($member_id),
'transaction_id' => $_POST['safshopresult'] );
//--------------------------------------
// Sort out payment status
//--------------------------------------
$return['payment_status'] = 'ONEOFF';
//--------------------------------------
// Pass back to handler
//--------------------------------------
return $return;
}
/*-------------------------------------------------------------------------*/
// Process recurring payment check
// Return: array( 'amount_paid', 'state' [ PAID, DEAD, FAILED, PENDING ]
/*-------------------------------------------------------------------------*/
function gw_do_normal_payment_check( $balance_to_pay=0, $total_package_cost=0, $upgrade=0 )
{
$this->gateway->error = "";
//--------------------------------------
// INIT
//--------------------------------------
$return = array();
//--------------------------------------
// Completed
//--------------------------------------
$return['amount_paid'] = $total_package_cost;
$return['state'] = 'PAID';
return $return;
}
/*-------------------------------------------------------------------------*/
// Process recurring payment check
// Return: array( 'amount_paid', 'state' [ PAID, DEAD, FAILED, PENDING ]
/*-------------------------------------------------------------------------*/
function gw_do_recurring_payment_check( $balance_to_pay=0, $total_package_cost=0 )
{
$this->gateway->error = "";
//--------------------------------------
// INIT
//--------------------------------------
$return = array();
return $return;
}
//---------------------------------------
// Return ACP Package Variables
//
// Returns names for the package custom
// fields, etc
//---------------------------------------
function acp_return_package_variables()
{
$return = array(
'subextra_custom_1' => array( 'used' => 0, 'varname' => '' ),
'subextra_custom_2' => array( 'used' => 0, 'varname' => '' ),
'subextra_custom_3' => array( 'used' => 0, 'varname' => '' ),
'subextra_custom_4' => array( 'used' => 0, 'varname' => '' ),
'subextra_custom_5' => array( 'used' => 0, 'varname' => '' ),
);
return $return;
}
//---------------------------------------
// Return ACP Method Variables
//
// Returns names for the package custom
// fields, etc
//---------------------------------------
function acp_return_method_variables()
{
$return = array(
'submethod_custom_1' => array( 'used' => 0, 'varname' => '' ),
'submethod_custom_2' => array( 'used' => 0, 'varname' => '' ),
'submethod_custom_3' => array( 'used' => 0, 'varname' => '' ),
'submethod_custom_4' => array( 'used' => 0, 'varname' => '' ),
'submethod_custom_5' => array( 'used' => 0, 'varname' => '' ),
);
return $return;
}
}
?>
@@ -0,0 +1,407 @@
<?php
/*
+--------------------------------------------------------------------------
| Invision Power Board 2.1.7
| =============================================
| by Matthew Mecham
| (c) 2001 - 2005 Invision Power Services, Inc.
| http://www.invisionpower.com
| =============================================
| Web: http://www.invisionboard.com
| http://www.ibresource.ru/products/invisionpowerboard/
| Time: Tuesday 18th of July 2006 05:56:00 PM
| Release: 52f408a29988b02f45b5e6f4ba5af0ae
| Licence Info: http://www.invisionboard.com/?license
| http://www.ibresource.ru/license
+---------------------------------------------------------------------------
| INVISION POWER BOARD IS NOT FREE / OPEN SOURCE!
+---------------------------------------------------------------------------
| INVISION POWER BOARD ÍÅ ßÂËßÅÒÑß ÁÅÑÏËÀÒÍÛÌ ÏÐÎÃÐÀÌÌÍÛÌ ÎÁÅÑÏÅ×ÅÍÈÅÌ!
| Ïðàâà íà ÏÎ ïðèíàäëåæàò Invision Power Services
| Ïðàâà íà ïåðåâîä IBResource (http://www.ibresource.ru)
+---------------------------------------------------------------------------
|
| > Payment Gateway API: PAYPAL
| > Module written by Matt Mecham
| > Date started: 31st March 2005 (14:45)
|
|
+--------------------------------------------------------------------------
*/
if ( ! defined( 'GW_CORE_INIT' ) )
{
print "You cannot access this module in this manner";
exit();
}
//--------------------------------------------------------------------------
// DEFINITIONS EXPECTED AT THIS POINT
//--------------------------------------------------------------------------
// GW_URL_VALIDATE : The url for validating payment
// GW_URL_PAYDONE : The url that the gatways returns the viewer to after
// : payment processed successfully
// GW_URL_PAYCANCEL: The url that the gatways returns the viewer to after
// : payment processed unsuccessfully or when cancelled
//--------------------------------------------------------------------------
// ITEM ARRAY
//--------------------------------------------------------------------------
// 'currency_code' => Currency code,
// 'member_unique_id' => member's ID,
// 'member_name' => member's NAME,
// 'member_email' => member's EMAIL,
// 'package_cost' => Requested package cost
// 'package_id' => Requested package ID
// 'package_title' => Requested package title
// 'duration_int' => Requested package duration int (ie: 12)
// 'duration_unit' => Requested package duration unit (ie: m,d,y,w) [ month, day, year, week ]
// 'company_email' => Company's email address
// 'ttr_int' => Time to run (Time left on current package) integar (ie 3)
// 'ttr_unit' => Time to run (Time left on current package) unit (ie w)
// 'ttr_balance' => Time to run (Balance left on current package)
// 'ttr_package_id' => Current package id (used for upgrading)
//--------------------------------------------------------------------------
class class_gw_module EXTENDS class_gateway
{
# Global
var $ipsclass;
# Identify
var $i_am = 'test';
var $can_do_recurring_billing = 0;
var $can_do_upgrades = 1;
/*-------------------------------------------------------------------------*/
// INIT
/*-------------------------------------------------------------------------*/
function main_init()
{
}
/*-------------------------------------------------------------------------*/
// Generate hidden fields [ Recurring, normal screen ]
/*-------------------------------------------------------------------------*/
function gw_generate_hidden_fields_normal_recurring( $items=array() )
{
// Not available for this gateway
return $this->core_compile_hidden_fields();
}
/*-------------------------------------------------------------------------*/
// Generate hidden fields [ Recurring, upgrade screen ]
/*-------------------------------------------------------------------------*/
function gw_generate_hidden_fields_upgrade_recurring( $items=array() )
{
// Not available for this gateway
return $this->core_compile_hidden_fields();
}
/*-------------------------------------------------------------------------*/
// Generate hidden fields [ normal screen ]
/*-------------------------------------------------------------------------*/
function gw_generate_hidden_fields_normal( $items=array() )
{
$this->core_add_hidden_field( "ordernumber" , $items['package_id'].'x'.$items['member_unique_id'].'x0' );
$this->core_add_hidden_field( "amount" , $items['package_cost'] );
$this->core_add_hidden_field( "desc" , $items['package_title'] );
$this->core_add_hidden_field( "email" , $items['company_email'] );
$this->core_add_hidden_field( "From_email" , $items['member_email'] );
$this->core_add_hidden_field( "status" , 'live' );
$this->core_add_hidden_field( "responderurl" , GW_URL_VALIDATE );
$this->core_add_hidden_field( "returnurl" , GW_URL_PAYDONE );
return $this->core_compile_hidden_fields();
}
/*-------------------------------------------------------------------------*/
// Generate hidden fields [ upgrade screen ]
/*-------------------------------------------------------------------------*/
function gw_generate_hidden_fields_upgrade( $items=array() )
{
$this->core_add_hidden_field( "ordernumber" , $items['package_id'].'x'.$items['member_unique_id'].'x'.$items['ttr_package_id'] );
$this->core_add_hidden_field( "amount" , $items['package_cost'] );
$this->core_add_hidden_field( "email" , $items['company_email'] );
$this->core_add_hidden_field( "From_email" , $items['member_email'] );
$this->core_add_hidden_field( "status" , 'live' );
$this->core_add_hidden_field( "responderurl" , GW_URL_VALIDATE );
$this->core_add_hidden_field( "returnurl" , GW_URL_PAYDONE );
return $this->core_compile_hidden_fields();
}
/*-------------------------------------------------------------------------*/
// Generate Purchase button
/*-------------------------------------------------------------------------*/
function gw_generate_purchase_button()
{
return '<input type="image" src="http://www.nochex.com/web/images/cardsboth2.gif" name="submit" alt="Pay with NOCHEX now" />';
}
/*-------------------------------------------------------------------------*/
// Generate Form action [normal]
/*-------------------------------------------------------------------------*/
function gw_generate_normal_form_action()
{
// Test
//return 'https://www.nochex.com/nochex.dll/apc/testapc';
return "https://www.nochex.com/nochex.dll/checkout";
}
/*-------------------------------------------------------------------------*/
// Generate Form action [upgrade]
/*-------------------------------------------------------------------------*/
function gw_generate_upgrade_form_action()
{
return $this->gw_generate_normal_form_action();
}
/*-------------------------------------------------------------------------*/
// Generate Form action [normal, recurring]
/*-------------------------------------------------------------------------*/
function gw_generate_normal_recurring_form_action()
{
return $this->gw_generate_normal_form_action();
}
/*-------------------------------------------------------------------------*/
// Generate Form action [upgrade, recurring]
/*-------------------------------------------------------------------------*/
function gw_generate_upgrade_recurring_form_action()
{
return $this->gw_generate_normal_form_action();
}
/*-------------------------------------------------------------------------*/
// Validate Payment
// What we need to return:
// 'currency_code' => Currency code,
// 'payment_amount' => Amount paid,
// 'payment_status' => REFUND, ONEOFF, RECURRING
// 'member_unique_id' => member's ID,
// 'purchase_package_id'=> Purchased package ID
// 'current_package_id' => Current package ID (used for upgrading)
// 'verified' => TRUE , FALSE (Gateway verifies info as correct)
// 'subscription_id' => (Used for recurring payments)
// 'transaction_id' => Gateway transaction ID
/*-------------------------------------------------------------------------*/
function gw_validate_payment()
{
//--------------------------------------
// INIT
//--------------------------------------
//--------------------------------------
// Debug...
//--------------------------------------
if ( GW_TEST_MODE_ON )
{
if ( ! is_array( $_POST ) or ! count( $_POST ) )
{
$_POST = $_GET;
}
}
//--------------------------------------
// URLS
//--------------------------------------
$urls = array( 'curl_full' => 'https://www.nochex.com/nochex.dll/apc/apc',
'sock_url' => 'ssl://www.nochex.com',
'sock_path' => '/nochex.dll/apc/apc' );
//--------------------------------------
// Throw back to PayPal to verify
//--------------------------------------
$state = $this->core_post_back( $urls, "", 443 );
//--------------------------------------
// Check...
//--------------------------------------
$state = ( strcmp($state, 'AUTHORISED') == 0 ) ? 'INVALID' : 'AUTHORISED';
if ( $state != 'AUTHORISED' AND ! GW_TEST_MODE_ON )
{
$this->error = 'not_valid';
return array( 'verified' => FALSE );
}
//--------------------------------------
// Populate return array
//--------------------------------------
list( $purchase_package_id, $member_id, $cur_sub_id, ) = explode( 'x', trim($_POST['order_id']) );
$return = array( 'currency_code' => 'GBP',
'payment_amount' => $_POST['amount'],
'member_unique_id' => intval($member_id),
'purchase_package_id'=> intval($purchase_package_id),
'current_package_id' => intval($cur_sub_id),
'verified' => TRUE,
'subscription_id' => '0-'.intval($member_id),
'transaction_id' => $_POST['transaction_id'] );
//--------------------------------------
// Sort out payment status
//--------------------------------------
$return['payment_status'] = 'ONEOFF';
//--------------------------------------
// Pass back to handler
//--------------------------------------
return $return;
}
/*-------------------------------------------------------------------------*/
// Process recurring payment check
// Return: array( 'amount_paid', 'state' [ PAID, DEAD, FAILED, PENDING ]
/*-------------------------------------------------------------------------*/
function gw_do_normal_payment_check( $balance_to_pay=0, $total_package_cost=0, $upgrade=0 )
{
$this->gateway->error = "";
//--------------------------------------
// INIT
//--------------------------------------
$return = array();
//--------------------------------------
// Completed
//--------------------------------------
if ( $upgrade AND ( $_POST['amount'] == $balance_to_pay ) )
{
//--------------------------------------
// Paid correct amount
//--------------------------------------
$return['amount_paid'] = $_POST['amount'];
$return['state'] = 'PAID';
}
else if ( ! $upgrade AND ( $_POST['amount'] == $total_package_cost ) )
{
//--------------------------------------
// Paid correct amount
//--------------------------------------
$return['amount_paid'] = $_POST['amount'];
$return['state'] = 'PAID';
}
else
{
//-----------------------
// End of subscription
//-----------------------
$return['state'] = 'FAILED';
}
return $return;
}
/*-------------------------------------------------------------------------*/
// Process recurring payment check
// Return: array( 'amount_paid', 'state' [ PAID, DEAD, FAILED, PENDING ]
/*-------------------------------------------------------------------------*/
function gw_do_recurring_payment_check( $balance_to_pay=0, $total_package_cost=0 )
{
$this->gateway->error = "";
//--------------------------------------
// INIT
//--------------------------------------
$return = array();
return $return;
}
//---------------------------------------
// Return ACP Package Variables
//
// Returns names for the package custom
// fields, etc
//---------------------------------------
function acp_return_package_variables()
{
$return = array(
'subextra_custom_1' => array( 'used' => 0, 'varname' => '' ),
'subextra_custom_2' => array( 'used' => 0, 'varname' => '' ),
'subextra_custom_3' => array( 'used' => 0, 'varname' => '' ),
'subextra_custom_4' => array( 'used' => 0, 'varname' => '' ),
'subextra_custom_5' => array( 'used' => 0, 'varname' => '' ),
);
return $return;
}
//---------------------------------------
// Return ACP Method Variables
//
// Returns names for the package custom
// fields, etc
//---------------------------------------
function acp_return_method_variables()
{
$return = array(
'submethod_custom_1' => array( 'used' => 0, 'varname' => '' ),
'submethod_custom_2' => array( 'used' => 0, 'varname' => '' ),
'submethod_custom_3' => array( 'used' => 0, 'varname' => '' ),
'submethod_custom_4' => array( 'used' => 0, 'varname' => '' ),
'submethod_custom_5' => array( 'used' => 0, 'varname' => '' ),
);
return $return;
}
/*-------------------------------------------------------------------------*/
// INSTALL ROUTINES
/*-------------------------------------------------------------------------*/
function install_gateway()
{
$this->ipsclass->DB->do_insert( 'subscription_methods', array( 'submethod_title' => $this->i_am,
'submethod_name' => $this->i_am,
'submethod_active' => 0 ) );
$this->install_lang = array( 'gw_test' => 'test test test' );
}
}
?>
@@ -0,0 +1,75 @@
<?php
/*
+--------------------------------------------------------------------------
| Invision Power Board 2.1.7
| =============================================
| by Matthew Mecham
| (c) 2001 - 2005 Invision Power Services, Inc.
| http://www.invisionpower.com
| =============================================
| Web: http://www.invisionboard.com
| http://www.ibresource.ru/products/invisionpowerboard/
| Time: Tuesday 18th of July 2006 05:56:00 PM
| Release: 52f408a29988b02f45b5e6f4ba5af0ae
| Licence Info: http://www.invisionboard.com/?license
| http://www.ibresource.ru/license
+---------------------------------------------------------------------------
| INVISION POWER BOARD IS NOT FREE / OPEN SOURCE!
+---------------------------------------------------------------------------
| INVISION POWER BOARD ÍÅ ßÂËßÅÒÑß ÁÅÑÏËÀÒÍÛÌ ÏÐÎÃÐÀÌÌÍÛÌ ÎÁÅÑÏÅ×ÅÍÈÅÌ!
| Ïðàâà íà ÏÎ ïðèíàäëåæàò Invision Power Services
| Ïðàâà íà ïåðåâîä IBResource (http://www.ibresource.ru)
+---------------------------------------------------------------------------
|
| > Subscription Custom Module (EXAMPLE)
| > Module written by Matt Mecham
| > Date started: 21th August 2003
|
| NEVER CALL EXIT IN THIS MODULE - IT MUST RETURN BACK TO
| IPB TO CONTINUE THE SUBSCRIPTION PROCESS OR IT WILL FAIL
+--------------------------------------------------------------------------
*/
//---------------------------------------
// Security check
//---------------------------------------
if ( ! defined( 'IN_IPB' ) )
{
print "<h1>Incorrect access</h1>You cannot access this file directly. If you have recently upgraded, make sure you upgraded all the relevant files.";
exit();
}
class customsubs {
//---------------------------------------
// Subscription Paid
//---------------------------------------
function subs_paid($sub_array, $member=array(), $trx_id="")
{
}
//---------------------------------------
// Subscription Failed / Cancelled
//---------------------------------------
function subs_failed($sub_array, $member=array(), $trx_id="")
{
}
}
?>
@@ -0,0 +1,15 @@
<html>
<head><title>Ошибка &lt; Русская версия Invision Power Board</title></head>
<body>
<h1>Ошибка &lt; Русская версия Invision Power Board</h1>
<hr>
Вы попали на несуществующую страницу!<br>Пожалуйста нажмите на кнопочку &laquo;<b>Назад</b>&raquo;
в вашем браузере для возвращения на предыдущую страницу.
<hr>
<b>Invision Power Board:</b>
<ul>
<li><a href="http://www.bestwarez.ru" title="BestWarez.Ru - Только лучший Варез!">Русская версия</a></li>
<li><a href="http://www.invisionboard.com" title="Official Site">English version</a></li>
</ul>
</body>
</html>
@@ -0,0 +1,15 @@
<html>
<head><title>Ошибка &lt; Русская версия Invision Power Board</title></head>
<body>
<h1>Ошибка &lt; Русская версия Invision Power Board</h1>
<hr>
Вы попали на несуществующую страницу!<br>Пожалуйста нажмите на кнопочку &laquo;<b>Назад</b>&raquo;
в вашем браузере для возвращения на предыдущую страницу.
<hr>
<b>Invision Power Board:</b>
<ul>
<li><a href="http://www.bestwarez.ru" title="BestWarez.Ru - Только лучший Варез!">Русская версия</a></li>
<li><a href="http://www.invisionboard.com" title="Official Site">English version</a></li>
</ul>
</body>
</html>