class_gw_test.php
来自「sabreipb 2.1.6 utf-8中文版本!」· PHP 代码 · 共 399 行
PHP
399 行
<?php/*+--------------------------------------------------------------------------| Invision Power Board v2.1.5| ========================================| by Matthew Mecham| (c) 2001 - 2005 Invision Power Services| | ========================================| Web: | Time: Wed, 01 Mar 2006 19:11:28 GMT| Release: | Email: +---------------------------------------------------------------------------|| > 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' ); } } ?>
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?