pronamic / wp-pronamic-pay

The Pronamic Pay plugin allows you to easily accept payments with payment methods like credit card, iDEAL, Bancontact and Sofort through a variety of payment providers on your WordPress website.
https://pronamicpay.com
34 stars 14 forks source link

Problems testing PayPal payments through DigiWallet #160

Closed remcotolsma closed 3 years ago

remcotolsma commented 3 years ago

As mentioned on https://github.com/pronamic/wp-pronamic-pay/issues/145#issuecomment-865046571, we are currently unable to initiate a PayPal (test) payment.

We just contacted DigiWallet support via techsupport@targetmedia.eu in Dutch:

Beste lezer,

Binnen de Pronamic Pay plugin voor WordPress (https://wordpress.org/plugins/pronamic-ideal/) hebben we ook een integratie met DigiWallet. We zijn de komende week bezig met het verbeteren van ondersteuning voor de PayPal-betaalmethode binnen onze plugin. Zodoende zijn we ook gaan testen of we PayPal (test) betalingen kunnen opstarten i.c.m. DigiWallet. Momenteel loopt dit echter vast op de volgende foutmelding:

"DW_IE_0001 Unknown internal error"

Dit heeft er misschien mee te maken dat de PayPal-betaalmethode nog niet geactiveerd is binnen onze DigiWallet (test) account met klantnummer 141722: https://www.digiwallet.nl/nl/organization/141722/payment-methods

122772498-bd2ac400-d2a7-11eb-9150-7159ab723885

Zijn er ook mogelijkheden dat we succesvol een PayPal betaling kunnen testen? Misschien is het sowieso goed om de 'Unknown internal error' melding te verduidelijken? We horen het graag, alvast bedankt.

Met vriendelijke groet,

Remco Tolsma Pronamic

Internal HelpScout ticket: https://secure.helpscout.net/conversation/1549784045/22248?folderId=1425710

remcotolsma commented 3 years ago

Received a first response from DigiWallet (in Dutch):

Goedemorgen Remco, In het developersportaal van PayPal moet eerst een app aangemaakt worden. En die moet weer gekoppeld worden aan het DigiWallet account. ​De aanvraag heb ik geactiveerd in jullie backoffice, zodra dat is goedgekeurd, kunnen jullie gaan koppelen.... Met vriendelijke groet/ kind regards, Celia TargetMedia B.V. Support Team

remcotolsma commented 3 years ago

We have had some back and forth contact with DigiWallet (in Dutch):


DigiWallet

We kunnen uw account voor het testen even open zetten om het te koppelen aan Paypal. Geeft u even door wanneer u dit wilt gaan doen?

Pronamic

Bedankt voor de update. Het testen kunnen we vandaag, donderdag en/of vrijdag wel even doen. We merken in de praktijk dat het wel handig is als we op elk moment kunnen testen. Mocht een gezamenlijke klant in de toekomst problemen hebben met de PayPal-betaalmethode dan kunnen we dan ook zonder tussenkomst van jullie testen. Ook omdat we onze DigiWallet integratie voor de WordPress plugins die we ondersteunen continu doorontwikkelen is het wel fijn als we continu kunnen testen. Als we voor elke aanpassing of nieuwe functionaliteit eerst weer moeten vragen om iets 'open' te zetten belemmert dat het doorontwikkelen en testen.

DigiWallet

Het gaat hierbij om 1malig de paypal info in te vullen. ​Hij blijft hierna werken.

Dit is toch voldoende neem ik aan ?

Pronamic

Ik weet niet precies wat jullie bedoelen met 'open zetten', maar als wij dan PayPal info kunnen invullen en het daarna blijft werken lijkt me dat voldoende inderdaad.

DigiWallet

Als deze info niet meer wijzigt, jullie voeren toch geen info van de klant daar in maar alleen jullie eigen info toch ? (open zetten > ze bedoelde dat je bij de paypal data kan om hier je gegevens in te vullen.) en ja daarna blijft het werken. Vandaag kun je bij de input van paypal, mocht je het op een andere dag willen invullen of wijzigen horen wij dat graag.


After this we were able to activate the PayPal payment method via the DigiWallet dashboard.

Schermafbeelding 2021-06-23 om 15 37 32

This took us a step further, but we ran into a new issue: https://github.com/pronamic/wp-pronamic-pay/issues/164. We solved this issue partly and now see a DigiWallet PayPal screen:

Schermafbeelding 2021-06-23 om 16 33 48
remcotolsma commented 3 years ago

Enter the following value into the field labeled Webhook Url: https://transaction.digiwallet.nl/paypal/v2/callback.php

http https://transaction.digiwallet.nl/paypal/v2/callback.php
Schermafbeelding 2021-06-23 om 16 57 29

🙄 🐛

remcotolsma commented 3 years ago

We again had some back and forth contact with DigiWallet (in Dutch):

DigiWallet

Ik heb het doorgegeven aan development. Dit geldt idd voor de test, er is voor nu een placeholder toegevoegd. Het ziet er nu zo uit 000000 PAYID-ABCDEFG1AB12345A1234567A| https://............................................... Kan je hier voor nu mee werken ?

Pronamic

Ja, dat lukt wel, alleen geeft https://www.digiwallet.nl/en/documentation/paypal#checkapi dan nu voor de placeholder het volgende resultaat:

DW_XE_0003 Validation failed, details: {"paymentID":"No transaction found for this ID"}

We kunnen op deze manier nog niet helemaal een succesvolle, geannuleerde of mislukte PayPal-betaling simuleren. Gaan jullie de placeholder nog vervangen met een correct transactienummer die ook in de check API is te gebruiken?

DigiWallet

Ik heb response van development. Je krijgt nu een test id terug die ook te controleren is.

Pronamic

We krijgen nog steeds transactienummer PAYID-ABCDEFG1AB12345A1234567A terug en als we de status opvragen nog steeds:

DW_XE_0003 Validation failed, details: {"paymentID":"No transaction found for this ID"}

Gaat er iets nog niet goed?

DigiWallet

Als ik deze aanroep https://transaction.digiwallet.nl/paypal/start?ver=1&rtlo=156099&test=1&amount=12300&description=Test%201624534442&returnurl=http://pay.local/?payment=452&key=pay_60d46daab25e9&userip=::1&reporturl=https://webhook.site/d4f98908-01e3-433f-a656-fbbb1ac02d8f& ​ krijg ik terug: ​ 000000 PAYID-ABCDEFG1AB12345A1234567A|https://pay.digiwallet.nl/test-transaction?transactionID=15459&paymethod=PYP&hash=c5aedca3695c8efc0b79ac4e6726dcfcceccd82207faf24000f1e485a38e5b4b ​ als ik deze aanroep https://pay.digiwallet.nl/test-transaction?transactionID=15459&paymethod=PYP&hash=c5aedca3695c8efc0b79ac4e6726dcfcceccd82207faf24000f1e485a38e5b4b krijg ik dan het testscherm, als ik vervolgens op test returnurl druk kom ik op jullie returnurl

als ik vervolgens aanroep : https://transaction.digiwallet.nl/paypal/check?rtlo=156099&trxid=PAYID-ABCDEFG1AB12345A1234567A

krijg ik : 000000 OK

Pronamic

Wij doen een HTTP POST request richting de PayPal check API: https://www.digiwallet.nl/en/documentation/paypal#checkapi

Invoke the following URL with a GET or POST

Het lijkt er op dat het met een GET request wel werkt, maar met een POST request niet.

GET

http GET https://transaction.digiwallet.nl/paypal/check?rtlo=156099&trxid=PAYID-ABCDEFG1AB12345A1234567A

POST

http POST https://transaction.digiwallet.nl/paypal/check rtlo=156099 trxid=PAYID-ABCDEFG1AB12345A1234567A

Als we een POST request doe naar een URL met waarin de rtlo en trxid URL-parameters werkt het wel:

http POST https://transaction.digiwallet.nl/paypal/check?rtlo=156099&trxid=PAYID-ABCDEFG1AB12345A1234567A

Maar dit wijkt dan af met de werking van de start API waarin we de parameters wel in de HTTP body kunnen posten. We kunnen prima overstappen naar een GET-request, maar hier is denk ik wel verbetering mogelijk.

Als ik op de simulatie pagina ook kies voor "Simuleer annulering" dan blijft de check API "000000 OK" teruggeven. Dat heeft er misschien ook wel mee te maken dat we nu voor elke PayPal-betaling nog de "PAYID-ABCDEFG1AB12345A1234567A" placeholder terug krijgen. Om het simuleren van een betaling goed te laten werken zal elke PayPal test betaling wel een unieke transactienummer moeten krijgen vermoed ik.

Met vriendelijke groet,

Remco Tolsma Pronamic

PS de "X-Powered-By: PHP/5.6.5" viel ons ook op, voor een payment provider waar veiligheid misschien ook wel hoog in het vaandel staat heeft het gebruik van een actief ondersteunde versie https://www.php.net/supported-versions.php de voorkeur?

DigiWallet

De versie die je ziet is nog een oude proxy de backend gebruikt hogere versies.

De test omgeving van paypal is helaas niet up to date zoals je gemerkt hebt..

Voor nu krijg je een zogenaamd uniek id terug. is het een probleem voor nu als dit id hetzelfde blijft ? de post zal ik iig doorgeven.

Pronamic

We wachten de terugkoppeling over het POST request issue even af.

Je vraagt ons of het probleem is dat jullie PayPal test omgeving niet goed werkt? Ik vind het persoonlijk niet een groot probleem, maar we hopen wel dat jullie het een probleem vinden. We begrijpen wel dat het niet 'à la minute' verbeterd kan worden, maar hopelijk hebben jullie wel de motivatie om dit te verbeteren.

Goed om te horen dat "X-Powered-By: PHP/5.6.5" alleen afkomstig is van een oude proxy, het is geen probleem dat die proxy server nog uitgerust is met een oudere PHP-versie? Ik ben geen expert op dat gebied, het risico dat er problemen ontstaan zal vast klein zijn, ik zou er denk ik alleen wel wat aan doen.

DigiWallet

De testomgeving paypal staat op de todo lijst, ​ Nee bij een proxy is dat geen probleem. Deze proxy wordt op den duur gestopt of geupdate. POST zou moeten werken nu.

It now indeed seems possible to use the check API via an HTTP POST request. However, the DigiWallet PayPal simulation environment does not work as you might expect. Previous issues do not give a lot of confidence in the DigiWallet payment solution, but will close this issue for now.