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