Jump to content
Sign in to follow this  
quicklyshop

Ebay auction manager for OSCOMMERCE

Recommended Posts

Ah the good old freedom of speech

 

The osCommerce team have a few issues with the contributions which we are discussing with the author.

 

The contribution will return soon.

 

 

--------------------

 

Mark Evans

osCommerce Developer

 

Are we still waiting (on month no. 5)?

 

Cornelius


dog1.jpg Who let the dog out ?!!! Newer trust a smiling dog!

Share this post


Link to post
Share on other sites
Ah the good old freedom of speech

 

The osCommerce team have a few issues with the contributions which we are discussing with the author.

 

The contribution will return soon.

 

 

--------------------

 

Mark Evans

osCommerce Developer

 

Are we still waiting (on month no. 5)?

 

Cornelius

Hi,

 

I am working for a webhosting company.

I have installed the Current Auctions contribution . I have a doubt

 

This contribution grabs the html page from the ebay site by calling the url of the page on ebay

 

http://cgi6.ebay.com/ws/eBayISAPI.dll?MfcI...036;sort&rows=0

 

It then parses the html and displays the results.

 

I would like to know if this is legal I mean calling a page of ebay ,grabbing its html content and displaying it on your site. Are there any legal issues involved in doing this?. The reason I am asking this is because Ebay has its own paid API's which a person has to purchase if he has to use those API's to list the auction items on his site.

 

Kindly let me know as soon as possible cause this is very important and my client doesnt want any legal hassles later...

Please help me urgently...

Share this post


Link to post
Share on other sites

Hello

 

I share your doubt - but the right place to put the question must be eBay - if they don't care OK - if they don't approve the way this contrib. grab data this contrib. has to be removed because it's a violation against eBay copyrights.

 

Sincerely

Cornelius


dog1.jpg Who let the dog out ?!!! Newer trust a smiling dog!

Share this post


Link to post
Share on other sites

An alternative to using the current auctions contribution is simply to use the eBay merchant kit. It does essentially the same thing as this, but is approved by eBay. I am considering updating current auctions to use this method at some point.

 

As for your question about legality, current auctions is technically against eBay policy. But, it is widely used, so it appears at least that eBay is not pursuing the issue. This may be simply because they have no way of proving that the eBay seller is the one pulling the data. On the other hand, when you use scraping to perform activities such as getting your "My eBay" info, then eBay has your user ID and password information. You have established your identity, and it would make it easier for eBay to suspend accounts that do this. Whether they *have* taken this action, I do not know...

Share this post


Link to post
Share on other sites

Im installing Ebay Auction Manager for my store and I'm stuck on the last bit. Im using PROTX payments and I cant work out where the following should go in the payment php file for protx

 

******* NOTE FOR PayPal IPN v0.981 for Milestone 2 USERS ***********
********************************************************************

This is to change the auction from Not Checked Out to Checked Out state automatically AND to set the order ID on the auction sales transaction.


/catalog/checkout_paypalipn.php
===================================================

AFTER (about line 221):

 $payment_modules->after_process();

ADD:

 //+++AUCTIONBLOX.COM
 $cart->reset(true, $insert_id);
 //+++AUCTIONBLOX.COM



******* NOTE FOR USERS of other payment modules ***********

SEARCH IN YOUR PAYMENT MODULES FOR:

 $payment_modules->after_process();


Add ONE OF THE FOLLOWING Calls:

1.  If you have access to the order ID, then add the following:
---------------------------------------------------------------

 //+++AUCTIONBLOX.COM
 $cart->reset(true, $order_id);  // WHERE $order_id == the order ID
 //+++AUCTIONBLOX.COM


2.  If you do NOT have access to the order ID, then add the following (or verify that it already exists):
---------------------------------------------------------------

 //+++AUCTIONBLOX.COM
 // This will set the state of the auction sale to checked out, but DOES NOT set
 // the order ID on the auction sale.  This is only necessary to be able to click
 // the "View Order" link in the Sales:Checked Out" screen, but it is not that
 // important, because you can manually go to the orders screen and see the order.

 $cart->reset(true);  

 //+++AUCTIONBLOX.COM

 

Heres my protx payment form

<?php
/*
 $Id$

 osCommerce, Open Source E-Commerce Solutions
 http://www.oscommerce.com

 Copyright (c) 2004 osCommerce

 Released under the GNU General Public License
*/

 class protx_form {
   var $code, $title, $description, $enabled;

// class constructor
   function protx_form() {
     $this->code = 'protx_form';
     $this->title = MODULE_PAYMENT_PROTX_FORM_TEXT_TITLE;
     $this->description = MODULE_PAYMENT_PROTX_FORM_TEXT_DESCRIPTION;
     $this->sort_order = MODULE_PAYMENT_PROTX_FORM_SORT_ORDER;
     $this->enabled = ((MODULE_PAYMENT_PROTX_FORM_STATUS == 'True') ? true : false);

     if ((int)MODULE_PAYMENT_PROTX_FORM_ORDER_STATUS_ID > 0) {
       $this->order_status = MODULE_PAYMENT_PROTX_FORM_ORDER_STATUS_ID;
     }

     if (is_object($order)) $this->update_status();

     if (MODULE_PAYMENT_PROTX_FORM_TEST_STATUS == 'true') {
       $this->form_action_url = 'https://ukvpstest.protx.com/vps2form/submit.asp';
     } else {
       $this->form_action_url = 'https://ukvps.protx.com/vps2form/submit.asp';
     }
   }

// class methods
   function update_status() {
     global $order;

     if ( ($this->enabled == true) && ((int)MODULE_PAYMENT_PROTX_FORM_ZONE > 0) ) {
       $check_flag = false;
       $check_query = tep_db_query("select zone_id from " . TABLE_ZONES_TO_GEO_ZONES . " where geo_zone_id = '" . MODULE_PAYMENT_PROTX_FORM_ZONE . "' and zone_country_id = '" . $order->billing['country']['id'] . "' order by zone_id");
       while ($check = tep_db_fetch_array($check_query)) {
         if ($check['zone_id'] < 1) {
           $check_flag = true;
           break;
         } elseif ($check['zone_id'] == $order->billing['zone_id']) {
           $check_flag = true;
           break;
         }
       }

       if ($check_flag == false) {
         $this->enabled = false;
       }
     }
   }

   function javascript_validation() {
     return false;
   }

   function simpleXor($InString, $Key) {
     $KeyList = array();
     $output = "";

     for($i = 0; $i < strlen($Key); $i++){
       $KeyList[$i] = ord(substr($Key, $i, 1));
     }

     for($i = 0; $i < strlen($InString); $i++) {
       $output.= chr(ord(substr($InString, $i, 1)) ^ ($KeyList[$i % strlen($Key)]));
     }

     return $output;
   }

   function getToken($thisString) {

     $Tokens = array("Status","StatusDetail","VendorTxCode","VPSTxID","TxAuthNo","Amount","AVSCV2");

     $output = array();
     $resultArray = array();

     for ($i = count($Tokens)-1; $i >= 0; $i--){
       $start = strpos($thisString, $Tokens[$i]);
       if ($start !== false){
         $resultArray[$i]->start = $start;
         $resultArray[$i]->token = $Tokens[$i];
       }
     }

     sort($resultArray);

     for ($i = 0; $i<count($resultArray); $i++){
       $valueStart = $resultArray[$i]->start + strlen($resultArray[$i]->token) + 1;
       if ($i==(count($resultArray)-1)) {
         $output[$resultArray[$i]->token] = substr($thisString, $valueStart);
       } else {
         $valueLength = $resultArray[$i+1]->start - $resultArray[$i]->start - strlen($resultArray[$i]->token) - 2;
         $output[$resultArray[$i]->token] = substr($thisString, $valueStart, $valueLength);
       }
     }

     return $output;
   }

   function selection() {
     return array('id' => $this->code,
                  'module' => $this->title);
   }

   function pre_confirmation_check() {
     return false;
   }

   function confirmation() {
     return false;
   }

   function process_button() {
     global $order, $currencies, $currency;

     switch (MODULE_PAYMENT_PROTX_FORM_CURRENCY) {
       case 'Default Currency':
         $protx_currency = DEFAULT_CURRENCY;
         break;
       case 'Any Currency':
       default:
         $protx_currency = $currency;
         break;
     }

     $plain = "VendorTxCode=" . date('Ymdhis') . "&";
     $plain .= "Amount=" . number_format($order->info['total'] * $currencies->get_value($protx_currency), $currencies->get_decimal_places($protx_currency)) . "&";
     $plain .= "Currency=" . $protx_currency . "&";
     $plain .= "Description='" . STORE_NAME . "'&";
     $plain .= "SuccessURL=" . tep_href_link(FILENAME_CHECKOUT_PROCESS, '', 'SSL', true) . "&";
     $plain .= "FailureURL=" . tep_href_link(FILENAME_CHECKOUT_PROCESS, '', 'SSL', true) . "&";
     $plain .= "CustomerName=" . $order->billing['firstname'] . ' ' . $order->billing['lastname'] . "&";
     $plain .= "CustomerEmail=" . $order->customer['email_address'] . "&";
     $plain .= "VendorEMail=" . STORE_OWNER_EMAIL_ADDRESS . "&";

     $delivery_address = $order->delivery['street_address'];
     if (ACCOUNT_SUBURB == 'true') {
       $delivery_address .= ',' . $order->delivery['suburb'];
     }

     $delivery_address .= ',' . $order->delivery['city'];

     if (ACCOUNT_STATE == 'true') {
       $delivery_address .= ',' . $order->delivery['state'];
     }

     $delivery_address .= ',' . $order->delivery['country']['title'];

     $billing_address = $order->billing['street_address'];

     if (ACCOUNT_SUBURB == 'true') {
       $billing_address .= ',' . $order->billing['suburb'];
     }

     $billing_address .= ',' . $order->billing['city'];

     if (ACCOUNT_STATE == 'true') {
       $billing_address .= ',' . $order->billing['state'];
     }

     $billing_address .= ',' . $order->billing['country']['title'];

     $plain .= "DeliveryAddress=" . $delivery_address . "&";
     $plain .= "DeliveryPostCode=" . $order->delivery['postcode'] . "&";
     $plain .= "BillingAddress=" . $billing_address . "&";
     $plain .= "BillingPostCode=" . $order->billing['postcode'] . "";

     $crypt = base64_encode($this->SimpleXor($plain, MODULE_PAYMENT_PROTX_FORM_PASSWORD));

//// PA Evers Added for Pre-Authorisation selection
   if (MODULE_PAYMENT_PROTX_FORM_PREAUTH == 'true') {
       $transaction_type = 'PREAUTH';
   } else {
       $transaction_type = 'PAYMENT';
   }
//// EOF: PA Evers Added for Pre-Authorisation selection

     $process_button_string = tep_draw_hidden_field('VPSProtocol', '2.21') .
//                             tep_draw_hidden_field('TxType', 'PAYMENT') . // CHANGED FOR PRE-AUTH BELOW
                              tep_draw_hidden_field('TxType', $transaction_type) .
                              tep_draw_hidden_field('Vendor', MODULE_PAYMENT_PROTX_FORM_VENDOR_NAME) .
                              tep_draw_hidden_field('Crypt', $crypt);

     return $process_button_string;
   }

   function before_process() {
     global $HTTP_POST_VARS, $crypt;

     $Decoded = $this->SimpleXor(base64_decode($crypt),MODULE_PAYMENT_PROTX_FORM_PASSWORD);
     $values = $this->getToken($Decoded);

     $Status = $values['Status'];
     $StatusDetail = $values['StatusDetail'];

     if ($Status != 'OK') {
       tep_redirect(tep_href_link(FILENAME_CHECKOUT_PAYMENT, tep_session_name() . '=' . $HTTP_POST_VARS[tep_session_name()] . '&error_message=' . urlencode($StatusDetail), 'SSL', false, false));
     }
   }

   function after_process() {
     return false;
   }

   function get_error() {
     global $HTTP_GET_VARS;

     if (isset($HTTP_GET_VARS['message']) && (strlen($HTTP_GET_VARS['message']) > 0)) {
       $error = stripslashes(urldecode($HTTP_GET_VARS['message']));
     } else {
       $error = MODULE_PAYMENT_PROTX_FORM_TEXT_ERROR_MESSAGE;
     }

     return array('title' => MODULE_PAYMENT_PROTX_FORM_TEXT_ERROR,
                  'error' => $error);
   }

   function check() {
     if (!isset($this->_check)) {
       $check_query = tep_db_query("select configuration_value from " . TABLE_CONFIGURATION . " where configuration_key = 'MODULE_PAYMENT_PROTX_FORM_STATUS'");
       $this->_check = tep_db_num_rows($check_query);
     }
     return $this->_check;
   }

   function install() {
     tep_db_query("insert into " . TABLE_CONFIGURATION . " (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, set_function, date_added) values ('Enable Protx Form Module', 'MODULE_PAYMENT_PROTX_FORM_STATUS', 'True', 'Do you want to accept Protx Form payments?', '6', '1', 'tep_cfg_select_option(array(\'True\', \'False\'), ', now())");
     tep_db_query("insert into " . TABLE_CONFIGURATION . " (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, date_added) values ('Merchant ID', 'MODULE_PAYMENT_PROTX_FORM_VENDOR_NAME', 'TestVendor', 'Vendor Name to use with the Protx Form service', '6', '2', now())");
     tep_db_query("insert into " . TABLE_CONFIGURATION . " (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, date_added) values ('Password', 'MODULE_PAYMENT_PROTX_FORM_PASSWORD', 'testvendor', 'Password to use with the Protx Form service', '6', '2', now())");
     tep_db_query("insert into " . TABLE_CONFIGURATION . " (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, set_function, date_added) values ('Transaction Currency', 'MODULE_PAYMENT_PROTX_FORM_CURRENCY', 'Any Currency', 'The currency to use for credit card transactions', '6', '3', 'tep_cfg_select_option(array(\'Any Currency\', \'Default Currency\'), ', now())");
     tep_db_query("insert into " . TABLE_CONFIGURATION . " (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, date_added) values ('Sort order of display.', 'MODULE_PAYMENT_PROTX_FORM_SORT_ORDER', '0', 'Sort order of display. Lowest is displayed first.', '6', '0', now())");
     tep_db_query("insert into " . TABLE_CONFIGURATION . " (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, use_function, set_function, date_added) values ('Payment Zone', 'MODULE_PAYMENT_PROTX_FORM_ZONE', '0', 'If a zone is selected, only enable this payment method for that zone.', '6', '2', 'tep_get_zone_class_title', 'tep_cfg_pull_down_zone_classes(', now())");
     tep_db_query("insert into " . TABLE_CONFIGURATION . " (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, set_function, use_function, date_added) values ('Set Order Status', 'MODULE_PAYMENT_PROTX_FORM_ORDER_STATUS_ID', '0', 'Set the status of orders made with this payment module to this value', '6', '0', 'tep_cfg_pull_down_order_statuses(', 'tep_get_order_status_name', now())");
     tep_db_query("insert into " . TABLE_CONFIGURATION . " (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, set_function, date_added) values ('Test Mode', 'MODULE_PAYMENT_PROTX_FORM_TEST_STATUS', 'true', 'Use Test Mode?', '6', '4', 'tep_cfg_select_option(array(\'true\', \'false\'), ', now())");

//// PA Evers Added for Pre-Authorisation selection
     tep_db_query("insert into " . TABLE_CONFIGURATION . " (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, set_function, date_added) values ('Use Pre-Authorisation', 'MODULE_PAYMENT_PROTX_FORM_PREAUTH', 'true', 'Use Pre-Authorisation for all transactions?', '6', '5', 'tep_cfg_select_option(array(\'true\', \'false\'), ', now())");
//// EOF: PA Evers Added for Pre-Authorisation selection
   }

   function remove() {
     $keys = '';
     $keys_array = $this->keys();
     for ($i=0; $i<sizeof($keys_array); $i++) {
       $keys .= "'" . $keys_array[$i] . "',";
     }
     $keys = substr($keys, 0, -1);

     tep_db_query("delete from " . TABLE_CONFIGURATION . " where configuration_key in (" . $keys . ")");
   }

   function keys() {
     return array('MODULE_PAYMENT_PROTX_FORM_STATUS', 'MODULE_PAYMENT_PROTX_FORM_VENDOR_NAME', 'MODULE_PAYMENT_PROTX_FORM_PASSWORD', 'MODULE_PAYMENT_PROTX_FORM_CURRENCY', 'MODULE_PAYMENT_PROTX_FORM_ZONE', 'MODULE_PAYMENT_PROTX_FORM_ORDER_STATUS_ID', 'MODULE_PAYMENT_PROTX_FORM_SORT_ORDER', 'MODULE_PAYMENT_PROTX_FORM_TEST_STATUS', 'MODULE_PAYMENT_PROTX_FORM_PREAUTH');
   }
 }
?>

 

Anyone know what and where i should add to my payment form???????

Share this post


Link to post
Share on other sites

I'm not convinced you have to add it to the payment module at all. It depends on whether your payment module works like PayPal where it processes payment AFTER the order is placed. If your payment module works like the other credit card modules where the payment is part of the order process, then nothing need be done. FWIW, the only thing that particular statement does is mark the auction sale as "Checked Out". So, insert a test sale and pay for it using your payment module. After you checkout, if the sale was moved from "Not Checked Out" to "Checked Out", then you are all set.

Share this post


Link to post
Share on other sites

why does it have to be a Ebay auction,why don't you just give Ebay a miss and set up

oscommerce auctions,you have plenty of members to make it pay,why give money to Ebay when you can do it your selfs,

Share this post


Link to post
Share on other sites

Hello everyone,

I think there may be a bit of confusion here. Let me explain. The "Current Auctions" contrib has no legallity issues it just simply parses html to show your auctions. It is just simple html parsing, nothing criminal about it.

 

The "Automated Auction Process" contrib could be considered in the gray area because it does involve loging into your ebay account and then parsing data.

It is the logging in part that is considered "gray".

 

The main reason I developed these contributions is to prove it could be done without paying a million dollars to the big API crook (ebay). Html parsing used with cURL is a very powerful tool and can be used in many ways!!

 

Hope that helps.

:D :D


REDHAT'S OFF TO THE BEST E-COMMERCE SOLUTION AROUND!

Share this post


Link to post
Share on other sites
why does it have to be a Ebay auction,why don't you just give Ebay a miss and set up oscommerce auctions

 

This has been discussed many times -- why pay eBay fees? Bottomline, people list on eBay to drive traffic to their site. There is no better marketing engine than eBay.

Share this post


Link to post
Share on other sites
This has been discussed many times -- why pay eBay fees? Bottomline, people list on eBay to drive traffic to their site. There is no better marketing engine than eBay.

 

Is there currently any support for this contrib?

Share this post


Link to post
Share on other sites
This has been discussed many times -- why pay eBay fees? Bottomline, people list on eBay to drive traffic to their site. There is no better marketing engine than eBay.

 

I agree with your statement, but I don't know why having driven hundreds of viewers per week to my site has resulted in absolutely no sales from that. :(

 

I know my site needs some improvements, but I have plent of low priced items on it, and there seems to be no benefit to date. Any suggestions on how you are benefitting from this??

 

Thanks

Share this post


Link to post
Share on other sites

Is anybody gone through the motions of configuring the Ebay Auction Manager to use their own api? If you don't mind sharing, I'd really appreciate it. I've already got the Ebay api license - just the free one for now, but I can upgrade that once I have something in place that actually requires it.

----------------------

williamgeorge

Search Engine Optimization

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this  

×