schnittstelle sofortueberweisung.de
schnittstelle sofortueberweisung.de
Hallo
ich habe mit der Entwicklung einer Schnittstelle zu sofortueberweisung.de begonnen.
Gruß
ajp
ich habe mit der Entwicklung einer Schnittstelle zu sofortueberweisung.de begonnen.
Gruß
ajp
Zuletzt geändert von ajp24 am 29.06.2009, 11:46, insgesamt 1-mal geändert.
Das Wissen der Menschheit gehört der Welt!
So nach der erfolgreichen Anmeldung bei sofortueberweisung hab ich wie vom Anbieter gewünscht alle nötigen Einstellungen durchgeführt.
Dazu gehört die Projekterstellung, Passwortvergabe, etc ....im Grunde nix Wildes (habe vielleicht max. 15 min dafür gebraucht... )
GANZ WICHTIG: Durch die Anmeldung und die Projekterstellung entstehen Kosten
Dazu gehört die Projekterstellung, Passwortvergabe, etc ....im Grunde nix Wildes (habe vielleicht max. 15 min dafür gebraucht... )
GANZ WICHTIG: Durch die Anmeldung und die Projekterstellung entstehen Kosten
Zuletzt geändert von ajp24 am 29.06.2009, 12:03, insgesamt 1-mal geändert.
Das Wissen der Menschheit gehört der Welt!
By the way - ich habe noch nie ein Payment-Modul für das OOS entwickelt ... es ist für mich also gerade eine Reise ins Ungewisse
Falls ihr also irgendwelche Denkfehler entdeckt teilt mir diese bitte mit
Ok was ich schon mal rausgefunden hab ist, dass wir eine neue Klasse brauchen - ich nenne diese mal sofortueberweisung - das Ganze müssen wir als sofortueberweisung.php in das Verzeichnis /includes/modules/payment speichern....
nun versuchen wir mal die Methoden mit Leben zu füllen
Falls ihr also irgendwelche Denkfehler entdeckt teilt mir diese bitte mit
Ok was ich schon mal rausgefunden hab ist, dass wir eine neue Klasse brauchen - ich nenne diese mal sofortueberweisung - das Ganze müssen wir als sofortueberweisung.php in das Verzeichnis /includes/modules/payment speichern....
Code: Alles auswählen
class sofortueberweisung {
// class constructor
function sofortueberweisung() {}
// class methods
function update_status() {}
function javascript_validation() {}
function selection() {}
function pre_confirmation_check() {}
function confirmation() {}
function process_button() {}
function before_process() {}
function after_process() {}
function output_error() {}
function check() {}
function install() {}
function remove() {}
function keys() {}
?>
Zuletzt geändert von ajp24 am 29.06.2009, 15:59, insgesamt 1-mal geändert.
Das Wissen der Menschheit gehört der Welt!
Alle Parameter "configuration_key" die das Modul braucht können in der Datenbanktabell "configuration" abgelegt werden
Ich fange mal mit der Methode function remove() {}
Diese wird aufgerufen wenn das Modul entfern wird - remove () löscht einfach alle Einträge aus der Tabelle "configuration"
Ich fange mal mit der Methode function remove() {}
Diese wird aufgerufen wenn das Modul entfern wird - remove () löscht einfach alle Einträge aus der Tabelle "configuration"
Code: Alles auswählen
function remove() {
$db =& oosDBGetConn();
$oosDBTable = oosDBGetTables();
$db->Execute("DELETE FROM " . $oosDBTable['configuration'] . " WHERE configuration_key in ('" . implode("', '", $this->keys()) . "')");
}
Das Wissen der Menschheit gehört der Welt!
Kommen wir jetzt zum Konstruktor der Klasse
Entscheidend hier ist die Eigenschaft form_action_url !!! Es ist die Seite auf die wir weiterleiten also die Einstiegsseite von sofortueberweisung
Code: Alles auswählen
// class constructor
function sofortueberweisung() {
global $order, $aLang;
$this->code = 'sofortueberweisung';
$this->title = $aLang['module_payment_sofortueberweisung_text_title'];
$this->description = $aLang['module_payment_sofortueberweisung_text_description'];
$this->sort_order = MODULE_PAYMENT_SOFORTUEBERWEISUNG_SORT_ORDER;
$this->enabled = ((MODULE_PAYMENT_SOFORTUEBERWEISUNG_STATUS == 'True') ? true : false);
if ((int)MODULE_PAYMENT_SOFORTUEBERWEISUNG_ORDER_STATUS_ID > 0) {
$this->order_status = MODULE_PAYMENT_SOFORTUEBERWEISUNG_ORDER_STATUS_ID;
}
if (is_object($order)) $this->update_status();
$this->form_action_url = 'https://www.sofortueberweisung.de/payment/start';
}
Das Wissen der Menschheit gehört der Welt!
[quote='ajp24',index.php?page=Thread&postID=1201#post1201]By the way - ich habe noch nie ein Payment-Modul für das OOS entwickelt ...
nun versuchen wir mal die Methoden mit Leben zu füllen[/quote]
für Meldungen in cc.php banktransfer verwenden wir
Code: Alles auswählen
class sofortueberweisung {
function output_error() {}
?>
für Meldungen in cc.php banktransfer verwenden wir
Code: Alles auswählen
function get_error() {
[quote='ajp24',index.php?page=Thread&postID=1202#post1202]
[/quote]
code für 1.6.x ist richtig
Code: Alles auswählen
function remove() {
$db =& oosDBGetConn();
$oosDBTable = oosDBGetTables();
$db->Execute("DELETE FROM " . $oosDBTable['configuration'] . " WHERE configuration_key in ('" . implode("', '", $this->keys()) . "')");
}
code für 1.6.x ist richtig
[quote='ajp24',index.php?page=Thread&postID=1203#post1203]$this->form_action_url = 'https://www.sofortueberweisung.de/payment/start'; [/quote]
einige verwenden auch
'https://www.sofort-ueberweisung.de/payment.php';
einige verwenden auch
'https://www.sofort-ueberweisung.de/payment.php';
laut der neuen schnittstellenbeschreibung von sofortueberweisung ist
zu verwenden....von deiner url steht da nix drin....wo hast du die her ?
könnte es sein, dass die die sofort-ueberweiung älter ist...?
ich ruf mal morgen meine kundenberaterin bei sofortueberweisung an
gruß
ajp24
Code: Alles auswählen
$this->form_action_url = 'https://www.sofortueberweisung.de/payment/start';
zu verwenden....von deiner url steht da nix drin....wo hast du die her ?
könnte es sein, dass die die sofort-ueberweiung älter ist...?
ich ruf mal morgen meine kundenberaterin bei sofortueberweisung an
gruß
ajp24
Das Wissen der Menschheit gehört der Welt!
Code: Alles auswählen
* @version Sofortüberweisung 1.9 27.06.2007
* @author Henri Schmidhuber info@in-solution.de
* @copyright 2006 - 2007 Henri Schmidhuber
* @link http://www.in-solution.de
* @link http://www.oscommerce.com
also ich hab gerade mit dem tech_sup von sofortueberweisung telefoniert und er sagte mir dass die sofort-ueberweisung/payment.php die ältere ist und zur zeit einfach nur weiterleitet ( die wurde mal speziell für xt_commerce eingerichtet )
ich soll aber die start benutzten ....
ich soll aber die start benutzten ....
Das Wissen der Menschheit gehört der Welt!
ich würde sagen wir beschränken uns am Anfang auf eine vereinfachte Schnittstelle ( werden diese dann aber um weitere optionale Felder erweitern )
Wir brauchen also lediglich nur unsere Kundennummer, Projektnummer und den Rechnungsbetrag.
Wir brauchen also lediglich nur unsere Kundennummer, Projektnummer und den Rechnungsbetrag.
Zuletzt geändert von ajp24 am 30.06.2009, 15:42, insgesamt 1-mal geändert.
Das Wissen der Menschheit gehört der Welt!
Mehr ist nicht nötig um sofortueberweisung im oos zu nutzen
Die Schnittstelle bietet allerdings noch einige weitere optionale Felder die ich dann auch im weitern Verlauf einbauen werde
Bevor wir das aber tun hier noch die benötigte Sprachdatei die ihr bitte unter includes/languages/deu/modules/payment als sofortueberweisung.php speichert
Das mit der Währung hab ich mal gelassen ....(da muss ich noch mal schauen denn eigenltich kann die schnittstelle nur EUR oder Schweizer Franken ) ist momentan aber auch nicht so wichtig
Code: Alles auswählen
class sofortueberweisung {
var $code, $title, $description, $enabled;
// class constructor
function sofortueberweisung() {
global $order, $aLang;
$this->code = 'sofortueberweisung';
$this->title = $aLang['module_payment_sofortueberweisung_text_title'];
$this->description = $aLang['module_payment_sofortueberweisung_text_description'];
$this->sort_order = MODULE_PAYMENT_SOFORTUEBERWEISUNG_SORT_ORDER;
$this->enabled = ((MODULE_PAYMENT_SOFORTUEBERWEISUNG_STATUS == 'True') ? true : false);
if ((int)MODULE_PAYMENT_SOFORTUEBERWEISUNG_ORDER_STATUS_ID > 0) {
$this->order_status = MODULE_PAYMENT_SOFORTUEBERWEISUNG_ORDER_STATUS_ID;
}
if (is_object($order)) $this->update_status();
$this->form_action_url = 'https://www.sofortueberweisung.de/payment/start';
}
// class methods
function update_status() {
global $order;
if ( ($this->enabled == true) && ((int)MODULE_PAYMENT_SOFORTUEBERWEISUNG_ZONE > 0) ) {
$check_flag = false;
$db =& oosDBGetConn();
$oosDBTable = oosDBGetTables();
$check_result = $db->Execute("SELECT zone_id FROM " . $oosDBTable['zones_to_geo_zones'] . " WHERE geo_zone_id = '" . MODULE_PAYMENT_SOFORTUEBERWEISUNG_ZONE . "' AND zone_country_id = '" . $order->billing['country']['id'] . "' ORDER BY zone_id");
while ($check = $check_result->fields) {
if ($check['zone_id'] < 1) {
$check_flag = true;
break;
} elseif ($check['zone_id'] == $order->billing['zone_id']) {
$check_flag = true;
break;
}
$check_result->MoveNext();
}
if ($check_flag == false) {
$this->enabled = false;
}
}
}
function javascript_validation() {
return false;
}
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, $oCurrencies;
if (MODULE_PAYMENT_SOFORTUEBERWEISUNG_CURRENCY == 'Selected Currency') {
$my_currency = $_SESSION['currency'];
} else {
$my_currency = substr(MODULE_PAYMENT_SOFORTUEBERWEISUNG_CURRENCY, 5);
}
if (!in_array($my_currency, array('CAD', 'EUR', 'GBP', 'JPY', 'USD'))) {
$my_currency = 'EUR';
}
$process_button_string = oos_draw_hidden_field('user_id', MODULE_PAYMENT_SOFORTUEBERWEISUNG_KDNR) .
oos_draw_hidden_field('project_id', MODULE_PAYMENT_SOFORTUEBERWEISUNG_PROJEKT) .
oos_draw_hidden_field('amount', number_format(($order->info['total'] - $order->info['shipping_cost']) * $oCurrencies->get_value($my_currency), $oCurrencies->get_decimal_places($my_currency)));
return $process_button_string;
}
function before_process() {
return false;
}
function after_process() {
return false;
}
function output_error() {
return false;
}
function check() {
if (!isset($this->_check)) {
$db =& oosDBGetConn();
$oosDBTable = oosDBGetTables();
$check_result = $db->Execute("SELECT configuration_value FROM " . $oosDBTable['configuration'] . " WHERE configuration_key = 'MODULE_PAYMENT_SOFORTUEBERWEISUNG_STATUS'");
$this->_check = $check_result->RecordCount();
}
return $this->_check;
}
function install() {
$db =& oosDBGetConn();
$oosDBTable = oosDBGetTables();
$db->Execute("INSERT INTO " . $oosDBTable['configuration'] . " (configuration_key, configuration_value, configuration_group_id, sort_order, set_function, date_added) VALUES ('MODULE_PAYMENT_SOFORTUEBERWEISUNG_STATUS', 'True', '6', '3', 'oosCfgSelectOption(array(\'True\', \'False\'), ', now())");
$db->Execute("INSERT INTO " . $oosDBTable['configuration'] . " (configuration_key, configuration_value, configuration_group_id, sort_order, date_added) VALUES ('MODULE_PAYMENT_SOFORTUEBERWEISUNG_KDNR', '10000', '6', '4', now())");
$db->Execute("INSERT INTO " . $oosDBTable['configuration'] . " (configuration_key, configuration_value, configuration_group_id, sort_order, date_added) VALUES ('MODULE_PAYMENT_SOFORTUEBERWEISUNG_PROJEKT', '50000', '6', '4', now())");
$db->Execute("INSERT INTO " . $oosDBTable['configuration'] . " (configuration_key, configuration_value, configuration_group_id, sort_order, set_function, date_added) VALUES ('MODULE_PAYMENT_SOFORTUEBERWEISUNG_CURRENCY', 'Selected Currency', '6', '6', 'oosCfgSelectOption(array(\'Selected Currency\',\'Only USD\',\'Only CAD\',\'Only EUR\',\'Only GBP\',\'Only JPY\'), ', now())");
$db->Execute("INSERT INTO " . $oosDBTable['configuration'] . " (configuration_key, configuration_value, configuration_group_id, sort_order, date_added) VALUES ('MODULE_PAYMENT_SOFORTUEBERWEISUNG_SORT_ORDER', '0', '6', '0', now())");
$db->Execute("INSERT INTO " . $oosDBTable['configuration'] . " (configuration_key, configuration_value, configuration_group_id, sort_order, use_function, set_function, date_added) VALUES ('MODULE_PAYMENT_SOFORTUEBERWEISUNG_ZONE', '0', '6', '2', 'oosCfgGetZoneClassTitle', 'oosCfgPullDownZoneClasses(', now())");
$db->Execute("INSERT INTO " . $oosDBTable['configuration'] . " (configuration_key, configuration_value, configuration_group_id, sort_order, set_function, use_function, date_added) VALUES ('MODULE_PAYMENT_SOFORTUEBERWEISUNG_ORDER_STATUS_ID', '0', '6', '0', 'oosCfgPullDownOrderStatuses(', 'oosCfgGetOrderStatusName', now())");
}
function remove() {
$db =& oosDBGetConn();
$oosDBTable = oosDBGetTables();
$db->Execute("DELETE FROM " . $oosDBTable['configuration'] . " WHERE configuration_key in ('" . implode("', '", $this->keys()) . "')");
}
function keys() {
return array('MODULE_PAYMENT_SOFORTUEBERWEISUNG_STATUS', 'MODULE_PAYMENT_SOFORTUEBERWEISUNG_KDNR', 'MODULE_PAYMENT_SOFORTUEBERWEISUNG_PROJEKT', 'MODULE_PAYMENT_SOFORTUEBERWEISUNG_CURRENCY', 'MODULE_PAYMENT_SOFORTUEBERWEISUNG_ZONE', 'MODULE_PAYMENT_SOFORTUEBERWEISUNG_ORDER_STATUS_ID', 'MODULE_PAYMENT_SOFORTUEBERWEISUNG_SORT_ORDER');
}
}
?>
Bevor wir das aber tun hier noch die benötigte Sprachdatei die ihr bitte unter includes/languages/deu/modules/payment als sofortueberweisung.php speichert
Code: Alles auswählen
define('MODULE_PAYMENT_SOFORTUEBERWEISUNG_STATUS_TITLE', 'Sofortüberweisung');
define('MODULE_PAYMENT_SOFORTUEBERWEISUNG_STATUS_DESC', 'Möchten Sie Zahlungen per sofortueberweisung.de anbieten?');
define('MODULE_PAYMENT_SOFORTUEBERWEISUNG_KDNR_TITLE', 'Ihre Kundennummer');
define('MODULE_PAYMENT_SOFORTUEBERWEISUNG_KDNR_DESC', 'Ihre Kundennummer bei der Sofortüberweisung');
define('MODULE_PAYMENT_SOFORTUEBERWEISUNG_PROJEKT_TITLE', 'Ihre Projektnummer');
define('MODULE_PAYMENT_SOFORTUEBERWEISUNG_PROJEKT_DESC', 'Ihre Projektnummer bei der Sofortüberweisung');
define('MODULE_PAYMENT_SOFORTUEBERWEISUNG_CURRENCY_TITLE', 'Transaction Currency');
define('MODULE_PAYMENT_SOFORTUEBERWEISUNG_CURRENCY_DESC', 'The currency to use for credit card transactions');
define('MODULE_PAYMENT_SOFORTUEBERWEISUNG_ZONE_TITLE', 'Zone für diese Zahlungsweise');
define('MODULE_PAYMENT_SOFORTUEBERWEISUNG_ZONE_DESC', 'Wenn Sie eine Zone auswählen, wird diese Zahlungsweise nur in dieser Zone angeboten.');
define('MODULE_PAYMENT_SOFORTUEBERWEISUNG_ORDER_STATUS_ID_TITLE', 'Order Status');
define('MODULE_PAYMENT_SOFORTUEBERWEISUNG_ORDER_STATUS_ID_DESC', 'Festlegung des Status für Bestellungen, welche mit dieser Zahlungsweise durchgeführt werden.');
define('MODULE_PAYMENT_SOFORTUEBERWEISUNG_SORT_ORDER_TITLE', 'Reihenfolge der Anzeige');
define('MODULE_PAYMENT_SOFORTUEBERWEISUNG_SORT_ORDER_DESC', 'Niedrigste wird zuerst angezeigt.');
$aLang['module_payment_sofortueberweisung_text_title'] = 'Sofortueberweisung';
$aLang['module_payment_sofortueberweisung_text_description'] = 'SOFORTUEBERWEISUNG';
Zuletzt geändert von ajp24 am 30.06.2009, 15:45, insgesamt 1-mal geändert.
Das Wissen der Menschheit gehört der Welt!
[quote='ajp24',index.php?page=Thread&postID=1212#post1212]
[/quote]
Ich glaube kaum, dass sofortueberweisung die Ausländischen Währungen unterstützt?
Ich würde persönlich nicht unbedingt das paypal Modul so wie es ist verwenden... sondern die Bestellung erst im Shop
speichern, und dann erst nach sofortüberweisung weiterleiten.
hier ein beispiel aus meinem shop und paypal
vor oos_redirect($sLink); würde ich den ceckout für die session beenden.
aus ~/chekcout/process.php
aber dies geht nur, wenn der payanbietet die daten auch als GET-Variablen annimmt....
cu
ralf
Code: Alles auswählen
class sofortueberweisung {
var $code, $title, $description, $enabled;
// class constructor
function sofortueberweisung() {
global $order, $aLang;
function process_button() {
global $order, $oCurrencies;
if (MODULE_PAYMENT_SOFORTUEBERWEISUNG_CURRENCY == 'Selected Currency') {
$my_currency = $_SESSION['currency'];
} else {
$my_currency = substr(MODULE_PAYMENT_SOFORTUEBERWEISUNG_CURRENCY, 5);
}
if (!in_array($my_currency, array('CAD', 'EUR', 'GBP', 'JPY', 'USD'))) {
$my_currency = 'EUR';
}
}
?>
Ich glaube kaum, dass sofortueberweisung die Ausländischen Währungen unterstützt?
Ich würde persönlich nicht unbedingt das paypal Modul so wie es ist verwenden... sondern die Bestellung erst im Shop
speichern, und dann erst nach sofortüberweisung weiterleiten.
hier ein beispiel aus meinem shop und paypal
Code: Alles auswählen
function after_process() {
global $oOrder, $oCurrencies;
$my_currency = 'EUR';
$aFilename = oos_get_filename();
$aModules = oos_get_modules();
$sAmount = number_format(($oOrder->info['total] - $oOrder->info['shipping_cost]) * $oCurrencies->get_value($my_currency), $oCurrencies->get_decimal_places($my_currency));
$sShipping = number_format($oOrder->info['shipping_cost] * $oCurrencies->get_value($my_currency), $oCurrencies->get_decimal_places($my_currency));
$sReturn = oos_link($aModules['checkout], $aFilename['checkout_success], '', 'SSL');
$sCancel_return = oos_link($aModules['checkout], $aFilename['checkout_payment], '', 'SSL');
$sLink = 'https://www.paypal.com/de/cgi-bin/webscr?cmd=_xclick&business=' . MODULE_PAYMENT_PAYPAL_ID .
'&item_name= Pop Art von ' . STORE_NAME .
'&amount=' . urlencode($sAmount) .
'&shipping=' . urlencode($sShipping) .
'&return=' . urlencode($sReturn) .
'&cancel_return=' . urlencode($sCancel_return) .
'¤cy_code=EUR';
oos_redirect($sLink);
return false;
}
aus ~/chekcout/process.php
Code: Alles auswählen
unset($_SESSION['sendto]);
unset($_SESSION['billto]);
unset($_SESSION['shipping]);
unset($_SESSION['payment]);
unset($_SESSION['comments]);
cu
ralf