Anbindung an Afterbuy unzureichend

Du hast ein Problem gefunden und weißt nicht genau wo es hinpasst...
Antworten
xtsell
Beiträge: 26
Registriert: So 17. Apr 2011, 21:52

Anbindung an Afterbuy unzureichend

Beitrag von xtsell » So 1. Jul 2012, 20:55

Ich bin gerade dabei, den Shop an Afterbuy anzudocken. Grundsätzlich funktioniert das zwar, aber es fehlt die Übergabe des Parameters "Kundenerkennung=1", damit Afterbuy bei Bestellungen mit bereits vorhandener Mailadresse die passende Kundennummer zuordnen kann.

Ist eigentlich bekannt, ob jemand den Shop mit Afterbuy produktiv nutzt? Kann ich mir irgendwie nicht vorstellen - jedenfalls nicht mit der mitgelieferten afterbuy.php.

Wurde die komplett neu geschrieben? Weder die xtc Urversion noch eine der angepassten (z.b. von F.T.Store) haben Ähnlichkeit mit der Webs-Fassung.

Xantiva
Beiträge: 948
Registriert: Mo 10. Mai 2010, 16:26
Shop Version: 1.0.10 [dev]
Kontaktdaten:

Re: Anbindung an Afterbuy unzureichend

Beitrag von Xantiva » So 1. Jul 2012, 21:49

Ich habe mir die Klasse in der Quellcodeverwaltung angesehen. Im März/April 2009 wurde die von gunah umgeschrieben ...

Reicht es denn, den einen Parameter zu setzen? (Kundenerkennung=1)

Ciao,
Mike
Mein Shop: http://www.basteln-selbermachen.de

xtsell
Beiträge: 26
Registriert: So 17. Apr 2011, 21:52

Re: Anbindung an Afterbuy unzureichend

Beitrag von xtsell » So 1. Jul 2012, 22:19

Ich muss das mal mit ein paar Testbestellungen ausprobieren. Da sind ja auch noch andere Sachen, die nicht ganz einfach sind (Nachnahme, Rabatt, Gutschein/Kupon, Zahlartenrabatte). Oder die zweite Adresszeile (billing_suburb bzw. delivery_suburb). Mit den Ländercodes soll es in der Vergangenheit auch Probleme gegeben haben.

Eine Erkennung, ob die Lieferanschrift nicht mit der Rechnungsanschrift identisch ist, scheint auch zu fehlen.

Jetzt erst beim näheren Durchsehen fällt mir auf, dass auch die Art der Artikelerkennung nicht an Afterbuy übergeben wird. Das ist sogar noch schlimmer als die fehlende Kundenerkennung, weil damit Verkäufe nicht bei Afterbuy von den Stammartikeln abgezogen werden.

Ob bei den dafür qualifizierten Kundengruppen Nettopreise übergeben werden, kann ich auch nicht erkennen (spielt für mich auch keine Rolle, aber es sollte möglich sein).

Etwas erstaunt bin ich darüber, dass die interne Afterbuy-Kennung für Zahlarten zugewiesen und übermittelt wird. Das fehlt in allen anderen Fassungen, die ich gesehen habe und ist sehr hilfreich.

Ich werde mich wohl oder übel daran machen müssen, die afterbuy.php an einigen Stellen zu überarbeiten bzw. zu erweitern. Orientiert an der eigenen Praxis, die bis auf steuerliche Gegebenheiten schon so einiges abdeckt. Mit ein paar Zeilen Erweiterung ist es jedenfalls nicht getan, wenn die Fassung sich in der Praxis bewähren soll.

Xantiva
Beiträge: 948
Registriert: Mo 10. Mai 2010, 16:26
Shop Version: 1.0.10 [dev]
Kontaktdaten:

Re: Anbindung an Afterbuy unzureichend

Beitrag von Xantiva » Mo 2. Jul 2012, 16:35

Wir hatten das Thema schon mal mit den Wawi - Schnittstellen aufgegriffen. Aber eine Nachfrage nach Afterbuy gab es meines Wissens bisher nicht.

Aber Deiner Verbesserungen können wir gerne mit übernehmen ;)

Ciao,
Mike
Mein Shop: http://www.basteln-selbermachen.de

xtsell
Beiträge: 26
Registriert: So 17. Apr 2011, 21:52

Re: Anbindung an Afterbuy unzureichend

Beitrag von xtsell » Di 17. Jul 2012, 09:47

So - hier jetzt mal eine Fassung, die folgende Sachen abdeckt:
- Übergabe an api.afterbuy.de
- Übergabe der 2. Adresszeile
- Kundenerkennung über die Mailadresse
- Lieferanschrift=0 setzen, wenn Liefer- und Rechnungsadresse identisch
- Stammartikelerkennung + setzen ArtikelStammID_x auf products_model
- Übergabe, von welchem Bestand abgezogen werden soll (shop/auktion)
- Übergabe als bezahlt für PayPal (mit zusätzlichem Warnhinweis in VMemo + Markierung)
- ot_payment integriert (Zahlartenrabatt/-aufschlag)
- $error statt $result bei Fehlermeldung durch Afterbuy ausgeben
- AID und UID von Afterbuy übernehmen und mit Kundennummer in orders_ident_key speichern
- CheckVID=1 zur Vermeidung doppelter Einträge bei Afterbuy

Die ganzen Sachen mit Steuer und Ausland habe ich noch nicht prüfen können. Da fehlt vermutlich noch einiges.

Außerdem könnte man sich die Umkodierung auf ISO-8859-1 sparen, weil Afterbuy UTF8 verarbeiten kann (andere URL-Adresse). Statt iconv() sollte urlencode() reichen.

Code: Alles auswählen

<?php
/** ----------------------------------------------------------------------------
 **
 *F afterbuy.php
 **
 ** WEB-Shop Software http://www.webs.de
 **
 ** ----------------------------------------------------------------------------
 ** based on:
 **  (c) 2000-2001 The Exchange Project (earlier name of osCommerce)
 **  (c) 2002-2003 osCommerce; www.oscommerce.com
 **  (c) 2003 nextcommerce; www.nextcommerce.org
 **  (c) 2006 XT-Commerce
 **
 ** Released under the GNU General Public License
 **
 ** @author Mathis Klooß <webs@gunah.eu>
 ** @version $Id: afterbuy.php 1772 2010-12-30 13:29:50Z joerg $
 ** @copyright 2010 WEB-Shop Software http://www.webs.de/
 **
 ** changes (xtsell.de):
 ** 2012-07-07 changed $ShopInterface to 'api.afterbuy.de', changed $ShopInterface_path to '/afterbuy/ShopInterface.aspx'
 ** 2012-07-08 added billing_suburb, delivery suburb to query and pass to Kstrasse2, KLstrasse2
 ** 2012-07-08 added Kundenerkennung
 ** 2012-07-08 added test for billing address equals delivery address and set Lieferanschrift=0 if equal
 ** 2012-07-08 added Artikelerkennung, Bestandart, set ArtikelStammID_x to products_model
 ** 2012-07-10 added SetPay=1 for ZahlartFID=5
 ** 2012-07-10 added handling for ot_payment
 ** 2012-07-10 use $error for error mail
 ** 2012-07-11 extract AID and UID, store in orders_ident_key
 ** 2012-07-11 added CheckVID=1
 ** 2012-07-14 set ZahlartFID=1 for eustandardtransfer
 ** 2012-07-15 set VMemo= and MarkierungID= for SetPay
 **
 ** ------------------------------------------------------------------------- */
class xtc_afterbuy_functions {
	var $order_id;
	var $PartnerID = AFTERBUY_PARTNERID;
	var $PartnerPass = AFTERBUY_PARTNERPASS;
	var $UserID = AFTERBUY_USERID;
	var $order_status = AFTERBUY_ORDERSTATUS;
	var $ShopInterface = 'api.afterbuy.de';
	var $ShopInterface_path = '/afterbuy/ShopInterface.aspx';
	var $user_agent = 'Mozilla/5.0 (compatible, cURL, PHP5) - Afterbuy API';

   /** ---------------------------------------------------------------------------------
   *
   *F xtc_afterbuy_functions::xtc_afterbuy_functions
   *
   * @param int $order_id
   */
	function xtc_afterbuy_functions($order_id) {
		require_once (DIR_FS_INC.'xtc_product_link.inc.php');
		$this->order_id = $order_id;
        $this->template_path_afterbuy = DIR_FS_CATALOG . 'templates/' . CURRENT_TEMPLATE . '/afterbuy';
        $this->afterbuy_crt = $this->template_path_afterbuy . '/curl-auth.pem';
		if(AFTERBUY_DEALERS) {
			$this->dealers = explode("," , AFTERBUY_DEALERS);
		}
		if(AFTERBUY_IGNORE_GROUPE) {
			$this->ignore = explode("," , AFTERBUY_IGNORE_GROUPE);
		}
	}

  /** ---------------------------------------------------------------------------------
   *
   *F xtc_afterbuy_functions::process_order
   *
   */
	function process_order() {
		if(	@!array_key_exists($_SESSION['customers_status']['customers_status_id'], $this->ignore) ) {
			$nr = 0;
			$anzahl = 0;
			// get order-data
			$o_query = xtc_db_query("SELECT	customers_id,
											billing_gender,
											billing_company,
											billing_firstname,
											billing_lastname,
											billing_street_address,
											billing_suburb,
											billing_postcode,
											billing_city,
											customers_telephone AS billing_telephone,
											customers_email_address,
											billing_country_iso_code_2,
											delivery_gender,
											delivery_company,
											delivery_firstname,
											delivery_lastname,
											delivery_street_address,
											delivery_suburb,
											delivery_postcode,
											delivery_city,
											delivery_country_iso_code_2,
											payment_method,
											shipping_method,
											orders_status,
											comments
									FROM ".TABLE_ORDERS."
									WHERE orders_id='".$this->order_id."'
									LIMIT 1;");
			$oData = xtc_db_fetch_array($o_query);


			$afterbuy = array();
			// Start Auth
			$afterbuy[] = "Action=new";
			$afterbuy[] = "PartnerID=".$this->iconv($this->PartnerID);
			$afterbuy[] = "PartnerPass=".$this->iconv($this->PartnerPass);
			$afterbuy[] = "UserID=".$this->iconv($this->UserID);

			// Kundenerkennung (0=Kbenutzername, 1=Kemail, 2=EKundenNr)
			$afterbuy[] = "Kundenerkennung=1";
			
			// User IDs
			$afterbuy[] = "Kbenutzername=".$this->iconv($oData['customers_id'])."_XTC-ORDER_".$this->iconv($this->order_id);
			$afterbuy[] = "VID=".$this->iconv($this->order_id);
			$afterbuy[] = "CheckVID=1";

			// billing Address
			$afterbuy[] = "KVorname=".$this->iconv($oData['billing_firstname']);
			$afterbuy[] = "KNachname=".$this->iconv($oData['billing_lastname']);
			$afterbuy[] = "KStrasse=".$this->iconv($oData['billing_street_address']);
			$afterbuy[] = "KStrasse2=".$this->iconv($oData['billing_suburb']);
			$afterbuy[] = "KPLZ=".$this->iconv($oData['billing_postcode']);
			$afterbuy[] = "KOrt=".$this->iconv($oData['billing_city']);
			$afterbuy[] = "Kemail=".$this->iconv($oData['customers_email_address']);
			$afterbuy[] = "KLand=".$this->iconv($oData['billing_country_iso_code_2']);
			if($oData['billing_company']) {
				$afterbuy[] = "KFirma=".$this->iconv($oData['billing_company']);
			}
			if($oData['billing_gender']) {
				switch($oData['billing_gender']) {
					case 'm':
						$oData['billing_gender'] = 'Herr';
					break;
					default:
						$oData['billing_gender'] = 'Frau';
				}
				$afterbuy[] = "Kanrede=".$this->iconv($oData['billing_gender']);
			}
			if($oData['billing_telephone']) {
				$afterbuy[] = "Ktelefon=".$this->iconv($oData['billing_telephone']);
			}

			// check for billing_address equals delivery_address
			if(	($oData['billing_company'] == $oData['delivery_company']) &&
					($oData['billing_firstname'] == $oData['delivery_firstname']) &&
					($oData['billing_lastname'] == $oData['delivery_lastname']) &&
					($oData['billing_street_address'] == $oData['delivery_street_address']) &&
					($oData['billing_suburb'] == $oData['delivery_suburb']) &&
					($oData['billing_postcode'] == $oData['delivery_postcode']) &&
					($oData['billing_city'] == $oData['delivery_city']) &&
					($oData['billing_country_iso_code_2'] == $oData['delivery_country_iso_code_2'])) {
				$afterbuy[] = "Lieferanschrift=0";
			} else {
				$afterbuy[] = "Lieferanschrift=1";
				// Delivery Address
				$afterbuy[] = "KLFirma=".$this->iconv($oData['delivery_company']);
				$afterbuy[] = "KLVorname=".$this->iconv($oData['delivery_firstname']);
				$afterbuy[] = "KLNachname=".$this->iconv($oData['delivery_lastname']);
				$afterbuy[] = "KLStrasse=".$this->iconv($oData['delivery_street_address']);
				$afterbuy[] = "KLStrasse2=".$this->iconv($oData['delivery_suburb']);
				$afterbuy[] = "KLPLZ=".$this->iconv($oData['delivery_postcode']);
				$afterbuy[] = "KLOrt=".$this->iconv($oData['delivery_city']);
				$afterbuy[] = "KLLand=".$this->iconv($oData['delivery_country_iso_code_2']);
			}

			// Artikelerkennung (0 = ProduktID, 1 = Artikelnummer, 2 = externe Artikelnummer, 13 = Hersteller EAN
			$afterbuy[] = "Artikelerkennung=0";
			
			// Bestandart (auktion/shop)
			$afterbuy[] = "Bestandart=shop";
			
			// products_data
			// get products related to order
			$p_query = xtc_db_query("SELECT products_model,
											products_name,
											products_id,
											products_tax,
											products_price,
											products_quantity
									FROM ".TABLE_ORDERS_PRODUCTS."
									WHERE orders_id='".$this->order_id."'");
			/*

			*/
			$p_count = xtc_db_num_rows($p_query);
			while ($pDATA = xtc_db_fetch_array($p_query)) {
				$nr ++;
				if ( empty($pDATA['products_model']) ) {
					$pDATA['products_model'] = $pDATA['products_id'];
				}
				$afterbuy[] = "Artikelnr_".$nr."=".$pDATA['products_model'];
				$afterbuy[] = "ArtikelStammID_".$nr."=".$pDATA['products_model'];
				$afterbuy[] = "Artikelname_".$nr."=".$this->iconv( $pDATA['products_name']);

				if ($_SESSION['customers_status']['customers_status_show_price_tax'] == 0 &&
					$_SESSION['customers_status']['customers_status_add_tax_ot'] == 1) {
					$pDATA['products_price'] = $pDATA['products_price'] + $pDATA['products_tax'];
				}
				if ($_SESSION['customers_status']['customers_status_show_price_tax'] == 0 &&
					$_SESSION['customers_status']['customers_status_add_tax_ot'] == 0) {
					$pDATA['products_tax'] = 0;
				}
				$price = $this->currency( $pDATA['products_price'] );
				$tax = $this->currency( $pDATA['products_tax']);
				$afterbuy[] = "ArtikelEPreis_".$this->iconv($nr)."=".$this->iconv($price);
				$afterbuy[] = "ArtikelMwst_".$this->iconv($nr)."=".$this->iconv($tax);
				$afterbuy[] = "ArtikelMenge_".$this->iconv($nr)."=".$this->iconv($pDATA['products_quantity']);
				$url = $this->url('product_info.php',xtc_product_link($pDATA['products_id'],$pDATA['products_name']));
				$afterbuy[] = "ArtikelLink_".$this->iconv($nr)."=".$this->iconv($url);

				$a_query = xtc_db_query("SELECT products_options_values,
												products_options
										FROM ".TABLE_ORDERS_PRODUCTS_ATTRIBUTES."
										WHERE orders_id='".$this->order_id."'
											AND orders_products_id='".$pDATA['orders_products_id']."'");
				$options = array();
				while ($aDATA = xtc_db_fetch_array($a_query)) {
						$options[] = $aDATA['products_options'].":".$aDATA['products_options_values'];
				}
				if ($options) {
					$options = implode('|',$options);
					$afterbuy[] = "Attribute_".$this->iconv($nr)."=".$this->iconv($options);
				}
			}

			$order_total_query = xtc_db_query("SELECT
												  class,
												  value,
												  sort_order
												  FROM ".TABLE_ORDERS_TOTAL."
												  WHERE orders_id='".$this->order_id."'
												  ORDER BY sort_order ASC");

			while ($order_total_values = xtc_db_fetch_array($order_total_query)) {

				$order_total[] = array ('CLASS' => $order_total_values['class'], 'VALUE' => $order_total_values['value']);
				// shippingcosts
				if ($order_total_values['class'] == 'ot_shipping') {
					$vK = $this->currency( $order_total_values['value'] );
					$afterbuy[] = "Versandkosten=".$this->iconv($vK);
				}
				// nachnamegebuer
				if ($order_total_values['class'] == 'ot_cod_fee') {
					$cod_fee = $this->currency( $order_total_values['value']);
					$afterbuy[] = "Zahlartenaufschlag=".$this->iconv($cod_fee);
				}
				// payment fee
				if ($order_total_values['class'] == 'ot_payment') {
					$pay_fee = $this->currency( $order_total_values['value']);
					$afterbuy[] = "Zahlartenaufschlag=".$this->iconv($pay_fee);
				}
				// rabatt
				if ($order_total_values['class'] == 'ot_discount') {
					$nr ++;
					$p_count ++;
					$afterbuy[] = "Artikelnr_".$this->iconv($nr)."=99999998";
					$afterbuy[] = "Artikelname_".$this->iconv($nr)."=Rabatt";
					$discount = $this->currency( $order_total_values['value'] );
					$afterbuy[] = "ArtikelEPreis_".$this->iconv($nr)."=".$this->iconv($discount);
					$afterbuy[] = "ArtikelMwst_".$this->iconv($nr)."=".$this->iconv($tax);
					$afterbuy[] = "ArtikelMenge_".$this->iconv($nr)."=1";
				}
				// Gutschein
				if ($order_total_values['class'] == 'ot_gv') {
					$nr ++;
					$afterbuy[] = "Artikelnr_".$this->iconv($nr)."=99999997";
					$afterbuy[] = "Artikelname_".$this->iconv($nr)."=Gutschein";
					$gv = $this->currency( ($order_total_values['value'] * (-1)));
					$afterbuy[] = "ArtikelEPreis_".$this->iconv($nr)."=".$this->iconv($gv);
					$afterbuy[] = "ArtikelMwst_".$this->iconv($nr)."=0";
					$afterbuy[] = "ArtikelMenge_".$this->iconv($nr)."=1";
					$p_count ++;
				}
				if ($order_total_values['class'] == 'ot_coupon') {
					$nr ++;
					$afterbuy[] = "Artikelnr_".$this->iconv($nr)."=99999996";
					$afterbuy[] = "Artikelname_".$this->iconv($nr)."=Kupon";
					$coupon = $this->currency( ($order_total_values['value'] * (-1)));
					$afterbuy[] = "ArtikelEPreis_".$this->iconv($nr)."=".$this->iconv($coupon);
					$afterbuy[] = "ArtikelMwst_".$this->iconv($nr)."=0";
					$afterbuy[] = "ArtikelMenge_".$this->iconv($nr)."=1";
					$p_count ++;
				}
			}

			$afterbuy[] = "PosAnz=".$this->iconv($p_count);

			if($oData['comments']) {
				$afterbuy[] = "kommentar=".$this->iconv($oData['comments']);
			}
			$s_method = explode( '(' , $oData['shipping_method'] );
			$s_method['0'] = trim($s_method['0']);
			$afterbuy[] = "Versandart=".$this->iconv($s_method['0']);
			$afterbuy[] = "Zahlart=".$this->iconv( $this->payment($oData['payment_method']) );
			$ZFID = $this->iconv( $this->payment_FID($oData['payment_method']) );
			$afterbuy[] = "ZFunktionsID=".$ZFID;
			if($ZFID == 5) {
				$afterbuy[] = "SetPay=1";
				$afterbuy[] = "VMemo=".$this->iconv("ACHTUNG: Vorgang wurde als bezahlt übergeben. Überprüfung erforderlich!");
				$afterbuy[] = "MarkierungID=324";
			}

			//banktransfer data
			if ($oData['payment_method']=='banktransfer') {
				$b_query = xtc_db_query("SELECT banktransfer_bankname,
												banktransfer_blz,
												banktransfer_number,
												banktransfer_owner
										FROM ".TABLE_BANKTRANSFER."
										WHERE orders_id='".$this->order_id."'
										LIMIT 1;");
				if (xtc_db_numrows($b_query)) {
					$b_data = xtc_db_fetch_array($b_query);
					$afterbuy[] = "Bankname=".$this->iconv($b_data['banktransfer_bankname']);
					$afterbuy[] = "BLZ=".$this->iconv($b_data['banktransfer_blz']);
					$afterbuy[] = "Kontonummer=".$this->iconv($b_data['banktransfer_number']);
					$afterbuy[] = "Kontoinhaber=".$this->iconv($b_data['banktransfer_owner']);
				}
			}
			$afterbuy[] = $this->extra();
			$afterbuy[] = "NoVersandCalc=1";
			if(isset($this->dealers) && !empty($this->dealers) &&
				@array_key_exists($_SESSION['customers_status']['customers_status_id'], $this->dealers) ) {
					$afterbuy[] = 'Haendler=1';
			}

			if($xml = $this->submit($afterbuy)) {
				$result = simplexml_load_string ( $xml );

				if ($result->success == '1') {
					$cdr = $result->data->KundenNr;
					//build string of AID/UID/KundenNr
					$AB = $result->data->AID . $result->data->UID . $cdr;
					xtc_db_query("UPDATE ".TABLE_ORDERS." SET afterbuy_success='1',afterbuy_id='".$cdr."',orders_ident_key='".$AB."' WHERE orders_id='".$this->order_id."'");

					//set new order status
					if ($this->order_status != '') {
						xtc_db_query("UPDATE ".TABLE_ORDERS." SET orders_status='".$this->order_status."' WHERE orders_id='".$this->order_id."'");
					}

				} else {
					$error = array();
					foreach($result->errorlist->error as $row) {
						$error[] = $row;
					}
					// mail to shopowner
					$mail_content_html = 'Fehler bei Uebertragung der Bestellung: '.$this->order_id."<br />\r\n".'Folgende Fehlermeldung wurde vom afterbuy.de zurueckgegeben:'."<br />\r\n"."<br />\r\n".implode("<br />\r\n",$error);
					$mail_content_txt = 'Fehler bei Uebertragung der Bestellung: '.$this->order_id."\r\n".'Folgende Fehlermeldung wurde vom afterbuy.de zurueckgegeben:'."\r\n\r\n".implode("\r\n",$error);

					xtc_php_mail(EMAIL_BILLING_ADDRESS,STORE_NAME.'-Afterbuy',EMAIL_BILLING_ADDRESS, STORE_NAME,'',EMAIL_BILLING_ADDRESS, STORE_NAME,'','', "Afterbuy-Error", $mail_content_html,$mail_content_txt);

				}
			}
		}
	}

  /** ---------------------------------------------------------------------------------
   *
   *F xtc_afterbuy_functions::order_send
   *
   * @return boolean
   */
	function order_send() {

		$check_query = xtc_db_query("SELECT afterbuy_success FROM ".TABLE_ORDERS." WHERE orders_id='".$this->order_id."' LIMIT 1;");
		$data = xtc_db_fetch_array($check_query);

		if ($data['afterbuy_success'] == 1) {
			return false;
		}
		return true;

	}

  /** ---------------------------------------------------------------------------------
   *
   *PF xtc_afterbuy_functions::iconv
   *
   * convert strings to iso-8859-1 for afterbuy and urlencoded
   *
   * @param string $str
   * @return string
   */
	private function iconv( $str ) {
		if(defined('DB_SERVER_CHARSET')) {
			if(function_exists('iconv')) {
				return urlencode( iconv( charset_mapper(DB_SERVER_CHARSET) , 'ISO-8859-1' , $str ) );
			} elseif( DB_SERVER_CHARSET == 'utf8' ) {
				return urlencode( utf8_decode( $str ) );
			} else {
				return urlencode( $str );
			}
		} else {
			return urlencode( $str );
		}
	}

  /** ---------------------------------------------------------------------------------
   *
   *PF xtc_afterbuy_functions::submit
   *
   * connector to Afterbuy API
   *
   * @param string $str
   * @return string
   */
	private function submit( $POST_ARRAY ) {
		$POST_ARRAY = implode('&',$POST_ARRAY);
		if(function_exists('curl_init')) {
			$ch = curl_init();
			@curl_setopt($ch, CURLOPT_URL, 'https://'.$this->ShopInterface.$this->ShopInterface_path);
			if(file_exists($this->afterbuy_crt) && is_readable($this->afterbuy_crt)) {
				@curl_setopt($ch, CURLOPT_CAFILE, $this->afterbuy_crt);
				@curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 1);
			}
			@curl_setopt($ch, CURLOPT_USERAGENT, $this->user_agent);
			@curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
			@curl_setopt($ch, CURLOPT_POST, 1);
			@curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
			@curl_setopt($ch, CURLOPT_POSTFIELDS, $POST_ARRAY);
			$return = @curl_exec($ch);
			if(curl_errno($ch)) {
				$error = @curl_error($ch);
				$error = strip_tags($error);
				$s = array("\r","\n","\t");
				$r = array(""," ","   ");
				$error = str_replace($s,$r,$error);
				$return = '<?xml version="1.0" encoding="UTF-8" ?>'."\n<result>\n<success>0</success>\n<errorlist>\n<error>" . $error . "</error>\n</errorlist>\n</result>";
			}
			@curl_close($ch);
		} else {
			$return = '<?xml version="1.0" encoding="UTF-8" ?>'."\n<result>\n<success>0</success>\n<errorlist>\n<error>Die Funktionen von cURL konnten nicht gefunden werden.</error>\n<error>Um diesen API zu nutzen, wird PHP cURL benoetigt: http://www.php.net/curl</error>\n</errorlist>\n</result>";
		}
		return $return;
	}

  /** ---------------------------------------------------------------------------------
   *
   *PF xtc_afterbuy_functions::url
   *
   * create URLs like xtc_href_link
   *
   * @param string $page
   * @param string $params (optional)
   * @param string $connect (optioal [only NONSSL or SSL])
   * @return url address
   */
	private function url($page='index.php' , $params='' , $connect='NONSSL') {
		switch($connect) {
			case 'NONSSL':
				$connect = 'NONSSL';
			break;
			default:
				$connect = 'SSL';
		}
		if(!function_exists('xtc_catalog_href_link')) {
			return xtc_href_link($page , $params , $connect);
		} else {
			return xtc_catalog_href_link($page , $params , $connect);
		}
	}

  /** ---------------------------------------------------------------------------------
   *
   *PF xtc_afterbuy_functions::payment
   *
   * english to german
   *
   * @param string $payment
   * @return string
   */
	private function payment($payment) {
		switch($payment) {
			case 'banktransfer':
				$payment = 'Lastschrift';
			break;
			case 'cash':
				$payment = 'Barzahlung';
			break;
			case 'cc':
				$payment = 'Kreditkarte';
			break;
			case 'cod':
				$payment = 'Nachnahme';
			break;
			case 'eustandardtransfer':
				$payment = 'Überweisung/Vorkasse';
			break;
			case 'iclear':
				$payment = 'iClear Payment System';
			break;
			case 'invoice':
				$payment = 'Rechnung';
			break;
			case 'ipayment':
				$payment = 'iPayment';
			break;
			case 'ipaymentelv':
				$payment = 'iPayment Lastschriftverfahren';
			break;
			case 'ogone':
				$payment = 'Ogone - Payment Service Provider';
			break;
			case 'moneyorder':
				$payment = 'Überweisung/Vorkasse';
			break;
			case 'paypal':
				$payment = 'PayPal';
			break;
			case 'paypalexpress':
				$payment = 'PayPal Express';
			break;
			case 'sofortueberweisung':
			case 'sofortueberweisung_direct':
			case 'sofortueberweisungredirect':
			case 'sofortueberweisungvorkasse':
				$payment = 'Sofortüberweisung';
			break;
			case 'worldpay':
				$payment = 'Secure Credit Card Payment';
			break;
		}
		return $payment;
	}

  /** ---------------------------------------------------------------------------------
   *
   *PF xtc_afterbuy_functions::payment_FID
   *
   * payment names to intengers by afterbuy
   *
   * @param string $payment
   * @return int
   */
	private function payment_FID($payment) {
		switch($payment) {
			case 'banktransfer':
				$payment = '7';
			break;
			case 'cash':
				$payment = '2';
			break;
			case 'cod':
				$payment = '4';
			break;
			case 'invoice':
				$payment = '6';
			break;
			case 'eustandardtransfer':
			case 'moneyorder':
				$payment = '1';
			break;
			case 'paypal':
				$payment = '5';
			break;
			case 'paypalexpress':
				$payment = '5';
			break;
			case 'sofortueberweisung':
				$payment = '12';
			break;
			case 'sofortueberweisungredirect':
				$payment = '12';
			break;
			case 'sofortueberweisungvorkasse':
				$payment = '12';
			break;
			default:
				$payment = '99';
		}
		return $payment;
	}

  /** ---------------------------------------------------------------------------------
   *
   *PF xtc_afterbuy_functions::currency
   *
   * US dez. numbers to DE dez. numbers
   *
   * @param flood $flood
   * @return flood
   */
	private function currency( $flood ) {
		return str_replace('.', ',', $flood );
	}

	function extra() {

	}

}
?>

Antworten