class_gw_protx.php
来自「sabreipb 2.1.6 utf-8中文版本!」· PHP 代码 · 共 471 行 · 第 1/2 页
PHP
471 行
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; } } ?>
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?