Categorieën
E-commerce iDEAL WooCommerce WordPress

Self-billing factuur van Mollie, Buckaroo, etc.

Omdat we bij Pronamic betaaloplossingen ontwikkelen voor payment providers zoals Mollie, Buckaroo, Pay.nl, etc. zijn we vaak partner van deze organisaties. In sommige gevallen krijgen we commissie voor succesvolle betalingen die via de Pronamic Pay plugin zijn opgestart. De payment providers betalen ons maandelijks of per kwartaal de opgebouwde commissie uit. Voor de boekhouding ontvangen we dan vaak een zogenaamde self-billing factuur. Waar voorheen nog wel eens creditnota’s werden verstuurd lijken de payment providers nu over te stappen naar self-billing facturen. Ik was tot vandaag niet heel bewust van dit concept. In dit bericht wat meer informatie over het self-billing principe.

Categorieën
iDEAL JavaScript

Mollie Recurring testen betaling blijft pending

Bij Pronamic werken we momenteel hard aan de ondersteuning van Mollie Recurring in de Pronamic iDEAL plugin. Hierbij liepen we tegen het probleem aan dat test incasso betalingen de status pending  bleven houden. We hebben daarom zojuist even geïnformeerd bij Mollie wat we over het hoofd zien:

Hallo Mollie,

We zijn momenteel bezig met de Mollie Recurring API en lopen tegen een probleem aan. De test directdebit betaling blijft de status pending houden terwijl er een valid mandate is:

curl -X GET https://api.mollie.nl/v1/payments/tr_********** -H "Authorization: Bearer test_******************************"
curl -X GET https://api.mollie.nl/v1/customers/cst_**********/mandates/mdt_********** -H "Authorization: Bearer test_******************************"

Zien wij iets over het hoofd?

Het handige van Mollie is dat de API ook eenvoudig via curl  is aan te roepen. In combinatie met tools zoals underscore-cli of jq kun je zo de Mollie API eenvoudig testen.

jq

brew install jq
curl -X GET https://api.mollie.nl/v1/payments/tr_********** -H "Authorization: Bearer test_******************************" | jq

Mollie API test curl jq

underscore-cli

npm install -g underscore-cli
curl -X GET https://api.mollie.nl/v1/payments/tr_********** -H "Authorization: Bearer test_******************************" | underscore print --color

Mollie API test curl underscore

Update maandag 10 oktober

Inmiddels hebben we een reactie gekregen van Mollie:

In de testmodus klopt dit inderdaad. Om recurring te testen kun je dit het beste doen met de Creditcard betaalmethode. Dit zal hetzelfde werken als met SEPA-incasso.

Als er nog vragen zijn, horen wij deze graag. Veel informatie is overigens ook terug te vinden op onze Support-pagina: https://www.mollie.com/nl/support

Het is wel jammer dat dit in testmodus niet correct werkt en Mollie ook geen stappen lijkt te nemen om dit of de documentatie hiervan te verbeteren.

Categorieën
iDEAL WooCommerce WordPress

WooCommerce bestellingen met iDEAL Basic automatisch geannuleerd

Een aantal WordPress gebruikers die met WooCommerce een webwinkel hebben opgezet en een iDEAL Basic aansluiting hebben zullen opgemerkt hebben dat betaalde bestellingen soms automatisch geannuleerd worden. Dit wordt veroorzaakt een automatisch systeem van WooCommerce die bestellingen met de status ‘in afwachting’ (pending) na een bepaalde tijd annuleert.

De WooCommerce ‘woocommerce_cancel_unpaid_orders()‘ functie regelt het annuleren van bestellingen met de status ‘in afwachting’. De werking van deze functie is te beïnvloeden met 2 instellingen, namelijk de ‘Voorraadbeheer’ (Manage Stock) en ‘Voorraad behouden (minuten)’ (Hold Stock (minutes)) instellingen. Op het moment dat voorraadbeheer is ingeschakeld en het aantal minuten van het vasthouden van de voorraad groter is dan 0 zullen bestellingen de status ‘in afwachting’ automatisch geannuleerd worden.

In principe zou een succesvolle iDEAL-betaling er direct voor moeten zorgen dat de WooCommerce bestellingstatus wordt bijgewerkt van ‘in afwachting’ (pending) naar ‘in verwerking’ (processing). In het geval van iDEAL Basic gebeurd dit echter niet als bezoekers vanuit iDEAL niet terug keren naar de webwinkel. WooCommerce gebruikers die werken met de iDEAL Basic variant adviseer ik daarom om de “Voorraad behouden (minuten)” instelling uit te schakelen.

Voorraad behouden (voor onbetaalde bestellingen) voor x minuten. Wanneer deze limiet is bereikt zal de in afwachting bestelling geannuleerd worden. Laat leeg om uit te schakelen.

WooCommerce voorraadbeheer iDEAL Basic

Het is immers niet netjes als klanten na een succesvolle iDEAL-betaling een uur later de melding krijgen dat de bestelling is geannuleerd.

Categorieën
iDEAL PHP

iDEAL Advanced probleem met OpenSSL 1.0.1e 11 Feb 2013

Vandaag liep ik tegen een configuratie probleem aan binnen de “Pronamic iDEAL” plugin in combinatie met de “ING – iDEAL Advanced” oplossing. Na het generen en uploaden van een privé sleutel en certificaat kon de Pronamic iDEAL configuratie niet meer getoond worden. De iDEAL pagina werd zonder foutmelding volledig afgebroken. Na debug werk kwamen we tot de ontdekking dat het vast liep binnen de volgende functie:

https://github.com/pronamic/wp-pronamic-ideal/blob/2.4.2/includes/xmlseclibs/xmlseclibs-ing.php#L484

of

https://github.com/pronamic/wp-pronamic-ideal/blob/2.4.2/includes/xmlseclibs/xmlseclibs.php#L479

Binnen deze functie worden de XML berichten die verstuurd worden naar de iDEAL Advanced provider gesigneerd. Op deze manier kan de bank verifiëren dat het verzoek van de juiste partij vandaan komt. Het signeren van XML berichten wordt gedaan met behulp van de OpenSSL bibliotheek. Deze bibliotheek is gericht op het versleutelen van te versturen gegevens.

Het is bekend dat voor de iDEAL Advanced oplossing minimaal OpenSSL versie “OpenSSL 0.9.7f” is in verband met SHA256 ondersteuning. Om die reden heb ik direct de OpenSSL versie gecontroleerd. Op de betreffende hosting omgeving van TransIP blijkt momenteel OpenSSL versie “1.0.1e 11 Feb 2013” te draaien. Voor zover mij bekend draaien de meeste hosting omgevingen nog op OpenSSL versie “0.9.8y 5 Feb 2013”, maar blijkbaar is TransIP al een stapje verder.

Na het probleem verder onderzocht te hebben leek het probleem zich te beperken tot de specifieke OpenSSL versie:

  • OpenSSL 0.9.8y 5 Feb 2013 » werkt wel
  • OpenSSL 1.0.1e 11 Feb 2013 » werkt niet
  • OpenSSL 1.0.1f 6 Jan 2014 » werkt wel

Ik vermoed dan ook dat in de betreffende OpenSSL versie een fout is ontstaan. Hierdoor kunnen de iDEAL Advanced berichten niet gesingeerd worden en zal iDEAL Advanced oplossing niet functioneren in combinatie met deze OpenSSL versie. Ik heb hierover telefonisch contact gehad met de ING Bank, maar helaas hebben ze mijn bevindingen nog niet kunnen verifiëren.

Hopelijk kan TransIP het probleem oplossen door de OpenSSL bibliotheek te up- en/of downgraden. Het zou immers jammer zijn als je bij TransIP niet de populaire iDEAL-betaalmethode kunt aanbieden. Mocht iemand overigens succesvol iDEAL Advanced gebruiken in combinatie met OpenSSL 1.0.1e 11 Feb 2013 dan hoor ik het graag.

Categorieën
iDEAL PHP WordPress

PHP private/protected eigenschappen aanpassen

Binnnen de Pronamic iDEAL plugin breiden we verschillende WordPress plugins uit met de iDEAL gateway. Zo voorzien we ook de Shopp webwinkel plugin voor WordPress van een iDEAL gateway module.

De Shopp ontwikkelaars hebben het echter niet eenvoudig gemaakt om vanuit een andere WordPress plugin betalingsgateways toe te voegen. In de Pronamic iDEAL plugin moeten we daarom op een omslachtige manier te werken gaan om dit toch te realiseren.

Hoe we dit gerealiseerd hebben voor Shopp versie 1.0 tot 1.2.9 is te zien in het volgende Pronamic iDEAL bestand:

https://github.com/pronamic/wp-pronamic-ideal/blob/2.3.1/classes/Pronamic/Shopp/IDeal/AddOn.php#L51

In de recente gelanceerde Shopp versie 1.3 functioneerde deze code echter niet meer correct. De Shopp ontwikkelaars hebben in het inladen van modules namelijk flink over de kop gegooid. Na de Shopp code van versie 1.3 helemaal doorgelopen hadden kwamen we al snel tot de conclusie dat de Shopp ontwikkelaars het ons vrij lastig hebben gemaakt.

De Shopp ontwikkelaars hebben vrijwel geen WordPress filters of acties beschikbaar gesteld om betalingsgateways vanaf andere locaties in te laden.  Wel worden binnen Shopp betalingsgateways nu vanaf 2 loacties ingeladen, namelijk:

  • /wp-content/plugins/shopp/gateways
  • /wp-content/shopp-addons

https://github.com/ingenesis/shopp/blob/1.3/core/model/Gateway.php#L453

Nu zou je denken dat daar dan eenvoudig een 3e locatie aan toegevoegd kan worden, maar dat was helaas niet het geval. De paden waren de betalingsgateways vanuit worden geladen stonden namelijk vast in de code en kunnen niet aangepast worden.

Uiteindelijk kwamen op het idee om de paden uit te breiden met behulp van de PHP Refelection bibliotheek. Met behulp van deze bibliotheek is het mogelijk om niet toegankelijke eigenschappen van classes/objecten wel toegankelijk te maken.

Via de volgende code konden we zo een nieuwe gateway moduels locatie toevoegen aan de Shopp plugin:

global $Shopp;

$class = new ReflectionClass( 'GatewayModules' );

$property = $class->getProperty( 'paths' );
$property->setAccessible( true );

$paths = $property->getValue( $Shopp->Gateways );
// @see https://github.com/ingenesis/shopp/blob/1.3/Shopp.php#L193
$paths[] = Pronamic_WordPress_IDeal_Plugin::$dirname . '/classes/Pronamic/Shopp/Gateways';

$property->setValue( $Shopp->Gateways, $paths );
Categorieën
iDEAL

Rabobank iDEAL fout 958 en waardeloze support

Gisteren probeerde ik een bestelling bij Bax-shop.nl te betalen. Helaas kreeg ik na het kiezen van iDEAL en de S-toets stappen te volgen telkens de volgende foutmelding te zien:

Rabobank iDEAL fout 958

In eerste instantie denk je dan een fout gemaakt te hebben en probeer je het nogmaals. Na 5 keer geprobeerd te hebben gaf ik het op en nam ik contact op met mijn lokale Rabobank (Rabobank Burgum-De Lauwers).

Er werd mij gevraagd om de batterij status van mijn Random-reader te controleren. Deze stond op 14% en dit bleek aan de lage kant te zijn waardoor S-toets berekeningen soms fout gaan.

Daarom direct een andere Random-reader gepakt en de betaling nogmaals geprobeerd. Helaas opnieuw hetzelfde probleem. Ook mijn zakelijke pas en passen van mijn collega’s gaven dezelfde problemen.

Vanochtend daarom nogmaals contact opgenomen met Rabobank Burgum. Het probleem uitgelegd en geïnformeerd naar een oplossing. Ze konden dit keer geen fouten ontdekken, mijn Random-reader was goed en mijn pas actief.

Helaas kon ik nog steeds niet met iDEAL afrekenen. Na veel doorvragen en informeren kreeg ik als antwoord: “Ik vind het heel vervelend, maar helaas kan ik u hier niet mee helpen.”.

In plaats van dat de Rabobank het probleem oplost moest ik maar een andere betaalmethode kiezen bij Bax-shop.nl. Uiteraard aangegeven dat ik gewoon met iDEAL wil betalen en dat dit gewoon zou moeten functioneren.

Opnieuw kreeg ik te horen dat ze me niet kunnen helpen met problemen op hun eigen iDEAL-platform. Al met al had ik het idee dat mijn probleem niet serieus werd genomen en dat ze geen enkele moeite wilde doen om mij te helpen.

Categorieën
iDEAL

ABN AMRO – iDEAL Only Kassa foutmelding

Gebruikers van de “ABN AMRO – iDEAL Only Kassa” iDEAL-variant zullen ongetwijfeld een keer tegen de volgende foutmelding aangelopen zijn:

An error has occurred; please try again later. If you are the owner or the integrator of this website, please log into the ABN AMRO Bank back office to see the details of the error.

In deze foutmelding wordt verwezen naar de “ABN AMRO Bank back office” omgeving. Veel gebruikers zullen dan denken dat ze moeten inloggen in de Ogone omgeving:

Na telefonisch contact met de “Special Desk e-Commerce” van de ABN AMRO bleek echter de “ABN AMRO Bank back office” niet beschikbaar is voor “ABN AMRO – iDEAL Only Kassa” gebruikers.

De betreffende foutmelding kan echter vaak opgelost worden door een keer alle gegevens goed te controleren. Mocht je er vervolgens als nog niet uitkomen dan kan de “Special Desk e-Commerce” van de ABN AMRO je vaak goed helpen.

Ook bij Pronamic kunnen we je vaak goed helpen met de installatie en configuratie van iDEAL. We hebben hier veel ervaring mee en kunnen vaak nog dezelfde de iDEAL installatie tegen voordelig tarief realiseren.

Categorieën
iDEAL WordPress

Ogone DirectLink 50001111 fout

Tijdens het onderzoeken van de werking van Ogone DirectLink API kregen we bij elk bericht die we naar Ogone communiceerden het volgende bericht terug:

<?xml version="1.0"?>
<ncresponse

orderID="1375185042"
PAYID="0"
NCERROR="50001111"
STATUS="0">
</ncresponse>

Aan de hand van deze foutmelding konden we helaas niet achterhalen wat er precies fout ging. In het Ogone “Lijst van betalingsstatussen en foutcodes” document konden we lezen dat deze foutcode voor een “Datavalidatiefout” stond, maar dat hielp ook weinig.

Na een zoektocht via Google kwamen we al snel enkele andere Ogone gebruikers tegen die ook dit probleem hadden:

Uiteindelijk hebben we meer opheldering kunnen krijgen over de betreffende foutcode door Ogone meer parameters terug te laten sturen. Via het Ogone dashboard kan dit op de pagina “Configureren » Technische informatie » Feedback” onder “Directlink » Dynamische parameters” geconfigureerd worden. Door de ‘NCERRORPLUS’ parameter toe te voegen wordt het XML antwoord van Ogone veel duidelijker:

<?xml version="1.0"?>
<ncresponse

orderID="1375185989"
PAYID="0"
NCERROR="50001123"
STATUS="0"
NCERRORPLUS="Card type not active for the merchant">
</ncresponse>

Na het wijzigen van ons Visa creditcard testnummer ‘4111111111111111’ naar een MasterCard testnummer ‘5555555555554444’ konden we verder met het testen van de Ogone DirectLink API.

http://www.paypalobjects.com/en_US/vhelp/paypalmanager_help/credit_card_numbers.htm

Waarschijnlijk gaan we binnenkort de Ogone DirectLink API ook ondersteunen binnen de Pronamic iDEAL plugin zodat deze nog breder is in te zetten.

Categorieën
iDEAL WordPress

WordPress iDEAL plugin

Het is alweer bijna een jaar geleden dat we bij Pronamic begonnen met de ontwikkeling van de WordPress iDEAL plugin. Inmiddels begint de plugin steeds meer vorm te krijgen en ontdekken steeds meer WordPress gebruikers de kracht van deze plugin. De plugin is inmiddels meer dan 3.000+ keer gedownload:

WordPress iDEAL plugin wordt gemiddeld 40 keer per dag gedownload

Doordat de plugin steeds meer wordt gebruikt wordt de plugin ook steeds beter. Bijna wekelijks verbeteren en optimaliseren we functionaliteiten. Ook zorgen we er voor dat de WordPress iDEAL plugin steeds meer plugins uitbreid met de iDEAL betaalmethode. Zo zijn we beginnen met Gravity Forms en is deze lijst inmiddels al flink gegroeid:

One WordPress iDEAL plugin to rule them allHet idee hiervan is dat we één goede iDEAL plugin voor WordPress ontwikkelen: “One WordPress iDEAL plugin to rule them all”. Met name voor WordPress ontwikkelaars is het erg prettig dat ze gebruik kunnen maken van één stabiele iDEAL plugin. Daarnaast is het denk ik prettig dat de WordPress iDEAL plugin door een betrouwbare Nederlandse partij (Pronamic) is ontwikkeld en wordt onderhouden.

Omdat de Pronamic iDEAL plugin ontwikkelingen flink doorgaan en de plugin steeds beter en stabieler wordt hebben we de WordPress iDEAL website gelanceerd. Op deze website zullen we proberen om informatie over problemen, updates en andere iDEAL gerelateerde informatie te plaatsen. In het eerste bericht “Pronamic iDEAL versie beta-0.9.4” is in het kort te lezen wat er zoal is verbeterd in deze versie.

Categorieën
E-commerce iDEAL WordPress

iDEAL voor Shopp 1.2

Op woensdag 6 juli 2011 werd door de ontwikkelaars van de Shopp plugin versie 1.2 aangekondigd. Er werd een indrukwekkende lijst aan verbeterpunten en nieuwe functionaliteiten genoemd. Ik had gehoopt dat na deze aankondiging binnen een aantal weken Shopp 1.2 gelanceerd zou worden. Helaas heeft dit iets meer tijd gekost, maar lijkt Shopp 1.2 er nu toch aan te komen.

Het team achter Shopp heeft blijkbaar toch erg veel moeite moeten doen om de nieuwe versie zo in te richten dat gebruikers probleemloos kunnen overstappen van Shopp 1.1 naar versie 1.2. Met de grote lijst aan nieuwe verbeteringen en nieuwe functionaliteit kan ik me goed voorstellen dat dit een erg lastig klus is (of was). Eind december 2011 werd gelukkig de eerste release candidate van Shopp 1.2 beschikbaar gesteld.

Dit betekende voor Pronamic werk aan de winkel om de Pronamic iDEAL plugin te testen in combinatie met Shopp 1.2. De nieuwe Shopp plugin is uitgerust met een compleet nieuw systeem voor het afhandelen van bestellingen en betalingen. Hierdoor moesten er ook een aantal aanpassingen worden gedaan aan de Pronamic iDEAL plugin.

Door de code van een plugin te bekijken is vaak wel te zien hoe bepaalde functionaliteiten werken. In het geval van Shopp 1.2 was het echter lastig te overzien hoe en wanneer functies werden aangeroepen. Daarom heb ik een stroomdiagram gemaakt waarin te zien is welke functies en actie worden aangeroepen na het plaatsen van een bestelling.

Download ODF tekening

Aan de hand van dit diagram hebben we de Pronamic iDEAL plugin bijgewerkt en werkt deze sinds vandaag ook in combinatie met Shopp 1.2. Alle Shopp gebruikers die werken met de Pronamic iDEAL plugin kunnen straks zonder problemen updaten naar versie 1.2.