thephpleague / omnipay-mollie

Mollie driver for the Omnipay PHP payment processing library
MIT License
62 stars 39 forks source link

Webhook payment status using Direct Debit missing? #77

Open magnolia61 opened 3 years ago

magnolia61 commented 3 years ago

We are using the omnipay Mollie library with a CiviCRM integration package (https://github.com/eileenmcnaughton/nz.co.fuzion.omnipaymultiprocessor).

When we use Mollie with iDeal all works well. When we use it with SEPA Direct Debit no webhook is called to notify the system that the direct debit mandate has successfully been given.

What I would expect is a webhook being called, with the transaction ID, and a payment status of in progress or so.

We are not sure if this is a bug or just not working (yet), maybe even by design. Right now in our registration system we cannot discern between Direct Debit payments that failed, canceled or successfully awaiting the debit.

We would love to hear advise on this. Thanks for this wonderful payment method!

ndijkstra commented 3 years ago

Hi @magnolia61, we also call the webhook for SDD payments if you have specified the webhookUrl when creating the payment or subscription.

For more info about webhooks in combination with subscriptions: https://docs.mollie.com/payments/recurring#how-do-webhooks-for-subscriptions-work

If you just create a SDD payment via our Payments API, we just call the webhook like for any other payment method.

magnolia61 commented 3 years ago

I am only using Mollie for one-off payments. So basically you confirm that right now for one-off payments there is no webhook callback when a direct debit mandate is successfully given? Right now the CRM has no means to know if the mandate is given and what the status is of the payment. When status 'in progress' would be called back the CRM would know and be able to inform the enduser about the debit that is about to take place (conform SEPA regulations.

Could I propose to please also make this possible for one-off direct debit (eg. SEPA) payments? :-)

ndijkstra commented 3 years ago

For mandates, we do not have webhooks, only for payments. If you create a directdebit payment via the Payments API, you can pass a webhookUrl. If the direct debit payment is set to paid or failed, or a chargeback is received we shall call the webhook.

magnolia61 commented 3 years ago

Clear. I understand the way it is now with Mollie. Please consider this a cry for this feature to be on the wishlist as it would really serve a need (especially regarding mandatory SEPA communication). Would you be able to take this as a featrure request or would I need to follow another route to make this officially known?

ndijkstra commented 3 years ago

How do you create the mandates atm? Via a first payment, or via the Mandates API? I'll create a feature request on our side for webhooks related to mandates.

magnolia61 commented 3 years ago

We use the integrated SEPA Direct Debit payment method in which a mandate is given, no payment Screenshot_2021-02-09 27-9163-Online bijdrage - Veilig betalen via Mollie

Currently we have no way to discern if someone cancelled the process and aborted the 'payment' or that a mandate was successfully given. By your feedback I realize this would entail more a change at Mollie's side than a change in the code of this repository. Thank you for thinking along.

ndijkstra commented 3 years ago

Ah, this is the legacy Direct Debit payment flow. In this case you create a "one-off" payment with the method "directdebit". In this flow, no mandate on our side is created (that is visible via the Mandates API). You can just use the webhookUrl of this one-off payment to see if it is paid, expired or canceled. If the shopper cancels the payment, the shopper is redirected back to the redirectUrl.