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 + -
显示快捷键?