Metadata-Version: 2.4
Name: ocyan.plugin.payment_mollie
Version: 0.1.2
Summary: Mollie payment plugin
Home-page: https://git.mandelblog.com/mandel-plugins/ocyan.plugin.payment_mollie
Author: Motolani Olaiya
Author-email: motolaniolaiya@gmail.com
License: Proprietary
Classifier: Framework :: Ocyan
Classifier: Environment :: Plugins
Requires-Python: >=3.10
Description-Content-Type: text/markdown
License-File: COPYRIGHT
Requires-Dist: ocyan.core<2,>=1.2.13
Requires-Dist: ocyan.main<3,>=2.0.2
Requires-Dist: ocyan.mollie<2,>=1.2.7
Requires-Dist: Django<6.0,>=5.2
Requires-Dist: django-oscar<5.0,>=4.1
Requires-Dist: ocyan.plugin.oscar<3,>=2.0.5
Requires-Dist: ocyan.plugin.oscar_checkout<2,>=1.3.3
Requires-Dist: ocyan.plugin.oscar_communications<3,>=2.0.6
Requires-Dist: ocyan.plugin.oscar_partner<2,>=1.3.2
Requires-Dist: mollie-api-python<5.0,>=4.0
Requires-Dist: django-libsass<1,>=0.9
Provides-Extra: test
Requires-Dist: ocyan.plugin.testing; extra == "test"
Requires-Dist: wheel; extra == "test"
Requires-Dist: empty_testproject; extra == "test"
Requires-Dist: pylint-django; extra == "test"
Requires-Dist: isort; extra == "test"
Requires-Dist: ruff; extra == "test"
Requires-Dist: vdt.versionplugin.wheel; extra == "test"
Requires-Dist: coverage; extra == "test"
Requires-Dist: responses; extra == "test"
Dynamic: author
Dynamic: author-email
Dynamic: classifier
Dynamic: description
Dynamic: description-content-type
Dynamic: home-page
Dynamic: license
Dynamic: license-file
Dynamic: provides-extra
Dynamic: requires-dist
Dynamic: requires-python
Dynamic: summary

# Ocyan Mollie payment adapter

This is the Oscar checkout adapter for the MandelBlog Mollie provider core.
It owns checkout initiation, redirects, source/payment events and the classic
Mollie webhook endpoint. New checkouts use Mollie's Payments API; historic
`ord_` references remain supported for reconciliation only.

## Runtime configuration

Configure a Mollie key only through approved project runtime settings.
`MOLLIE_API_KEY` takes precedence over `payment_mollie.api_key` and is read
only when a payment operation runs. Do not store keys in source, package
metadata, fixtures or logs.

Mollie's classic webhook posts only a payment identifier. The adapter fetches
the authoritative provider state, records an idempotency fingerprint without
storing customer payload data, and safely acknowledges unknown references.

Each browser checkout attempt receives an opaque UUID that is passed to
Mollie as its `Idempotency-Key`. The `MolliePaymentAttempt` record retains the
provider reference for operational diagnosis without keeping request payloads.
The adapter intentionally exposes no public refund URL. An authorised Oscar
dashboard or service integration may call `request_refund(...)` only after it
has applied its own staff/permission policy; the method validates the payment
reference and exact amount before asking Mollie to create a refund.

## Compatibility

The plugin targets Python 3.12, Django 5.2, Django Oscar 4.1 and Mollie SDK
4.x. It contains forward migrations for the webhook event ledger and checkout
attempt records; do not rename the `payment_mollie` app label or rewrite
migration history.
