han_paysubscriptions.php

来自「sabreipb 2.1.6 utf-8中文版本!」· PHP 代码 · 共 1,216 行 · 第 1/4 页

PHP
1,216
字号
																						  'ttr_unit'         => $time_left_units,																						  'ttr_balance'      => $balance,																						  'ttr_package_id'   => $cur_trans['subtrans_sub_id'],																						  'vendor_id'        => $pay_method['submethod_sid'],																						  'product_id'       => $extra['subextra_product_id'],																						  'extra_1'          => $pay_method['submethod_custom_1'],																						  'extra_2'          => $pay_method['submethod_custom_2'],																						  'extra_3'          => $pay_method['submethod_custom_3'],																						  'extra_4'          => $pay_method['submethod_custom_4'],																						  'extra_5'          => $pay_method['submethod_custom_5'] ) );																				 						return $this->ipsclass->compiled_templates['skin_subscriptions']->do_generic_payscreen_with_button( array( 'formaction'   => $this->class_gateway->gw_generate_upgrade_form_action(),																													   'formfields'   => $form_fields,																													   'button'       => $this->class_gateway->gw_generate_purchase_button(),																													   'lang_title'   => $this->ipsclass->lang['sc_complete'],																													   'lang_explain' => $this->ipsclass->lang['sc_upgrade_explain'],																													   'lang_desc'    => $this->ipsclass->lang['sc_upgrade_string'],																													   'lang_extra'   => $this->ipsclass->lang['gw_' . $this->gateway ] ) );		}			}	    /*-------------------------------------------------------------------------*/    // SHOW NORMAL PAYMENT SCREEN    /*-------------------------------------------------------------------------*/    	function show_normal_payment_screen($sub_upgrade, $pay_method, $extra)  	{		//---------------------------------------		// Check we have chosen package details		//---------------------------------------				if ( ! $sub_upgrade['sub_id'] )		{			$this->ipsclass->Error( array( 'LEVEL' => 1, 'MSG' => 'subs_fail', 'EXTRA' => 'no_curid' ) );		}				//---------------------------------------		// Format the info string		//---------------------------------------				$this->ipsclass->lang['sc_normal_string'] = sprintf( $this->ipsclass->lang['sc_normal_string'],													   		 $sub_upgrade['sub_title'],													   		 sprintf( "%.2f", $sub_upgrade['sub_cost'] * $this->cho_currency['subcurrency_exchange'] ).' '.$this->cho_currency['subcurrency_code']													      );				if ( $extra['subextra_recurring'] == 1 AND $this->class_gateway->can_do_recurring_billing == 1 AND $sub_upgrade['sub_unit'] != 'x' )		{			//---------------------------------------			// Generate form fields			//---------------------------------------							$form_fields = $this->class_gateway->gw_generate_hidden_fields_normal_recurring( array('currency_code'    => $pay_method['submethod_use_currency'],																								   'member_unique_id' => $this->ipsclass->member['id'],																								   'member_name'      => $this->ipsclass->member['members_display_name'],																								   'member_email'     => $this->ipsclass->member['email'],																								   'package_cost'     => sprintf( "%.2f", $sub_upgrade['sub_cost'] * $this->all_currency[ $pay_method['submethod_use_currency'] ]['subcurrency_exchange'] ),																								   'package_id'       => $sub_upgrade['sub_id'],																								   'package_title'    => $sub_upgrade['sub_title'],																								   'duration_int'     => $sub_upgrade['sub_length'],																								   'duration_unit'    => strtoupper($sub_upgrade['sub_unit']),																								   'company_email'    => $pay_method['submethod_email'],																								   'ttr_int'          => '',																								   'ttr_unit'         => '',																								   'ttr_balance'      => '',																								   'ttr_package_id'   => $cur_trans['subtrans_sub_id'],																								   'vendor_id'        => $pay_method['submethod_sid'],																								   'product_id'       => $extra['subextra_product_id'],																								   'extra_1'          => $pay_method['submethod_custom_1'],																								   'extra_2'          => $pay_method['submethod_custom_2'],																								   'extra_3'          => $pay_method['submethod_custom_3'],																								   'extra_4'          => $pay_method['submethod_custom_4'],																								   'extra_5'          => $pay_method['submethod_custom_5'] ) );						return $this->ipsclass->compiled_templates['skin_subscriptions']->do_generic_payscreen_with_button( array( 'formaction'   => $this->class_gateway->gw_generate_normal_recurring_form_action(),																													   'formfields'   => $form_fields,																													   'button'       => $this->class_gateway->gw_generate_purchase_button(),																													   'lang_title'   => $this->ipsclass->lang['sc_complete'],																													   'lang_explain' => $this->ipsclass->lang['sc_upgrade_explain'],																													   'lang_desc'    => $this->ipsclass->lang['sc_normal_string'],																													   'lang_extra'   => $this->ipsclass->lang['gw_' . $this->gateway ] ) );		}		else		{			//---------------------------------------			// Generate form fields: NORMAL			//---------------------------------------							$form_fields = $this->class_gateway->gw_generate_hidden_fields_normal( array('currency_code'    => $pay_method['submethod_use_currency'],																						 'member_unique_id' => $this->ipsclass->member['id'],																						 'member_name'      => $this->ipsclass->member['members_display_name'],																						 'member_email'     => $this->ipsclass->member['email'],																						 'package_cost'     => sprintf( "%.2f", $sub_upgrade['sub_cost'] * $this->all_currency[ $pay_method['submethod_use_currency'] ]['subcurrency_exchange'] ),																						 'package_id'       => $sub_upgrade['sub_id'],																						 'package_title'    => $sub_upgrade['sub_title'],																						 'duration_int'     => $sub_upgrade['sub_length'],																						 'duration_unit'    => strtoupper($sub_upgrade['sub_unit']),																						 'company_email'    => $pay_method['submethod_email'],																						 'ttr_package_id'   => $cur_trans['subtrans_sub_id'],																						 'vendor_id'        => $pay_method['submethod_sid'],																						 'product_id'       => $extra['subextra_product_id'],																						 'extra_1'          => $pay_method['submethod_custom_1'],																						 'extra_2'          => $pay_method['submethod_custom_2'],																						 'extra_3'          => $pay_method['submethod_custom_3'],																						 'extra_4'          => $pay_method['submethod_custom_4'],																						 'extra_5'          => $pay_method['submethod_custom_5']																				 )     );						return $this->ipsclass->compiled_templates['skin_subscriptions']->do_generic_payscreen_with_button( array( 'formaction'   => $this->class_gateway->gw_generate_normal_form_action(),																													   'formfields'   => $form_fields,																													   'button'       => $this->class_gateway->gw_generate_purchase_button(),																													   'lang_title'   => $this->ipsclass->lang['sc_complete'],																													   'lang_explain' => $this->ipsclass->lang['sc_upgrade_explain'],																													   'lang_desc'    => $this->ipsclass->lang['sc_normal_string'],																													   'lang_extra'   => $this->ipsclass->lang['gw_' . $this->gateway ] ) );		}  	}  	  	/*-------------------------------------------------------------------------*/	// Validate the payment	/*-------------------------------------------------------------------------*/		function validate_payment( $pay_method )	{		//--------------------------------------		// INIT		//--------------------------------------				$this->results = array();		$this->update  = array( 'subtrans_method' => $this->class_gateway->i_am );		$this->member  = array();				//--------------------------------------		// Are we allowing auto manipulation?		//--------------------------------------				if ( $pay_method['submethod_is_auto'] != 1 )		{			$this->do_log("{$this->class_gateway->i_am}: Tried to return validate but failed: ACP settings have auto validate switched off");			exit();		}				//--------------------------------------		// Test POST data		//--------------------------------------				if ( empty( $_REQUEST ) )		{			$this->do_log("{$this->class_gateway->i_am}: Tried to return validate but failed: REQUEST DATA EMPTY");			exit();		}				//--------------------------------------		// Get results from class		//--------------------------------------				$this->results = $this->class_gateway->gw_validate_payment( array( 'vendor_id'     => $pay_method['submethod_sid'],																		   'company_email' => $pay_method['submethod_email'],																		   'extra_1'       => $pay_method['submethod_custom_1'],																		   'extra_2'       => $pay_method['submethod_custom_2'],																		   'extra_3'       => $pay_method['submethod_custom_3'],																		   'extra_4'       => $pay_method['submethod_custom_4'],																		   'extra_5'       => $pay_method['submethod_custom_5'] ) );				//--------------------------------------		// VERIFIED?		//--------------------------------------				if ( ! $this->results['verified'] )		{			if ( ! GW_TEST_MODE_ON )			{				$this->do_log("{$this->class_gateway->i_am}: UPGRADE - NOT VERIFIED" . $this->class_gateway->error );				exit();			}		}				//--------------------------------------		// Check for member id		//--------------------------------------				if ( $this->results['member_unique_id'] > 0 )		{			$this->member = $this->ipsclass->DB->build_and_exec_query( array( 'select' => '*', 'from' => 'members', 'where' => 'id='.intval($this->results['member_unique_id']) ) );		}				if ( GW_TEST_MODE_ON )		{			print "<pre>";			print_r( $this->results );			print "</pre>";		}				//--------------------------------------		// Got a member?		//--------------------------------------				if ( ! $this->member['id'] )		{			$this->do_log("{$this->class_gateway->i_am}: Could not locate a member id to upgrade");			exit();		}				//--------------------------------------		// Got a new subs package?		//--------------------------------------				$this->new_sub = $this->ipsclass->DB->build_and_exec_query( array( 'select' => '*', 'from' => 'subscriptions', 'where' => 'sub_id='.intval($this->results['purchase_package_id']) ) );				if ( ! $this->new_sub['sub_id'] )		{			$this->do_log("{$this->class_gateway->i_am}: Tried to return validate but failed: No start sub package found");			exit();		}					//--------------------------------------		// Check for txn_id - if already used, this		// is a dupe from a repeated form submit		//--------------------------------------				$this->trans  = $this->ipsclass->DB->build_and_exec_query( array( 'select' => 'subtrans_id',																		  'from'   => 'subscription_trans',																		  'where'  => "subtrans_trxid='".addslashes($this->results['transaction_id'])."'" ) );				if ( $this->trans['subtrans_id'] )		{			//--------------------------------------			// Is this a reversal?			//--------------------------------------						if ( $this->results['payment_status'] == 'REFUND' )			{				//-----------------------------				// Update trans for the refund				//-----------------------------								$this->ipsclass->DB->do_update( 'subscription_trans', array( 'subtrans_state' => "failed" ), "subtrans_id={$this->trans['subtrans_id']}" );								$this->do_failed_member($this->new_sub, $this->member, $this->trans['subtrans_id']);								//-----------------------------				// Write Log				//-----------------------------								$this->do_log("{$this->class_gateway->i_am}: Reversal / Subscription cancellation completed");				exit();			}			else			{				$this->do_log("{$this->class_gateway->i_am}: Duplicate transaction ID - failing and exiting transaction");				exit();			}		}				//--------------------------------------		// UPGRADE		//--------------------------------------				if ( $this->results['current_package_id'] > 0 )		{			//--------------------------------------			// Get current details			//--------------------------------------						$this->cur_details = $this->ipsclass->DB->build_and_exec_query( array( 'select' => '*',																				   'from'   => 'subscription_trans',																				   'where'  => 'subtrans_member_id='.intval($this->member['id'])																				             . ' AND subtrans_state="paid" AND subtrans_sub_id='.$this->results['current_package_id']) );						//--------------------------------------			// Check			//--------------------------------------						if ( ! $this->cur_details['subtrans_id'] )			{				$this->do_log("{$this->class_gateway->i_am}: Tried to return validate but failed: Upgrade, but no original package found");			}						if ( $this->results['currency_code'] != $pay_method['sub_use_currency'] )			{				$this->do_log("{$this->class_gateway->i_am}: Tried to return validate but failed: Wrong currency ({$this->results['currency_code']})");			}						//--------------------------------------			// What to do...			//--------------------------------------						if ( $this->results['payment_status'] == 'RECURRING' )			{				$this->_process_recurring_upgrade( $pay_method );								}			else if ( $this->results['payment_status'] == 'ONEOFF' )			{				$this->_process_normal_upgrade( $pay_method );			}			else			{				$this->do_log("{$this->class_gateway->i_am}: Subscription Start. Unknown trx_type: {$_POST['txn_type']}");			}		}				//--------------------------------------		// NON-UPGRADE

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?