Page Menu
Home
In-Portal Phabricator
Search
Configure Global Search
Log In
Files
F1029999
in-commerce
No One
Temporary
Actions
View File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Award Token
Flag For Later
Subscribers
None
File Metadata
Details
File Info
Storage
Attached
Created
Mon, Jun 16, 12:15 AM
Size
9 KB
Mime Type
text/x-diff
Expires
Wed, Jun 18, 12:15 AM (1 h, 14 m)
Engine
blob
Format
Raw Data
Handle
665057
Attached To
rMINC Modules.In-Commerce
in-commerce
View Options
Index: branches/RC/in-commerce/units/gateways/gw_classes/paypal_direct.php
===================================================================
--- branches/RC/in-commerce/units/gateways/gw_classes/paypal_direct.php (nonexistent)
+++ branches/RC/in-commerce/units/gateways/gw_classes/paypal_direct.php (revision 11618)
@@ -0,0 +1,220 @@
+<?php
+
+ require_once GW_CLASS_PATH.'/gw_base.php';
+
+ $class_name = 'kGWPaypalDirect'; // for automatic installation
+
+ class kGWPaypalDirect extends kGWBase
+ {
+ function InstallData()
+ {
+ $data = array(
+ 'Gateway' => Array('Name' => 'PayPal Pro', 'ClassName' => 'kGWPaypalDirect', 'ClassFile' => 'paypal_direct.php', 'RequireCCFields' => 1),
+ 'ConfigFields' => Array(
+ 'submit_url' => Array('Name' => 'Submit URL', 'Type' => 'text', 'ValueList' => '', 'Default' => 'https://api-3t.paypal.com/nvp'),
+ 'api_username' => Array('Name' => 'PayPal Pro API Username', 'Type' => 'text', 'ValueList' => '', 'Default' => ''),
+ 'api_password' => Array('Name' => 'PayPal Pro API Password', 'Type' => 'text', 'ValueList' => '', 'Default' => ''),
+ 'signature' => Array('Name' => 'PayPal Pro API Signature', 'Type' => 'text', 'ValueList' => '', 'Default' => ''),
+ 'shipping_control' => Array('Name' => 'Shipping Control', 'Type' => 'select', 'ValueList' => '3=la_CreditDirect', 'Default' => '3'),
+ )
+ );
+ return $data;
+ }
+
+ function DirectPayment($item_data, $gw_params)
+ {
+ $post_fields = Array();
+ // -- Login Information --
+ $post_fields['METHOD'] = 'DoDirectPayment';
+ $post_fields['VERSION'] = '52.0';
+ $post_fields['IPADDRESS'] = $_SERVER['REMOTE_ADDR'];
+ $post_fields['USER'] = $gw_params['api_username'];
+ $post_fields['PWD'] = $gw_params['api_password'];
+ $post_fields['SIGNATURE'] = $gw_params['signature'];
+ $post_fields['PAYMENTACTION'] = 'Sale';
+ $post_fields['AMT'] = sprintf('%.2f', $item_data['TotalAmount']);
+
+ switch ($item_data['PaymentCardType']) {
+ case 1:
+ $post_fields['CREDITCARDTYPE'] = 'Visa';
+ break;
+ case 2:
+ $post_fields['CREDITCARDTYPE'] = 'MasterCard';
+ break;
+ case 3:
+ $post_fields['CREDITCARDTYPE'] = 'Amex';
+ break;
+ case 4:
+ $post_fields['CREDITCARDTYPE'] = 'Discover';
+ break;
+ default:
+ $this->parsed_responce['responce_reason_text'] = 'Invalid Credit Card Type';
+ return false;
+ }
+
+ $post_fields['ACCT'] = $item_data['PaymentAccount'];
+ $date_parts = explode('/', $item_data['PaymentCCExpDate']);
+ $post_fields['EXPDATE'] = $date_parts[0].'20'.$date_parts[1];
+ $post_fields['CVV2'] = $item_data['PaymentCVV2'];
+
+ $names = explode(' ', $item_data['PaymentNameOnCard'], 2);
+ $post_fields['FIRSTNAME'] = getArrayValue($names, 0);
+ $post_fields['LASTNAME'] = getArrayValue($names, 1);
+
+ $post_fields['STREET'] = $item_data['BillingAddress1'];
+ $post_fields['STREET2'] = $item_data['BillingAddress2'];
+ $post_fields['CITY'] = $item_data['BillingCity'];
+ $post_fields['STATE'] = $item_data['BillingState'];
+ $sql = 'SELECT DestAbbr2 FROM '.TABLE_PREFIX.'StdDestinations WHERE DestAbbr = %s';
+ $post_fields['COUNTRYCODE'] = $this->Conn->GetOne( sprintf($sql, $this->Conn->qstr($item_data['BillingCountry']) ) );
+ $post_fields['ZIP'] = $item_data['BillingZip'];
+ $post_fields['INVNUM'] = $item_data['OrderNumber'];
+ $post_fields['CUSTOM'] = $item_data['PortalUserId'];
+
+/*
+ $post_fields['x_encap_char'] = $gw_params['encapsulate_char'];
+ $post_fields['x_relay_response'] = 'False';
+ $post_fields['x_type'] = $gw_params['shipping_control'] == SHIPPING_CONTROL_PREAUTH ? 'AUTH_ONLY' : 'AUTH_CAPTURE';
+ $post_fields['x_login'] = $gw_params['user_account'];
+ $post_fields['x_tran_key'] = $gw_params['transaction_key'];
+
+ if( $this->IsTestMode() ) $post_fields['x_test_request'] = 'True';
+
+ // -- Payment Details --
+ $names = explode(' ', $item_data['PaymentNameOnCard'], 2);
+ $post_fields['x_first_name'] = getArrayValue($names, 0);
+ $post_fields['x_last_name'] = getArrayValue($names, 1);
+ $post_fields['x_amount'] = sprintf('%.2f', $item_data['TotalAmount']);
+ $post_fields['x_company'] = $item_data['BillingCompany'];
+ $post_fields['x_card_num'] = $item_data['PaymentAccount'];
+ $post_fields['x_card_code'] = $item_data['PaymentCVV2'];
+ $post_fields['x_exp_date'] = $item_data['PaymentCCExpDate'];
+ $post_fields['x_address'] = $item_data['BillingAddress1'].' '.$item_data['BillingAddress2'];
+ $post_fields['x_city'] = $item_data['BillingCity'];
+ $post_fields['x_state'] = $item_data['BillingState'];
+ $post_fields['x_zip'] = $item_data['BillingZip'];
+
+ $recurring = getArrayValue($item_data, 'IsRecurringBilling') ? 'YES' : 'NO';
+ $post_fields['x_recurring_billing'] = $recurring;
+
+ $billing_email = $item_data['BillingEmail'];
+ if (!$billing_email) {
+ $billing_email = $this->Conn->GetOne(' SELECT Email FROM '.$this->Application->getUnitOption('u', 'TableName').'
+ WHERE PortalUserId = '.$this->Application->RecallVar('user_id'));
+ }
+ $post_fields['x_email'] = $billing_email;
+ $post_fields['x_phone'] = $item_data['BillingPhone'];
+ $sql = 'SELECT DestAbbr2 FROM '.TABLE_PREFIX.'StdDestinations WHERE DestAbbr = %s';
+ $post_fields['x_country'] = $this->Conn->GetOne( sprintf($sql, $this->Conn->qstr($item_data['BillingCountry']) ) );
+
+ $post_fields['x_cust_id'] = $item_data['PortalUserId'];
+ $post_fields['x_invoice_num'] = $item_data['OrderNumber'];
+ $post_fields['x_description'] = 'Invoice #'.$item_data['OrderNumber'];
+ $post_fields['x_email_customer'] = 'FALSE';
+*/
+// echo '<pre>';
+// print_r($post_fields);
+// exit;
+ $this->gw_responce = curl_post($gw_params['submit_url'], $post_fields);
+// echo $this->gw_responce;
+// exit;
+ $gw_responce = $this->parseGWResponce(null, $gw_params);
+ // gw_error_msg: $gw_response['responce_reason_text']
+ // gw_error_code: $gw_response['responce_reason_code']
+// echo '<pre>';
+// print_r($this->parsed_responce);
+// exit;
+ return (isset($gw_responce['ACK']) && (substr($gw_responce['ACK'], 0, 7) == 'Success')) ? true : false;
+ }
+
+ /**
+ * Perform SALE type transaction direct from php script wihtout redirecting to 3rd-party website
+ *
+ * @param Array $item_data
+ * @param Array $gw_params
+ * @return bool
+ */
+/*
+ function Charge($item_data, $gw_params)
+ {
+ $gw_responce = unserialize( $item_data['GWResult1'] );
+
+ if( $item_data['PortalUserId'] != $gw_responce['customer_id'] ) return false;
+
+ if( ( strtolower($gw_responce['transaction_type']) == 'auth_only') )
+ {
+ $post_fields = Array();
+ // -- Login Information --
+ $post_fields['x_version'] = '3.1';
+ $post_fields['x_delim_data'] = 'True';
+ $post_fields['x_encap_char'] = $gw_params['encapsulate_char'];
+ $post_fields['x_relay_response'] = 'False';
+ $post_fields['x_type'] = 'PRIOR_AUTH_CAPTURE'; // $gw_params['shipping_control'] == SHIPPING_CONTROL_PREAUTH ? 'PRIOR_AUTH_CAPTURE' : 'AUTH_CAPTURE'; // AUTH_CAPTURE not fully impletemnted/needed here
+ $post_fields['x_login'] = $gw_params['user_account'];
+ $post_fields['x_tran_key'] = $gw_params['transaction_key'];
+ $post_fields['x_trans_id'] = $gw_responce['transaction_id'];
+
+ if( $this->IsTestMode() ) $post_fields['x_test_request'] = 'True';
+
+ $this->gw_responce = curl_post($gw_params['submit_url'], $post_fields);
+ $gw_responce = $this->parseGWResponce(null, $gw_params);
+
+ // gw_error_msg: $gw_response['responce_reason_text']
+ // gw_error_code: $gw_response['responce_reason_code']
+ return (is_numeric($gw_responce['responce_code']) && $gw_responce['responce_code'] != 1 && !$this->IsTestMode()) ? false : true;
+ }
+ else
+ {
+ return true;
+ }
+ }
+*/
+ /**
+ * Parse previosly saved gw responce into associative array
+ *
+ * @param string $gw_responce
+ * @param Array $gw_params
+ * @return Array
+ */
+ function parseGWResponce($gw_responce = null, $gw_params)
+ {
+ if( !isset($gw_responce) ) $gw_responce = $this->gw_responce;
+
+ if ($this->Application->isDebugMode()) {
+ $this->Application->Debugger->appendHTML('Curl Error #'.$GLOBALS['curl_errorno'].'; Error Message: '.$GLOBALS['curl_error']);
+
+ $this->Application->Debugger->appendHTML('Authorize.Net Responce:');
+ $this->Application->Debugger->dumpVars($gw_responce);
+ }
+
+ $a_responce = explode('&', $gw_responce);
+ $ret = Array();
+ foreach($a_responce as $field)
+ {
+ $pos = strpos($field, '=');
+ if ($pos) {
+ $ret[substr($field, 0, $pos)] = urldecode(substr($field, $pos + 1));
+ }
+ }
+ $this->parsed_responce = $ret;
+// $ret['unparsed'] = $gw_responce;
+ return $ret;
+ }
+
+ function getGWResponce()
+ {
+ return serialize($this->parsed_responce);
+ }
+
+ function getErrorMsg()
+ {
+ return $this->parsed_responce['L_LONGMESSAGE0'];
+ }
+
+ function GetTestCCNumbers()
+ {
+ return array('370000000000002', '6011000000000012', '5424000000000015', '4007000000027', '4222222222222');
+ }
+ }
+
+?>
\ No newline at end of file
Property changes on: branches/RC/in-commerce/units/gateways/gw_classes/paypal_direct.php
___________________________________________________________________
Added: cvs2svn:cvs-rev
## -0,0 +1 ##
+1.1.2.1
\ No newline at end of property
Event Timeline
Log In to Comment