From a1f4c3704bff900b9db5fce35b647ed4eef0f357 Mon Sep 17 00:00:00 2001 From: "Tom Aarab (toaa)" Date: Wed, 14 Sep 2022 14:32:35 +0000 Subject: [PATCH] [IMP] Payment providers: advertise and document the "demo" provider New page to document the new features of the demo payment provider, and modifications to related pages task id: 2982367 closes odoo/documentation#2736 Signed-off-by: Castillo Jonathan (jcs) --- .../finance/payment_providers.rst | 66 ++++++++++++++---- .../finance/payment_providers/demo.rst | 39 +++++++++++ .../demo/demo-payment-outcome.png | Bin 0 -> 10168 bytes .../payment_providers/demo/demo-view-form.png | Bin 0 -> 4259 bytes 4 files changed, 91 insertions(+), 14 deletions(-) create mode 100644 content/applications/finance/payment_providers/demo.rst create mode 100644 content/applications/finance/payment_providers/demo/demo-payment-outcome.png create mode 100644 content/applications/finance/payment_providers/demo/demo-view-form.png diff --git a/content/applications/finance/payment_providers.rst b/content/applications/finance/payment_providers.rst index 968fc957f..9704dcae7 100644 --- a/content/applications/finance/payment_providers.rst +++ b/content/applications/finance/payment_providers.rst @@ -14,6 +14,7 @@ Payment providers (credit cards, online payments) payment_providers/asiapay payment_providers/authorize payment_providers/buckaroo + payment_providers/demo payment_providers/flutterwave payment_providers/mercado_pago payment_providers/mollie @@ -63,83 +64,96 @@ Online payment providers :widths: auto * - - - Payment flow + - Payment flow from - :ref:`Tokenization ` - :ref:`Manual capture ` - :ref:`Refunds ` - :ref:`Express checkout ` + - :ref:`Extra fees ` * - :doc:`Adyen ` - - Payment from Odoo + - Odoo - |V| - Full only - Full and partial - + - * - :doc:`Amazon Payment Services ` - - Payment from the provider website + - The provider website + - - - - - * - :doc:`AsiaPay ` - - Payment from the provider website + - The provider website + - - - - - * - :doc:`Authorize.Net ` - - Payment from Odoo + - Odoo - |V| - Full only - Full only - + - * - :doc:`Buckaroo ` - - Payment from the provider website + - The provider website + - - - - - * - :doc:`Flutterwave ` - - Payment from the provider website + - The provider website - |V| - - - + - * - :doc:`Mercado Pago ` - - Payment from the provider website + - The provider website + - - - - - * - :doc:`Mollie ` - - Payment from the provider website + - The provider website + - - - - - * - :doc:`PayPal ` - - Payment from the provider website + - The provider website - - - - + - |V| * - :doc:`Razorpay ` - - Payment from the provider website + - The provider website - - Full only - Full and partial - + - * - :doc:`SIPS ` - - Payment from the provider website + - The provider website + - - - - - * - :doc:`Stripe ` - - Payment from the provider website + - The provider website - |V| - Full only - Full and partial - |V| + - .. |V| replace:: ✔ @@ -150,6 +164,12 @@ Online payment providers added and configured on your Accounting app to do a bank reconciliation, which is an accounting control process. +.. tip:: + In addition to the regular payment providers that integrate with an API such as Stripe, PayPal, + or Adyen, Odoo bundles the :doc:`Demo payment provider `. This payment + provider allows you to make demo payments to test business flows involving online payments. No + credentials are required as the demo payments are fake. + .. _payment_providers/bank_payments: Bank payments @@ -251,7 +271,7 @@ Express checkout If your payment provider supports this feature, customers can use the **Google Pay** and **Apple Pay** buttons to pay their eCommerce orders in one click without filling the contact form. Using one -of those buttons, they'll go straight from the cart to the confirmation page, stopping by the +of those buttons, customers go straight from the cart to the confirmation page, stopping by the payment form of Google or Apple to validate the payment. Enable this feature by navigating to the :guilabel:`Configuration` tab from your payment provider @@ -260,6 +280,23 @@ and by ticking the :guilabel:`Allow Express Checkout` checkbox. .. note:: All prices shown in the express checkout payment form are always taxes included. +.. _payment_providers/features/extra_fees: + +Extra Fees +---------- + +If supported by the payment provider, you can add **extra fees** to online transactions. Fees can be +configured either as **fixed** amounts and percentages, **variable** amounts and percentages, or +*both* simultaneously. These can be applied according to **domestic** or **international** +geolocation. + +To enable fees, from the *eCommerce* or *Accounting* app, head to :menuselection:`Configuration +--> Payment Providers` and select the desired supported provider. Click on the :guilabel:`Fees` tab +and check the :guilabel:`Add Extra Fees` box. Configure the settings to your needs. + +.. note:: + Fees are calculated on the tax-included price. + .. _payment_providers/configuration: Configuration @@ -387,6 +424,7 @@ payment method... What best suit your needs. - :doc:`payment_providers/authorize` - :doc:`payment_providers/asiapay` - :doc:`payment_providers/buckaroo` + - :doc:`payment_providers/demo` - :doc:`payment_providers/mercado_pago` - :doc:`payment_providers/mollie` - :doc:`payment_providers/ogone` diff --git a/content/applications/finance/payment_providers/demo.rst b/content/applications/finance/payment_providers/demo.rst new file mode 100644 index 000000000..1a5986c26 --- /dev/null +++ b/content/applications/finance/payment_providers/demo.rst @@ -0,0 +1,39 @@ +==== +Demo +==== + +Odoo's **Demo Payment Provider** allows you to test business flows involving online transactions +without requiring real banking credentials. + +Configuration +============= + +.. seealso:: + :ref:`payment_providers/add_new` + +.. important:: + Switch the state to :guilabel:`Test Mode`. + +Payment outcome +=============== + +Upon checkout or when paying a bill online, you can choose the payment outcome when using the demo +payment provider. To do so, click on the :guilabel:`Payment Status` drop-down menu and select the +desired outcome. + +.. image:: demo/demo-payment-outcome.png + :align: center + :alt: Payment status outcomes. + +Transaction state +================= + +If you selected :guilabel:`Pending` as **payment outcome**, you can change the state of the +transaction straight from its form view. To access a transaction's form view, activate the +:ref:`developer mode `, and go to :menuselection:`Accounting / Website --> +Configuration --> Payment Transactions`. Then, change the status of a transaction by clicking on the +state bar (:guilabel:`Draft, Pending, Authorized, Confirmed, Canceled, Error`). + +.. image:: demo/demo-view-form.png + :align: center + :alt: Transaction's status bar. diff --git a/content/applications/finance/payment_providers/demo/demo-payment-outcome.png b/content/applications/finance/payment_providers/demo/demo-payment-outcome.png new file mode 100644 index 0000000000000000000000000000000000000000..2c87383c81e580f2bf16c98100dbe0407d3fe593 GIT binary patch literal 10168 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 FV1iGE$CCg6 literal 0 HcmV?d00001