Saferpay order_number versus order_id

06.04.2016 14:49
#1
le5
Joomshopping forum user no avatar
Name: le5 GmbH
17.03.2012
Posts: 74
Quote
Saferpay order_number versus order_id

Mein Kunde hat die Bestellnummer selber manuell im Backend erhöht.
Dies funktioniert wunderbar. Jedoch wird beim Saferpay Plugin nochimmer die die "order_id" übergeben und nicht die "order_number".

Ich habe kurz den Code in "pm_saferpay.php" angeschaut. Auf Zeile 147 (ca.) fand ich folgen Eintrag:
$data['orderid'] = $order->order_id; // $data['orderid'] = $order->order_number;

Ich habe daraufhin die auskommentierte Zeile aktiviert. Jetzt wurde auch die "korrekte" Bestellnummer Saferpay übergeben. Nur beim Rücksprung von einer erfolgreichen Saferpay Zahlung wird diese von JShopping nicht als korrekt erkannt. Wohl weil es die "$order->order_id" erwartet und nicht die "$order->order_number".

Was muss ich zusätzlich noch ändern, dass ich die "$order->order_number" verwenden kann?

 
06.04.2016 15:56
#2
admin
(Support Team)
User admin
Name: Admin
05.08.2010
Posts: 25919
Quote
Aw: Saferpay order_number versus order_id

change
function getUrlParams($pmconfigs){
....
$params['order_id'] = ...

 
06.04.2016 16:44
#3
le5
Joomshopping forum user no avatar
Name: le5 GmbH
17.03.2012
Posts: 74
Quote
Aw: Saferpay order_number versus order_id

changed it to:

function getUrlParams($pmconfigs){
$data = JRequest::getVar('DATA', null, 'default', 'none', JREQUEST_ALLOWRAW);
$params = array();
$xml = new DOMDocument();
if ($xml->loadXML($data)) {
if ($xml->documentElement->hasAttribute("ORDERID")) {
$params['order_number'] = $xml->documentElement->getAttribute("ORDERID");
}
} else {
$params['order_number'] = 0;
}
$params['checkHash'] = 0;
$params['checkReturnParams'] = 1;
return $params;
}

didn't work :(

 
07.04.2016 08:07
#4
admin
(Support Team)
User admin
Name: Admin
05.08.2010
Posts: 25919
Quote
Aw: Saferpay order_number versus order_id

$order_number = $xml->documentElement->getAttribute("ORDERID");

$db = JFactory::getDBO();
$query = "SELECT order_id FROM `#__jshopping_orders` WHERE order_number='".$db->escape($order_number)."'";
$db->setQuery($query);

$params['order_id'] = $db->loadResult();


Letzte Änderung: 07.04.2016 08:11
 
07.04.2016 10:38
#5
le5
Joomshopping forum user no avatar
Name: le5 GmbH
17.03.2012
Posts: 74
Quote
Aw: Saferpay order_number versus order_id

Thanks for this one.
But to get it work, you still have to change following code line in

function checkTransaction($params, $order, $act){

//change to order_number
if ($xml_DATA->documentElement->getAttribute("ORDERID") != $order->order_number) return array(0, 'Attribute mismatch: ORDERID. Order number '.$order->order_id);

now it does exact what I wanted :)


Letzte Änderung: 07.04.2016 10:42
 


Copyrights MAXXmarketing GmbH. Alle Rechte vorbehalten
Durch die Nutzung dieser Website stimme ich zu, dass Cookies zur optimalen Gestaltung der Website sowie zur Analyse der Nutzung der Website verwendet werden. Weiterführende Informationen finden Sie hier. OK, einverstanden.