From e9f7a1d93de95757c283af51e203ad837c562c9d Mon Sep 17 00:00:00 2001
From: Matthew Wire <mjw@mjwconsult.co.uk>
Date: Mon, 1 Feb 2021 17:26:52 +0000
Subject: [PATCH] Add roadmap for bancontact

---
 docs/roadmap.md | 40 +++++++++++++++++++++++++++++++---------
 1 file changed, 31 insertions(+), 9 deletions(-)

diff --git a/docs/roadmap.md b/docs/roadmap.md
index 654489b0..60279ad5 100644
--- a/docs/roadmap.md
+++ b/docs/roadmap.md
@@ -35,6 +35,24 @@ confirm and map Stripe customer IDs to CiviCRM contacts.
 
 This would require funding for approximately 16 hours work.
 
+## Card on File
+
+Stripe supports saving cards and other payment methods. These can be retrieved, re-used and updated.
+We would like to provide support for re-using saved cards in CiviCRM.
+
+### Specification
+
+1. Develop a method to deduplicate payment methods (see eg. https://github.com/stripe/stripe-payments-demo/issues/45).
+  Cards are duplicated by default and we need to clean this up before we can provide a UI to retrieve cards in CiviCRM.
+2. Build a UI to allow for selection of cards to use for making payment.
+3. Integrate card-selection UI into payment flow (so for example a form validation failure will remember the card you just entered and verified).
+
+### Estimate
+
+This would require funding for approximately 24 hours work.
+
+## Payment Methods
+
 ## Stripe Connect
 
 See https://stripe.com/connect
@@ -47,21 +65,25 @@ See https://lab.civicrm.org/extensions/stripe/-/issues/81
 
 See https://civicrm.org/make-it-happen/stripe-ach-payments
 
-## Card on File
+## Bancontact
 
-Stripe supports saving cards and other payment methods. These can be retrieved, re-used and updated.
-We would like to provide support for re-using saved cards in CiviCRM.
+See https://stripe.com/docs/payments/bancontact
 
-### Specification
+This is a "Bank Redirect" type of payment.
 
-1. Develop a method to deduplicate payment methods (see eg. https://github.com/stripe/stripe-payments-demo/issues/45).
-  Cards are duplicated by default and we need to clean this up before we can provide a UI to retrieve cards in CiviCRM.
-2. Build a UI to allow for selection of cards to use for making payment.
-3. Integrate card-selection UI into payment flow (so for example a form validation failure will remember the card you just entered and verified).
+### Implementation
+
+1. Create a paymentIntent of type "bancontact" and return the client secret.
+2. Collect payment method details (name) on the client form.
+3. Handle redirect to bancontact to make payment and return to CiviCRM.
+4. Handle payment_intent.succeeded webhook to confirm payment.
 
 ### Estimate
 
-This would require funding for approximately 24 hours work.
+20 hours. This represents approximately 12 hours for the generic "Bank Redirect" functionality
+in the Stripe extension and then 8 hours for the specific payment method "Bancontact".
 
+Adding additional payment methods such as Sofort would then require approximately 8 hours each
+to implement.
 
 
-- 
GitLab