From 6858d5ca495c32964d99dfaeb0e3d89eefcb3775 Mon Sep 17 00:00:00 2001 From: "Antoine Vandevenne (anv)" Date: Wed, 31 Jan 2024 17:02:25 +0000 Subject: [PATCH] [IMP] payment, *: document technical details in README files Each payment acquirer has its own implementation specificities: some implement a 'payment with redirection' flow and others a 'direct payment flow'; sometimes the 'payment with redirection' flow is even implemented as a 'direct payment' flow through an iframe; one payment acquirer could support webhooks while another does not and relies on another mechanism to fetch payment status updates... It can be tricky to guess where to look in the code to determine how a payment acquirer is implemented. On top of that, the online payments ecosystem evolves at a fast pace due to competition, buyouts, and legislation enforcement. Acquirers are thus frequently migrated to new APIs that might differ in implementation from the previous API. To help figure out the *which*, *why*, *how*, and *when* of payment API implementations, a README.md file is added to the main directory of all payment acquirer modules. They can be browsed in human-readable format on GitHub. task-2374916 closes odoo/odoo#156084 X-original-commit: 4c19f26df3d39394cce2f183d6df15c5b89c7d27 Related: odoo/enterprise#57921 Signed-off-by: Antoine Vandevenne (anv) --- addons/payment_adyen/README.md | 87 +++++++++++++++++++++ addons/payment_adyen/__manifest__.py | 1 + addons/payment_alipay/README.md | 35 +++++++++ addons/payment_alipay/__manifest__.py | 1 + addons/payment_aps/README.md | 39 +++++---- addons/payment_aps/__manifest__.py | 1 + addons/payment_asiapay/README.md | 56 +++++++------ addons/payment_asiapay/__manifest__.py | 1 + addons/payment_authorize/README.md | 68 ++++++++++++++++ addons/payment_authorize/__manifest__.py | 1 + addons/payment_buckaroo/README.md | 27 +++++++ addons/payment_buckaroo/__manifest__.py | 1 + addons/payment_custom/README.md | 29 +++++++ addons/payment_custom/__manifest__.py | 1 + addons/payment_demo/README.md | 35 +++++++++ addons/payment_demo/__manifest__.py | 1 + addons/payment_flutterwave/README.md | 47 ++++++----- addons/payment_flutterwave/__manifest__.py | 1 + addons/payment_mercado_pago/README.md | 59 +++++++------- addons/payment_mercado_pago/__manifest__.py | 1 + addons/payment_mollie/README.md | 36 +++++++++ addons/payment_mollie/__manifest__.py | 1 + addons/payment_ogone/README.md | 42 ++++++++++ addons/payment_ogone/__manifest__.py | 1 + addons/payment_paypal/README.md | 32 ++++++++ addons/payment_paypal/__manifest__.py | 1 + addons/payment_payulatam/README.md | 20 +++++ addons/payment_payulatam/__manifest__.py | 1 + addons/payment_payumoney/README.md | 31 ++++++++ addons/payment_payumoney/__manifest__.py | 1 + addons/payment_razorpay/README.md | 58 ++++++++------ addons/payment_razorpay/__manifest__.py | 1 + addons/payment_sips/README.md | 31 ++++++++ addons/payment_sips/__manifest__.py | 1 + addons/payment_stripe/README.md | 65 +++++++++++++++ addons/payment_stripe/__manifest__.py | 1 + addons/payment_xendit/README.md | 34 +++----- addons/payment_xendit/__manifest__.py | 1 + 38 files changed, 715 insertions(+), 135 deletions(-) create mode 100644 addons/payment_adyen/README.md create mode 100644 addons/payment_alipay/README.md create mode 100644 addons/payment_authorize/README.md create mode 100644 addons/payment_buckaroo/README.md create mode 100644 addons/payment_custom/README.md create mode 100644 addons/payment_demo/README.md create mode 100644 addons/payment_mollie/README.md create mode 100644 addons/payment_ogone/README.md create mode 100644 addons/payment_paypal/README.md create mode 100644 addons/payment_payulatam/README.md create mode 100644 addons/payment_payumoney/README.md create mode 100644 addons/payment_sips/README.md create mode 100644 addons/payment_stripe/README.md diff --git a/addons/payment_adyen/README.md b/addons/payment_adyen/README.md new file mode 100644 index 00000000000..11f361f804f --- /dev/null +++ b/addons/payment_adyen/README.md @@ -0,0 +1,87 @@ +# Adyen + +## Technical details + +SDK: [Web Components](https://docs.adyen.com/online-payments/build-your-integration/?platform=Web&integration=Components) +version `5.39.0` + +APIs: + +- [Checkout API](https://docs.adyen.com/api-explorer/Checkout/) version `70` +- [Recurring API](https://docs.adyen.com/api-explorer/Recurring/) version `68` + +This module relies on the Web Components SDK to render payment methods and their payment detail +inputs on the payment form. The JS and CSS assets of the SDK are loaded directly from +the `__manifest__.py` file. + +When a Web Component needs to fetch/push information from/to Adyen or when a payment operation +(e.g., refund, offline payment) is executed from the backend, a server-to-server API call is made to +the appropriate API endpoint. + +This combined solution allows the implementation of a good-quality direct payment flow whilst +keeping the front-end development efforts low. The 3DS support is also entirely delegated to Adyen. + +This is achieved by following Web Components' +"[Advanced flow](https://docs.adyen.com/online-payments/build-your-integration/additional-use-cases/advanced-flow-integration)". +It is preferred over the recommended "Sessions flow" that only requires dealing with the `/sessions` +endpoint instead of three `/payment/*` endpoints because two of those are still required to +implement tokenization and handle 3DS redirects. + +## Supported features + +- Direct payment flow +- Webhook notifications +- Tokenization with or without payment +- Full and partial manual capture +- Full and partial refunds + +## Not implemented features + +- Express checkout + +## Module history + +- `17.0` + - The Web Drop-in SDK is replaced by the Web Components SDK (version 5.39.0); the Checkout and + Recurring APIs are updated to versions 70 and 68. odoo/odoo#120446 + - The 'Checkout API URL' and 'Recurring API URL' fields are replaced by the 'API URL Prefix' + field. odoo/odoo#126831 +- `16.4` + - The responses of webhook notifications are sent with the proper HTTP code. odoo/odoo#117940 +- `16.2` + - The support for partial manual capture is added. odoo/odoo#87251 +- `16.0` + - Archiving a token no longer deactivates the related payment method on Adyen. odoo/odoo#93774 +- `15.3` + - The support for manual capture is added. odoo/odoo#70591 +- `15.2` + - An HTTP 404 "Forbidden" error is raised instead of a Validation error when the authenticity of + the webhook notification cannot be verified. odoo/odoo#81607 +- `15.0` + - The support for both full and partial refunds is added. odoo/odoo#70881 + - The Web Drop-in SDK is migrated to version 4.7.3 and the Checkout API to version 67 to switch + from relying on origin keys and use client keys instead. odoo/odoo#74827 +- `14.3` + - The previous Hosted Payment Pages API that allowed for redirect payments is replaced by a + combination of the Web Drop-in SDK (version 3.9.4) and the Checkout (version 53) and Recurring + (version 49) APIs. odoo/odoo#141661 + +## Testing instructions + +https://docs.adyen.com/development-resources/testing/test-card-numbers/ + +### VISA + +**Card Number**: `4111111145551142` + +**Expiry Date**: `03/30` + +**CVC Code**: `737` + +### 3D Secure 2 + +**Card Number**: `5454545454545454` + +**Expiry Date**: `03/30` + +**CVC Code**: `737` diff --git a/addons/payment_adyen/__manifest__.py b/addons/payment_adyen/__manifest__.py index 1d243d24b0c..f4ba7999dbe 100644 --- a/addons/payment_adyen/__manifest__.py +++ b/addons/payment_adyen/__manifest__.py @@ -6,6 +6,7 @@ 'category': 'Accounting/Payment Providers', 'sequence': 350, 'summary': "A Dutch payment provider covering Europe and the US.", + 'description': " ", # Non-empty string to avoid loading the README file. 'depends': ['payment'], 'data': [ 'views/payment_adyen_templates.xml', diff --git a/addons/payment_alipay/README.md b/addons/payment_alipay/README.md new file mode 100644 index 00000000000..7028a3e68d5 --- /dev/null +++ b/addons/payment_alipay/README.md @@ -0,0 +1,35 @@ +# Alipay + +## Technical details + +API: [Global API](https://global.alipay.com/docs/ac/global/create_forex_trade) that is part of the +[cross-border website payment solution](https://global.alipay.com/docs/ac/web/integration) + +This module integrates Alipay using the generic payment with redirection flow based on form +submission provided by the `payment` module. + +## Supported features + +- Payment with redirection flow +- Webhook notifications + +## Module history + +- `17.0` + - The support for customer fees is removed as it is no longer supported by the `payment` module. + odoo/odoo#132104 +- `16.0` + - The module is deprecated and can no longer be installed from the web client. odoo/odoo#99025 +- `15.2` + - Webhook notifications that cannot be processed are discarded to prevent automatic disabling of + the webhook. odoo/odoo#81607 + +## Testing instructions + +https://docs.smart2pay.com/s2p_testdata_24/ + +**Buyer Account**: `cnbuyer_8292@alitest.com` + +**Login password**: `111111` + +**Payment password**: `111111` diff --git a/addons/payment_alipay/__manifest__.py b/addons/payment_alipay/__manifest__.py index 278c8e3ad98..f1af185f8e4 100644 --- a/addons/payment_alipay/__manifest__.py +++ b/addons/payment_alipay/__manifest__.py @@ -6,6 +6,7 @@ 'version': '2.0', 'sequence': 350, 'summary': "This module is deprecated.", + 'description': " ", # Non-empty string to avoid loading the README file. 'depends': ['payment'], 'data': [ 'views/payment_alipay_templates.xml', diff --git a/addons/payment_aps/README.md b/addons/payment_aps/README.md index d5e659311a2..6bfa1ef7975 100644 --- a/addons/payment_aps/README.md +++ b/addons/payment_aps/README.md @@ -1,27 +1,34 @@ -# Amazon payment Services +# Amazon Payment Services -## Implementation details +## Technical details -### Supported features +API: [Redirection API](https://paymentservices-reference.payfort.com/docs/api/build/index.html#redirection) + +This module integrates Amazon Payment Services using the generic payment with redirection flow based +on form submission provided by the `payment` module. + +## Supported features - Payment with redirection flow -- Payment by several global and local credit - [cards](https://paymentservices.amazon.com/docs/EN/24a.html). -- [Webhook](https://paymentservices-reference.payfort.com/docs/api/build/index.html#transaction-feedback) +- Webhook notifications -### API and gateway +## Not implemented features -We choose to integrate with the -[Redirection](https://paymentservices-reference.payfort.com/docs/api/build/index.html#redirection) -API as it is the gateway that covers the best our needs, out of the three that Amazon Payment -Services offers as of July 2022. See the task's dev notes for the details on the other gateways. +- [Tokenization with or without payment](https://paymentservices-reference.payfort.com/docs/api/build/index.html#safe-tokenization) -## Merge details +## Module history -The first version of the module was specified in task -[2802678](https://www.odoo.com/web#id=2802678&model=project.task) and merged with PR odoo/odoo#95860 -in `saas-15.5`. +- `16.0` + - The first version of the module is merged. odoo/odoo#95860 ## Testing instructions -https://paymentservices.amazon.com/docs/EN/12.html \ No newline at end of file +https://paymentservices.amazon.com/docs/EN/12.html + +### VISA + +**Card Number**: `4111111111111111` + +**Expiry Date**: any date in the future + +**CVC Code**: any diff --git a/addons/payment_aps/__manifest__.py b/addons/payment_aps/__manifest__.py index 88e05e5ae4e..c190ff8bb34 100644 --- a/addons/payment_aps/__manifest__.py +++ b/addons/payment_aps/__manifest__.py @@ -6,6 +6,7 @@ 'category': 'Accounting/Payment Providers', 'sequence': 350, 'summary': "An Amazon payment provider covering the MENA region.", + 'description': " ", # Non-empty string to avoid loading the README file. 'depends': ['payment'], 'data': [ 'views/payment_aps_templates.xml', diff --git a/addons/payment_asiapay/README.md b/addons/payment_asiapay/README.md index a6c0cb5544d..2e0f0ffc0bc 100644 --- a/addons/payment_asiapay/README.md +++ b/addons/payment_asiapay/README.md @@ -1,37 +1,47 @@ # AsiaPay -## Implementation details +## Technical details -### Supported features +API: Client Post Through Browser version `3.67` -- Payment with redirection flow. -- Webhook. -- Several payment methods including credit cards, chinese payment methods such as Alipay, and - [others](https://www.asiapay.com/payment.html#option). +This module integrates AsiaPay using the generic payment with redirection flow based on form +submission provided by the `payment` module. -In addition, AsiaPay also allows to implement manual capture, refunds, express checkout, and -multi-currency processing. +The entire API reference and the integration guide can be found on the +[Integration Guide](https://www.paydollar.com/pdf/op/enpdintguide.pdf). -### API and gateway +## Supported features -We choose to integrate with the Client Post Through Browser gateway which covers the best our needs, -out of the three that AsiaPay offers as of August 2022. +- Payment with redirection flow +- Webhook notifications -The entire API reference and the integration guides can be found on the [Integration Guide] -(https://www.paydollar.com/pdf/op/enpdintguide.pdf). +## Not implemented features -The version of the API implemented by this module is v3.67. +- Manual capture +- Refunds +- Express checkout +- Multi-currency processing -## Merge details +## Module history -The first version of the module was specified in task -[2845428](https://www.odoo.com/web#id=2845428&model=project.task) and merged with PR -odoo/odoo#98441 in `saas-15.5`. +- `16.2` + - The field "AsiaPay Brand" is added to select the API to use. odoo/odoo#110357 +- `16.1` + - The "AsiaPay Currency" field is replaced by the generic "Currencies" field of `payment`. + odoo/odoo#101018 +- `16.0` + - The first version of the module is merged. odoo/odoo#98441 ## Testing instructions -Card Number: `4335900000140045` -Expiry Date: `07/2030` -Name: `testing card` -CVC: `123` -3DS Password: `password` +### VISA + +**Card Number**: `4335900000140045` + +**Expiry Date**: `07/2030` + +**CVC Code**: `123` + +**Name**: `testing card` + +**3DS Password**: `password` diff --git a/addons/payment_asiapay/__manifest__.py b/addons/payment_asiapay/__manifest__.py index 8794073b603..84c274ed4cf 100644 --- a/addons/payment_asiapay/__manifest__.py +++ b/addons/payment_asiapay/__manifest__.py @@ -6,6 +6,7 @@ 'category': 'Accounting/Payment Providers', 'sequence': 350, 'summary': "An payment provider based in Hong Kong covering most Asian countries.", + 'description': " ", # Non-empty string to avoid loading the README file. 'depends': ['payment'], 'data': [ 'views/payment_asiapay_templates.xml', diff --git a/addons/payment_authorize/README.md b/addons/payment_authorize/README.md new file mode 100644 index 00000000000..f78f846954a --- /dev/null +++ b/addons/payment_authorize/README.md @@ -0,0 +1,68 @@ +# Authorize.net + +## Technical details + +SDK: [Accept.js](https://developer.authorize.net/api/reference/features/acceptjs.html) version `1` + +API: [Accept suite API](https://developer.authorize.net/api/reference/index.html) version `1` + +This module renders a self-hosted payment form with regular (non iframe) inputs and relies on the +Accept.js SDK to send the payment details to Authorize.net through a secure connection. The JS +assets are loaded in JavaScript when the payment form is submitted. + +Other communications with Authorize.net are performed via server-to-server API calls. + +This combined solution allows the implementation of a simple direct payment flow whilst keeping the +front-end development efforts low. As payment details are retrieved in clear but are immediately +passed to the Accept.js SDK, the solution qualifies for SAQ A-EP. + +## Supported features + +- Direct payment flow +- Tokenization with or without payment +- Full manual capture +- Full refunds + +## Missing features + +- Partial manual capture +- Webhook notifications: not available + +## Module history + +- `16.1` + - The "Authorize Currency" field is replaced by the generic "Currencies" field of `payment`. + odoo/odoo#101018 +- `16.0` + - Archiving a token no longer deactivates the related payment method on Authorize. odoo/odoo#93774 +- `15.4` + - The support for full refunds is added. odoo/odoo#92279 +- `15.0` + - Support for ACH payments is added. odoo/odoo#75289 +- `14.3` + - The payment with redirection flow that existed alongside the direct payment flow is dropped. + odoo/odoo#141661 + +## Testing instructions + +An HTTPS connection is required. + +https://developer.authorize.net/hello_world/testing_guide.html + +## VISA + +**Card Number**: `4111111111111111` + +## MasterCard + +**Card Number**: `5424000000000015` + +## eCheck + +**Bank Name**: whatever + +**Name On Account**: whatever + +**Account Number**: `123456` + +**ABA Routing Number**: `121122676` diff --git a/addons/payment_authorize/__manifest__.py b/addons/payment_authorize/__manifest__.py index ea22e4c9e73..0389c69ea4e 100644 --- a/addons/payment_authorize/__manifest__.py +++ b/addons/payment_authorize/__manifest__.py @@ -6,6 +6,7 @@ 'category': 'Accounting/Payment Providers', 'sequence': 350, 'summary': "An payment provider covering the US, Australia, and Canada.", + 'description': " ", # Non-empty string to avoid loading the README file. 'depends': ['payment'], 'data': [ 'views/payment_authorize_templates.xml', diff --git a/addons/payment_buckaroo/README.md b/addons/payment_buckaroo/README.md new file mode 100644 index 00000000000..5626bb7b283 --- /dev/null +++ b/addons/payment_buckaroo/README.md @@ -0,0 +1,27 @@ +# Buckaroo + +## Technical details + +API: [Buckaroo Payment Engine](https://www.pronamic.nl/wp-content/uploads/2013/04/BPE-3.0-Gateway-HTML.1.02.pdf) +version `3.0` + +This module integrates Buckaroo using the generic payment with redirection flow based on form +submission provided by the `payment` module. + +## Supported features + +- Payment with redirection flow + +## Not implemented features + +- Webhook notifications + +## Module history + +- `15.2` + - The support for webhook notifications is added. odoo/odoo#82922 + +## Testing instructions + +Buckaroo's hosted payment page allows to simulate payments and select the outcome without any +payment details when selecting the payment method PayPal. diff --git a/addons/payment_buckaroo/__manifest__.py b/addons/payment_buckaroo/__manifest__.py index 3ceb25ec7ad..0e3d9ec7898 100644 --- a/addons/payment_buckaroo/__manifest__.py +++ b/addons/payment_buckaroo/__manifest__.py @@ -6,6 +6,7 @@ 'category': 'Accounting/Payment Providers', 'sequence': 350, 'summary': "A Dutch payment provider covering several countries in Europe.", + 'description': " ", # Non-empty string to avoid loading the README file. 'depends': ['payment'], 'data': [ 'views/payment_buckaroo_templates.xml', diff --git a/addons/payment_custom/README.md b/addons/payment_custom/README.md new file mode 100644 index 00000000000..f8ba2b3aad2 --- /dev/null +++ b/addons/payment_custom/README.md @@ -0,0 +1,29 @@ +# Custom Payment Modes + +## Technical details + +This module does not integrate with an API and, instead, offers a base for implementing payment +providers with custom payment flows relying on payment instructions being displayed to the customer. +This is done by immediately marking transactions as 'pending' to display their 'pending message'. + +It defines a base Wire Transfer payment provider that allows making payments by bank transfer. + +## Supported features + +- Direct payment flow + +## Module history + +- `16.1` + - The default payment instructions message of Wire Transfer can be recomputed at any time after + installation of the module. odoo/odoo#103903 +- `16.0` + - The `custom_mode` field is added to distinguish custom payment modes from other payment + providers and to allow duplicating the base Wire Transfer provider in multi-company databases. + odoo/odoo#99400 + - The module is no longer automatically installed with the `payment` module. odoo/odoo#99400 + - The module is renamed from `payment_transfer` to `payment_custom`. odoo/odoo#99400 + +## Testing instructions + +Wire Transfer can be tested indifferently in test or live mode as it does not make API requests. diff --git a/addons/payment_custom/__manifest__.py b/addons/payment_custom/__manifest__.py index 77319640fcd..114856d0aa8 100644 --- a/addons/payment_custom/__manifest__.py +++ b/addons/payment_custom/__manifest__.py @@ -6,6 +6,7 @@ 'category': 'Accounting/Payment Providers', 'sequence': 350, 'summary': "A payment provider for custom flows like wire transfers.", + 'description': " ", # Non-empty string to avoid loading the README file. 'depends': ['payment'], 'data': [ 'views/payment_custom_templates.xml', diff --git a/addons/payment_demo/README.md b/addons/payment_demo/README.md new file mode 100644 index 00000000000..46362b1c4dd --- /dev/null +++ b/addons/payment_demo/README.md @@ -0,0 +1,35 @@ +# Demo + +## Technical details + +This module does not integrate with an API and, instead, allows for fake payments that can be made +to test applications' payment flows without API credentials nor payment method details. + +## Supported features + +- Direct payment flow +- Tokenization with our without payment +- Full and partial manual capture +- Full and partial refunds +- Express checkout +- Select the outcome of the payment + +## Module history + +- `17.0` + - The support for express checkout is added. odoo/odoo#113644 + - The support for customer fees is removed as it is no longer supported by the `payment` module. + odoo/odoo#132104 +- `16.3` + - The support for partial manual capture is added. odoo/odoo#117356 +- `16.0` + - The module is renamed from `payment_test` to `payment_demo`. odoo/odoo#99397 + - The support for manual capture, full and partial refunds, customer fees, and the selection of + the payment outcome are added. odoo/odoo#78083 + +## Testing instructions + +The Demo payment provider can only be used in test mode. + +No payment method details are required and the outcome of payments can be chosen. If provided, the +"Payment Details" are used as display name for the created payment tokens. diff --git a/addons/payment_demo/__manifest__.py b/addons/payment_demo/__manifest__.py index fd91f1e8956..47372672154 100644 --- a/addons/payment_demo/__manifest__.py +++ b/addons/payment_demo/__manifest__.py @@ -6,6 +6,7 @@ 'category': 'Hidden', 'sequence': 350, 'summary': "A payment provider for running fake payment flows for demo purposes.", + 'description': " ", # Non-empty string to avoid loading the README file. 'depends': ['payment'], 'data': [ 'views/payment_demo_templates.xml', diff --git a/addons/payment_flutterwave/README.md b/addons/payment_flutterwave/README.md index a67b38b6472..59a0aac8226 100644 --- a/addons/payment_flutterwave/README.md +++ b/addons/payment_flutterwave/README.md @@ -1,32 +1,39 @@ # Flutterwave -## Implementation details +## Technical details -### Supported features +API: [Flutterwave standard](https://developer.flutterwave.com/docs/collecting-payments/standard/) +version `3` + +This module integrates Flutterwave using the generic payment with redirection flow based on form +submission provided by the `payment` module. + +## Supported features - Payment with redirection flow -- [Tokenization](https://developer.flutterwave.com/reference/endpoints/tokenized-charge/) -- Several payment methods such as credit cards, M-Pesa, and - [others](https://developer.flutterwave.com/docs/collecting-payments/payment-methods/). -- [Webhook](https://developer.flutterwave.com/docs/integration-guides/webhooks/). +- Webhook notifications +- Tokenization with payment -In addition, Flutterwave also allows to implement refunds and pre-authorizations. +## Not implemented features -### API and gateway +- Manual capture +- Refunds -We choose to integrate with -[Flutterwave standard](https://developer.flutterwave.com/docs/collecting-payments/standard/) as it -is the gateway that covers the best our needs, out of the three that Flutterwave offers as of -May 2022. See the task's dev notes for the details on the other gateways. +## Module history -The version of the API implemented by this module is v3. - -## Merge details - -The first version of the module was specified in task -[2759117](https://www.odoo.com/web#id=2759117&model=project.task) and merged with PR -odoo/odoo#84820 in `saas-15.4`. +- `15.4` + - The first version of the module is merged. odoo/odoo#85514 ## Testing instructions -https://developer.flutterwave.com/docs/integration-guides/testing-helpers \ No newline at end of file +https://developer.flutterwave.com/docs/integration-guides/testing-helpers + +### MasterCard + +**Card Number**: `5531886652142950` + +**Expiry Date**: `09/32` + +**CVC Code**: `564` + +**OPT**: `12345` diff --git a/addons/payment_flutterwave/__manifest__.py b/addons/payment_flutterwave/__manifest__.py index 579f58a3a74..6c3cf713f17 100644 --- a/addons/payment_flutterwave/__manifest__.py +++ b/addons/payment_flutterwave/__manifest__.py @@ -6,6 +6,7 @@ 'category': 'Accounting/Payment Providers', 'sequence': 350, 'summary': "A Nigerian payment provider covering several African countries.", + 'description': " ", # Non-empty string to avoid loading the README file. 'depends': ['payment'], 'data': [ 'views/payment_flutterwave_templates.xml', diff --git a/addons/payment_mercado_pago/README.md b/addons/payment_mercado_pago/README.md index acff702d5d4..309ce22bd2f 100644 --- a/addons/payment_mercado_pago/README.md +++ b/addons/payment_mercado_pago/README.md @@ -1,41 +1,42 @@ # Mercado Pago -## Implementation details +## Technical details -### Supported features +APIs: +- [Checkout Pro](https://www.mercadopago.com.mx/developers/en/docs/checkout-pro/landing) +- [Checkout API](https://www.mercadopago.com.mx/developers/en/docs/checkout-api/landing) + +This module integrates Mercado Pago using a combination of "Checkout Pro" and "Checkout API". The +generic payment with redirection flow based on form submission provided by the `payment` module is +used to initiate the payment with the same request payload as Checkout Pro's JavaScript SDK would. +The remaining API calls are made to the Checkout API. It was not possible to only integrate with +Checkout Pro as it only allows redirecting customers to the payment page, nor with only the Checkout +API only as it requires building a custom payment form to accept direct payments from the merchant's +website. + +## Supported features - Payment with redirection flow -- Several payment methods such as credit cards, debit cards, and - [others](https://www.mercadopago.com.mx/developers/en/docs/checkout-api/payment-methods/other-payment-methods). -- [Webhook](https://www.mercadopago.com.mx/developers/en/docs/notifications/webhooks/webhooks) - notifications. +- Webhook notifications -### Not implemented features +## Not implemented features -- [Manual capture](https://www.mercadopago.com.mx/developers/en/docs/checkout-api/payment-management/capture-authorized-payment). -- [Partial refunds](https://www.mercadopago.com.mx/developers/en/docs/checkout-api/payment-management/cancellations-and-refunds). +- [Manual capture](https://www.mercadopago.com.mx/developers/en/docs/checkout-api/payment-management/capture-authorized-payment) +- [Full and partial refunds](https://www.mercadopago.com.mx/developers/en/docs/checkout-api/payment-management/cancellations-and-refunds) -### API and gateway +## Module history -We choose to integrate with a combination of the -[Checkout Pro](https://www.mercadopago.com.mx/developers/en/docs/checkout-pro/landing) and -[Checkout API](https://www.mercadopago.com.mx/developers/en/docs/checkout-api/landing) solutions: -The payment with redirection flow is initiated by sending a client HTTP request with a form-encoded -payload like Checkout Pro's JavaScript SDK does under the hood. The remaining API calls are made -according to the Checkout API's documentation. It was not possible to integrate with Checkout Pro -only as it only allows redirecting customers to the payment page, nor with the Checkout API only as -it requires building a custom payment form to accept direct payments from the merchant's website. - -The other gateways were ruled out. See the task's dev notes for the details on the other gateways. - -The API implemented by this module is not versioned. - -## Merge details - -The first version of the module was specified in task -[2704764](https://www.odoo.com/web#id=2704764&model=project.task) and merged with PR -odoo/odoo#83957 in `saas-15.5`. +- `16.0` + - The first version of the module is merged. odoo/odoo#83957 ## Testing instructions -https://www.mercadopago.com.mx/developers/en/docs/checkout-api/integration-test/test-cards +https://www.mercadopago.com.mx/developers/en/docs/checkout-api/additional-content/your-integrations/test/cards + +### VISA + +**Card Number**: `4075595715555555` + +**Expiry Date**: `11/25` + +**Security Code**: `123` diff --git a/addons/payment_mercado_pago/__manifest__.py b/addons/payment_mercado_pago/__manifest__.py index 126976d1306..7fd6d51d4f2 100644 --- a/addons/payment_mercado_pago/__manifest__.py +++ b/addons/payment_mercado_pago/__manifest__.py @@ -6,6 +6,7 @@ 'category': 'Accounting/Payment Providers', 'sequence': 350, 'summary': "A payment provider covering several countries in Latin America.", + 'description': " ", # Non-empty string to avoid loading the README file. 'depends': ['payment'], 'data': [ 'views/payment_mercado_pago_templates.xml', diff --git a/addons/payment_mollie/README.md b/addons/payment_mollie/README.md new file mode 100644 index 00000000000..2a50f486b18 --- /dev/null +++ b/addons/payment_mollie/README.md @@ -0,0 +1,36 @@ +# Mollie + +## Technical details + +API: [Payments API](https://docs.mollie.com/reference/v2/payments-api/create-payment) version `2` + +This module integrates Mollie using the generic payment with redirection flow based on form +submission provided by the `payment` module. + +## Supported features + +- Payment with redirection flow +- Webhook notifications + +## Not implemented features + +- Tokenization +- Manual capture +- Refunds + +## Module history + +- `15.0` + - The first version of the module is merged. odoo/odoo#74136 + +## Testing instructions + +An HTTPS connection is required. + +https://docs.mollie.com/overview/testing + +**Card Number**: `4111111111111111` + +**Expiry Date**: `123` + +**CVC Code**: `123` diff --git a/addons/payment_mollie/__manifest__.py b/addons/payment_mollie/__manifest__.py index 492ac012381..3da3a110cda 100755 --- a/addons/payment_mollie/__manifest__.py +++ b/addons/payment_mollie/__manifest__.py @@ -6,6 +6,7 @@ 'category': 'Accounting/Payment Providers', 'sequence': 350, 'summary': "A Dutch payment provider covering several European countries.", + 'description': " ", # Non-empty string to avoid loading the README file. 'author': 'Odoo S.A., Applix BV, Droggol Infotech Pvt. Ltd.', 'website': 'https://www.mollie.com', 'depends': ['payment'], diff --git a/addons/payment_ogone/README.md b/addons/payment_ogone/README.md new file mode 100644 index 00000000000..1bf6196ac58 --- /dev/null +++ b/addons/payment_ogone/README.md @@ -0,0 +1,42 @@ +# Ogone + +## Technical details + +APIs: + +- [Hosted Payment Page](https://support.legacy.worldline-solutions.com/integration-solutions/integrations/hosted-payment-page?com.dotmarketing.htmlpage.language=1&skiprules=true&com.dotmarketing.htmlpage.language=1&skiprules=true) +- [Direct Link](https://support.legacy.worldline-solutions.com/integration-solutions/integrations/directlink?com.dotmarketing.htmlpage.language=1&skiprules=true&com.dotmarketing.htmlpage.language=1&skiprules=true) + +This module relies on a combination of two APIs to implement a payment with redirection flow that +allows for tokenization. The Hosted Payment Page API is integrated using the generic payment with +redirection flow based on form submission provided by the `payment` module. The Direct Link API +is used for token payments. + +## Supported features + +- Payment with redirection flow +- Webhook notifications +- Tokenization with payment + +## Not implemented features + +- Tokenization without payment + +## Module history + +- `16.0` + - The module is deprecated and can no longer be installed from the web client. odoo/odoo#99025 +- `15.2` + - Webhook notifications that cannot be processed are discarded to prevent automatic disabling of + the webhook. odoo/odoo#81607 +- `14.3` + - The FlexCheckout API is removed and with it the support for payment method validations. + odoo/odoo#72624 + - The FlexCheckout API is introduced to handle payment method validations that were performed in + a non-secure way through the Hosted Payment Page API. odoo/odoo#56187 + - The module is renamed from `payment_ingenico` to `payment_ogone`. odoo/odoo#56187 + +## Testing instructions + +Test card numbers are specific to the Ogone account. From Ogone's Backoffice, find them in +Configuration > Technical information > Test info. diff --git a/addons/payment_ogone/__manifest__.py b/addons/payment_ogone/__manifest__.py index 4e93260ca80..d6cf2dc218b 100644 --- a/addons/payment_ogone/__manifest__.py +++ b/addons/payment_ogone/__manifest__.py @@ -6,6 +6,7 @@ 'category': 'Accounting/Payment Providers', 'sequence': 350, 'summary': "This module is deprecated.", + 'description': " ", # Non-empty string to avoid loading the README file. 'depends': ['payment'], 'data': [ 'views/payment_ogone_templates.xml', diff --git a/addons/payment_paypal/README.md b/addons/payment_paypal/README.md new file mode 100644 index 00000000000..c1353d9c3e4 --- /dev/null +++ b/addons/payment_paypal/README.md @@ -0,0 +1,32 @@ +# PayPal + +## Technical details + +API: [PayPal Payments Standard](https://developer.paypal.com/api/nvp-soap/paypal-payments-standard/integration-guide/formbasics/) + +This module integrates PayPal using the generic payment with redirection flow based on form +submission provided by the `payment` module. + +## Supported features + +- Payment with redirection flow +- Webhook notifications + +## Module history + +- `17.0` + - The support for customer fees is removed as it is no longer supported by the `payment` module. + odoo/odoo#132104 +- `16.2` + - The "Merchant Account ID" and "Use IPN" fields are removed. odoo/odoo#104974 +- `16.1` + - Customer fees are converted into the currency of the payment transaction. odoo/odoo#100156 +- `15.2` + - An HTTP 404 "Forbidden" error is raised instead of a Validation error when the authenticity of + the webhook notification cannot be verified. odoo/odoo#81607 + +## Testing instructions + +Payments must be made using a separate [sandbox account](https://www.sandbox.paypal.com/myaccount/). + +Read more at https://developer.paypal.com/tools/sandbox/. diff --git a/addons/payment_paypal/__manifest__.py b/addons/payment_paypal/__manifest__.py index 7a310a375a8..ffbf78d763d 100644 --- a/addons/payment_paypal/__manifest__.py +++ b/addons/payment_paypal/__manifest__.py @@ -6,6 +6,7 @@ 'category': 'Accounting/Payment Providers', 'sequence': 350, 'summary': "An American payment provider for online payments all over the world.", + 'description': " ", # Non-empty string to avoid loading the README file. 'depends': ['payment'], 'data': [ 'views/payment_paypal_templates.xml', diff --git a/addons/payment_payulatam/README.md b/addons/payment_payulatam/README.md new file mode 100644 index 00000000000..2e073696020 --- /dev/null +++ b/addons/payment_payulatam/README.md @@ -0,0 +1,20 @@ +# PayU Latam + +## Technical details + +API: [WebCheckout](https://developers.payulatam.com/latam/en/docs/integrations/webcheckout-integration.html) + +This module integrates PayU Latam using the generic payment with redirection flow based on form +submission provided by the `payment` module. + +## Supported features + +- Payment with redirection flow +- Webhook notifications + +## Module history + +- `16.0` + - The module is deprecated and can no longer be installed from the web client. odoo/odoo#99025 +- `15.0` + - The support for webhook notifications is added. odoo/odoo#84069 diff --git a/addons/payment_payulatam/__manifest__.py b/addons/payment_payulatam/__manifest__.py index dcbde61edac..bff26269ba7 100644 --- a/addons/payment_payulatam/__manifest__.py +++ b/addons/payment_payulatam/__manifest__.py @@ -6,6 +6,7 @@ 'category': 'Accounting/Payment Providers', 'sequence': 350, 'summary': "This module is deprecated.", + 'description': " ", # Non-empty string to avoid loading the README file. 'depends': ['payment'], 'data': [ 'views/payment_payulatam_templates.xml', diff --git a/addons/payment_payumoney/README.md b/addons/payment_payumoney/README.md new file mode 100644 index 00000000000..4e09cf2a61b --- /dev/null +++ b/addons/payment_payumoney/README.md @@ -0,0 +1,31 @@ +# PayUmoney + +## Technical details + +API: [PayUMoney Payment Gateway](https://www.payumoney.com/pdf/PayUMoney-Technical-Integration-Document.pdf) + +This module integrates PayUmoney using the generic payment with redirection flow based on form +submission provided by the `payment` module. + +## Supported features + +- Payment with redirection flow + +## Module history + +- `16.0` + - The module is deprecated and can no longer be installed from the web client. odoo/odoo#99025 + +## Testing instructions + +**Phone**: `123456` + +**Email**: `test@example.com` + +**Card Number**: `4012001037141112` + +**Expiry**: any date in the future + +**CVV**: `123` + +**TOTP**: `123456` \ No newline at end of file diff --git a/addons/payment_payumoney/__manifest__.py b/addons/payment_payumoney/__manifest__.py index 3aff8d6a561..f93baf89c88 100644 --- a/addons/payment_payumoney/__manifest__.py +++ b/addons/payment_payumoney/__manifest__.py @@ -6,6 +6,7 @@ 'category': 'Accounting/Payment Providers', 'sequence': 350, 'summary': "This module is deprecated.", + 'description': " ", # Non-empty string to avoid loading the README file. 'depends': ['payment'], 'data': [ 'views/payment_payumoney_templates.xml', diff --git a/addons/payment_razorpay/README.md b/addons/payment_razorpay/README.md index c032c47cdbb..f1e012efaaa 100644 --- a/addons/payment_razorpay/README.md +++ b/addons/payment_razorpay/README.md @@ -1,41 +1,47 @@ # Razorpay -## Implementation details +## Technical details -### Supported features +API: [Recurring Payments API](https://razorpay.com/docs/api/payments/recurring-payments/) +version `1` + +## Supported features - Direct payment flow -- Tokenization -- Manual capture +- Webhook notifications +- Full manual capture - Partial refunds -- Several payment methods such as debit/credit cards, netbanking, UPI, and - [others](https://razorpay.com/docs/payments/payment-methods/). -- [Webhook](https://razorpay.com/docs/webhooks). -### API and gateway +## Not implemented features -We choose to integrate with -[Razorpay Recurring Payments](https://razorpay.com/docs/api/payments/recurring-payments/), which is -more complex to handle than -[Razorpay Hosted Checkout](https://razorpay.com/docs/payments/payment-gateway/web-integration/hosted) -because it works as a direct payment flow, because it allows for tokenization. The other gateways -were ruled out; see the original task's dev notes for the details on the other gateways. - -The version of the API implemented by this module is v1. +- Partial manual capture ## Module history -- The first version of the module was specified in task - [2800823](https://www.odoo.com/web#id=2800823&model=project.task) and merged with PR - odoo/odoo#92848 in `saas-15.5`. -- The API was changed to the Recurring Payments API to support tokenization with PR odoo/odoo#143525 - in `17.0`. +- `17.0` + - The previous Hosted Checkout API that allowed for redirect payments is replaced by the Recurring + Payments API that supports direct payments and tokenization. odoo/odoo#143525 +- `16.0` + - The first version of the module is merged. odoo/odoo#92848 ## Testing instructions -- The partner's phone number must be a valid Indian phone number. Example: +911234567890 -- The partner's country must be India and the payment currency INR to enable India-based payment - methods. +https://razorpay.com/docs/payments/payments/test-card-upi-details/ -See https://razorpay.com/docs/payments/payments/test-card-upi-details/ and -https://razorpay.com/docs/payments/payments/test-upi-details/ for the list of test payment details. +https://razorpay.com/docs/payments/payments/test-upi-details/ + +A valid Indian phone number must be set on the partner. Example: `+91123456789` + +### VISA + +**Card Number**: `4111111111111111` + +**Expiry Date**: any future date + +**Card Secret**: any + +**OTP**: `1111` + +### UPI + +**UPI ID**: `success@razorpay` or `failure@razorpay` diff --git a/addons/payment_razorpay/__manifest__.py b/addons/payment_razorpay/__manifest__.py index 2a4f76178fa..767a3d804c0 100644 --- a/addons/payment_razorpay/__manifest__.py +++ b/addons/payment_razorpay/__manifest__.py @@ -6,6 +6,7 @@ 'category': 'Accounting/Payment Providers', 'sequence': 350, 'summary': "A payment provider covering India.", + 'description': " ", # Non-empty string to avoid loading the README file. 'depends': ['payment'], 'data': [ 'views/payment_provider_views.xml', diff --git a/addons/payment_sips/README.md b/addons/payment_sips/README.md new file mode 100644 index 00000000000..029b1c9be2e --- /dev/null +++ b/addons/payment_sips/README.md @@ -0,0 +1,31 @@ +# SIPS + +## Technical details + +API: [SIPS Paypage](https://docs.sips.worldline-solutions.com/en/WLSIPS.317-UG-Sips-Paypage-POST.html#Data-field-element-syntax_) + + + +This module integrates SIPS using the generic payment with redirection flow based on form +submission provided by the `payment` module. + +## Supported features + +- Payment with redirection flow +- Webhook notifications + +## Module history + +- `15.2` + - An HTTP 404 "Forbidden" error is raised instead of a Validation error when the authenticity of + the webhook notification cannot be verified. odoo/odoo#81607 + +## Testing instructions + +### VISA + +**Card Number**: `4100000000000000` + +### MasterCard + +**Card Number**: `5100000000000000` \ No newline at end of file diff --git a/addons/payment_sips/__manifest__.py b/addons/payment_sips/__manifest__.py index 40f19baa250..90f0a6152e5 100644 --- a/addons/payment_sips/__manifest__.py +++ b/addons/payment_sips/__manifest__.py @@ -7,6 +7,7 @@ 'category': 'Accounting/Payment Providers', 'sequence': 350, 'summary': "A French payment provider for online payments all over the world.", + 'description': " ", # Non-empty string to avoid loading the README file. 'depends': ['payment'], 'data': [ 'views/payment_provider_views.xml', diff --git a/addons/payment_stripe/README.md b/addons/payment_stripe/README.md new file mode 100644 index 00000000000..83b0bb674ae --- /dev/null +++ b/addons/payment_stripe/README.md @@ -0,0 +1,65 @@ +# Stripe + +## Technical details + +SDK: [Stripe.js](https://stripe.com/docs/js) version `3` + +API: [Stripe API](https://stripe.com/docs/api) version `2019-05-16` + +This module integrates Stripe using a custom implementation of the payment with redirection flow: no +redirect form is rendered and, instead, a Checkout Session object is created from the server before +the customer is redirected to the session's payment page from the front-end. This is achieved by +following the [Stripe-hosted page](https://stripe.com/docs/checkout/quickstart) guide. + +The module also offers a quick onboarding thanks to the Stripe Connect platform solution. + +## Supported features + +- Payment with redirection flow +- Webhook notifications +- Tokenization with or without payment +- Full manual capture +- Full and partial refunds +- Express checkout + +## Not implemented features + +- Partial manual capture + +## Module history + +- `16.4` + - The previous Checkout API that allowed for redirect payments is replaced by the Payment Intents + API that supports direct payments. odoo/odoo#123573 + - The support for eMandates for recurring payments is added. odoo/odoo#123573 + - The responses of webhook notifications are sent with the proper HTTP code. odoo/odoo#117940 +- `16.0` + - Stripe uses the payment methods set up on the account when none are assigned to the payment + provider in Odoo, instead of only offering the "Card" payment method. odoo/odoo#107647 + - The support for express checkout is added. odoo/odoo#88374 +- `15.4` + - The support for full and partial refunds is added. odoo/odoo#92235 +- `15.3` + - Webhook notifications accept three new events based on the PaymentIntent and SetupIntent objects + in place of the `checkout.session.completed` event to handle async payment status updates. + odoo/odoo#84150 + - The support for manual capture is added. odoo/odoo#69598 +- `15.2` + - An HTTP 404 "Forbidden" error is raised instead of a Validation error when the authenticity of + the webhook notification cannot be verified. odoo/odoo#81607 +- `15.0` + - A new button is added to create a webhook automatically. odoo/odoo#79621 + - The support for the Stripe Connect onboarding flow is added. odoo/odoo#79621 +- `14.3` + - The previous direct payment flow that was supported by the SetupIntent API is replaced by a + payment with redirection flow using the Checkout API. odoo/odoo#141661 + +## Testing instructions + +https://stripe.com/docs/testing + +**Card Number**: `4111111111111111` + +**Expiry Date**: any future date + +**CVC Code**: any diff --git a/addons/payment_stripe/__manifest__.py b/addons/payment_stripe/__manifest__.py index 66b7a3b9f98..c4761975fd7 100644 --- a/addons/payment_stripe/__manifest__.py +++ b/addons/payment_stripe/__manifest__.py @@ -6,6 +6,7 @@ 'category': 'Accounting/Payment Providers', 'sequence': 350, 'summary': "An Irish-American payment provider covering the US and many others.", + 'description': " ", # Non-empty string to avoid loading the README file. 'depends': ['payment'], 'data': [ 'views/payment_provider_views.xml', diff --git a/addons/payment_xendit/README.md b/addons/payment_xendit/README.md index 7ce60571f04..ab75217628e 100644 --- a/addons/payment_xendit/README.md +++ b/addons/payment_xendit/README.md @@ -1,34 +1,26 @@ # Xendit -## Implementation details +## Technical details -### Supported features +API: [Invoices API](https://developers.xendit.co/api-reference/#create-invoice) version `2` -- [Payment with redirection flow](https://developers.xendit.co/api-reference/#create-invoice) -- Several payment methods such as credit cards, bank transfers, eWallets, pay later, and - [others](https://docs.xendit.co/payment-link/payment-channels). -- [Webhook](https://developers.xendit.co/api-reference/#invoice-callback). +This module integrates Xendit using the generic payment with redirection flow based on form +submission provided by the `payment` module. -In addition, Xendit also allows to implement tokenization. +## Supported features -### API and gateway +- Payment with redirection flow +- Webhook notifications -We choose to integrate with the -[Invoices API](https://developer.flutterwave.com/docs/collecting-payments/standard/) as it -is the gateway that covers the best our needs: it is a payment with redirection flow and is -compatible with `payment`'s form-based implementation of that flow. +## Not implemented features -The [Payments API](https://developers.xendit.co/api-reference/#payments-api) was considered too, but -it requires implementing a more complex direct payment flow and linking the customer account. +- Tokenization -The version of the API implemented by this module is v2. +## Module history -## Merge details - -The first version of the module was specified in task -[2946329](https://www.odoo.com/web#id=2759117&model=project.task) and merged with PR -odoo/odoo#141661 in branch `17.0`. +- `17.0` + - The first version of the module is merged. odoo/odoo#141661 ## Testing instructions -https://developers.xendit.co/api-reference/#test-scenarios \ No newline at end of file +https://developers.xendit.co/api-reference/#test-scenarios diff --git a/addons/payment_xendit/__manifest__.py b/addons/payment_xendit/__manifest__.py index b7b259560ce..ad74fd731cd 100644 --- a/addons/payment_xendit/__manifest__.py +++ b/addons/payment_xendit/__manifest__.py @@ -6,6 +6,7 @@ 'category': 'Accounting/Payment Providers', 'sequence': 350, 'summary': "A payment provider for Indonesian and the Philippines.", + 'description': " ", # Non-empty string to avoid loading the README file. 'depends': ['payment'], 'data': [ 'views/payment_provider_views.xml',