Hi! Lychee's shop already speaks Omnipay, and I'd like to contribute support for Payzum, a non-custodial crypto/stablecoin gateway (USDC, USDT and more) — the Omnipay driver exists and the config/enum part is a tiny diff following the Mollie pattern.
The one design question is settlement: crypto confirmation is asynchronous, and right now handlePaymentReturn marks an order FAILED whenever completePurchase() is not successful on the buyer's return — which for a crypto payment is the normal case (the invoice is still confirming on-chain when the buyer comes back). Before opening a PR I'd love your preference between:
- an inbound notification endpoint (the gateway signs each notification with HMAC-SHA-512; the driver verifies it over the raw bytes), following the custom-gateway pattern your
app/Actions/Shop/Gateway/README.md describes, or
- keeping it poll-based: leave the order in PROCESSING on return and re-check the invoice status (a scheduled job or on-view refresh).
Happy to implement whichever fits Lychee's architecture best — tests included.
Disclosure: I work on Payzum and would maintain the integration long-term.
Hi! Lychee's shop already speaks Omnipay, and I'd like to contribute support for Payzum, a non-custodial crypto/stablecoin gateway (USDC, USDT and more) — the Omnipay driver exists and the config/enum part is a tiny diff following the Mollie pattern.
The one design question is settlement: crypto confirmation is asynchronous, and right now
handlePaymentReturnmarks an order FAILED whenevercompletePurchase()is not successful on the buyer's return — which for a crypto payment is the normal case (the invoice is still confirming on-chain when the buyer comes back). Before opening a PR I'd love your preference between:app/Actions/Shop/Gateway/README.mddescribes, orHappy to implement whichever fits Lychee's architecture best — tests included.
Disclosure: I work on Payzum and would maintain the integration long-term.