Packages

Full-featured Elixir client for the Worldpay payment platform — Access APIs, WPG, RAFT, APMs, Marketplaces, Payouts, FraudSight, 3DS, Tokens and more.

Current section

Files

Jump to
worldpay lib worldpay.ex
Raw

lib/worldpay.ex

defmodule Worldpay do
@moduledoc """
**Worldpay** — Complete Elixir client for the Worldpay payment platform.
Covers all 45+ APIs: Access REST, WPG XML, cnpAPI, RAFT, Express,
Marketplace, Payouts, FraudSight, 3DS, Tokens, and Reporting.
## Module map
### Access APIs (modern REST)
| Module | Purpose |
|---|---|
| `Worldpay.Payments` | Orchestrated Payments API |
| `Worldpay.CardPayments` | Modular Card Payments API |
| `Worldpay.CardPayments.Features` | Advanced features: partial auth, AFT, L2/3, airline, MOTO, LatAm, ACP |
| `Worldpay.APMs` | 28 Alternative Payment Methods |
| `Worldpay.ThreeDS` | 3DS Authentication |
| `Worldpay.FraudSight` | ML fraud risk assessment |
| `Worldpay.Exemptions` | SCA exemption requests |
| `Worldpay.Tokens` | Worldpay tokens + NPTs + cryptograms |
| `Worldpay.NetworkPaymentTokens` | Cross-acquirer NPT management |
| `Worldpay.CustomerEventService` | NPT lifecycle event webhooks |
| `Worldpay.SecurityTokenService` | Provision / exchange / detokenize raw PANs |
| `Worldpay.ForwardAPI` | PCI-scope-reducing proxy |
| `Worldpay.TokenImport` | Migrate tokens from previous providers |
| `Worldpay.CardPayouts` | Card payouts (Fast Access ≤30 min) |
| `Worldpay.AccountPayouts` | Bank account payouts |
| `Worldpay.MoneyTransfers` | OCT money transfers |
| `Worldpay.FX` | Foreign exchange / MCP |
| `Worldpay.AccountTransfers` | Internal account transfers |
| `Worldpay.Balances` | Balance enquiry |
| `Worldpay.Statements` | Settlement statements |
| `Worldpay.PaymentQueries` | Query payment history |
| `Worldpay.CardBIN` | BIN lookup v1 + v2 |
| `Worldpay.Verifications` | Card + BAV verification |
| `Worldpay.AccountUpdater` | Account updater helpers |
| `Worldpay.HPP` | Hosted Payment Page + pay-by-link |
| `Worldpay.Reporting.BatchTransactions` | Batch Transaction API |
### Marketplace
| Module | Purpose |
|---|---|
| `Worldpay.Marketplaces.Parties` | Party onboarding + KYC + beneficial owners |
| `Worldpay.Marketplaces.SplitPayments` | Split payments + split refunds |
### WPG (XML Gateway)
| Module | Purpose |
|---|---|
| `Worldpay.WPG` | WPG client + convenience wrappers |
| `Worldpay.WPG.Builder` | XML builders (Direct, HPP, 3DS2, split funding) |
| `Worldpay.WPG.Parser` | XML → map parser |
| `Worldpay.WPG.Features` | DCC, Guaranteed Payments, Prime Routing, Lodging, MAC, JSC, etc. |
### cnpAPI (US eCommerce)
| Module | Purpose |
|---|---|
| `Worldpay.CNP` | cnpAPI REST client |
| `Worldpay.CNP.Builder` | XML builders |
| `Worldpay.CNP.Parser` | XML → map parser |
### RAFT / In-Store
| Module | Purpose |
|---|---|
| `Worldpay.RAFT` | ISO 8583 610 interface: all card-present types |
| `Worldpay.RAFT.Response` | Response field extractors |
| `Worldpay.Express` | Express Interface (lighter POS integration) |
### Partner
| Module | Purpose |
|---|---|
| `Worldpay.Partner.Boarding` | Merchant boarding API |
| `Worldpay.Partner.LeadSubmission` | Lead submission to Salesforce |
| `Worldpay.Partner.Notifications` | Transaction notification parser |
| `Worldpay.Partner.TerminalLease` | Terminal lease notification parser |
### Reporting
| Module | Purpose |
|---|---|
| `Worldpay.Reporting.EMAF` | eMAF daily settlement file parser |
| `Worldpay.Reporting.BatchTransactions` | Batch Transaction API |
| `Worldpay.Reporting.CNPBatch` | cnpAPI batch file builder + completion parser |
### Infrastructure
| Module | Purpose |
|---|---|
| `Worldpay.Webhooks` | Payment lifecycle event parsing + dispatch |
| `Worldpay.Config` | Runtime configuration |
| `Worldpay.Error` | Structured error type |
| `Worldpay.Telemetry` | Telemetry spans |
| `Worldpay.Client` | HTTP client (Req + Finch + circuit breaker) |
"""
alias Worldpay.{CardPayments, Config, Payments}
# ── Top-level convenience delegates ──────────────────────────────────────
@doc "Authorize via Payments API (orchestrated). See `Worldpay.Payments.authorize/3`."
defdelegate authorize(instruction, config, opts \\ []), to: Payments
@doc "Settle a payment. See `Worldpay.CardPayments.settle/3`."
defdelegate settle(payment_id, config, opts \\ []), to: CardPayments
@doc "Cancel an authorization. See `Worldpay.CardPayments.cancel/3`."
defdelegate cancel(payment_id, config, opts \\ []), to: CardPayments
@doc "Full refund. See `Worldpay.CardPayments.refund/3`."
defdelegate refund(payment_id, config, opts \\ []), to: CardPayments
@doc "Partial refund. See `Worldpay.CardPayments.partial_refund/5`."
defdelegate partial_refund(payment_id, amount, currency, config, opts \\ []), to: CardPayments
@doc "Query payment events. See `Worldpay.CardPayments.events/2`."
defdelegate events(payment_id, config), to: CardPayments
@doc "Build a default `Config.t()` from application env."
@spec config() :: Config.t()
def config, do: Config.new()
@doc "Return the library version."
@spec version() :: String.t()
def version, do: to_string(Application.spec(:worldpay, :vsn))
end