pub struct FakePayments { /* private fields */ }Expand description
An in-memory cratefield_core::Payments for module tests: records which
calls were made and answers per its PaymentsMode. verify_webhook
treats a signature header of "invalid" as a tampered event.
Implementations§
Source§impl FakePayments
impl FakePayments
pub fn new(mode: PaymentsMode) -> Self
Sourcepub fn calls(&self) -> Vec<PaymentsCall>
pub fn calls(&self) -> Vec<PaymentsCall>
The calls recorded so far.
pub fn set_mode(&self, mode: PaymentsMode)
Trait Implementations§
Source§impl Clone for FakePayments
impl Clone for FakePayments
Source§impl Default for FakePayments
impl Default for FakePayments
Source§impl Payments for FakePayments
impl Payments for FakePayments
Source§fn create_checkout<'life0, 'life1, 'async_trait>(
&'life0 self,
_request: &'life1 CheckoutRequest,
) -> Pin<Box<dyn Future<Output = Result<CheckoutSession, PaymentsError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn create_checkout<'life0, 'life1, 'async_trait>(
&'life0 self,
_request: &'life1 CheckoutRequest,
) -> Pin<Box<dyn Future<Output = Result<CheckoutSession, PaymentsError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
A one-time hosted checkout. Returns the URL to redirect the browser to.
Source§fn create_subscription_checkout<'life0, 'life1, 'async_trait>(
&'life0 self,
_request: &'life1 SubscriptionCheckoutRequest,
) -> Pin<Box<dyn Future<Output = Result<CheckoutSession, PaymentsError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn create_subscription_checkout<'life0, 'life1, 'async_trait>(
&'life0 self,
_request: &'life1 SubscriptionCheckoutRequest,
) -> Pin<Box<dyn Future<Output = Result<CheckoutSession, PaymentsError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
A recurring hosted checkout against a configured Stripe Price.
Source§fn create_connect_account_link<'life0, 'life1, 'async_trait>(
&'life0 self,
_request: &'life1 ConnectAccountLinkRequest,
) -> Pin<Box<dyn Future<Output = Result<ConnectAccountLink, PaymentsError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn create_connect_account_link<'life0, 'life1, 'async_trait>(
&'life0 self,
_request: &'life1 ConnectAccountLinkRequest,
) -> Pin<Box<dyn Future<Output = Result<ConnectAccountLink, PaymentsError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
A Connect onboarding link for a coach’s account.
Source§fn charge_with_transfer<'life0, 'life1, 'async_trait>(
&'life0 self,
_request: &'life1 TransferCharge,
) -> Pin<Box<dyn Future<Output = Result<Charge, PaymentsError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn charge_with_transfer<'life0, 'life1, 'async_trait>(
&'life0 self,
_request: &'life1 TransferCharge,
) -> Pin<Box<dyn Future<Output = Result<Charge, PaymentsError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
A destination charge with an application fee (the platform’s cut).
Source§fn refund<'life0, 'life1, 'async_trait>(
&'life0 self,
_request: &'life1 RefundRequest,
) -> Pin<Box<dyn Future<Output = Result<Refund, PaymentsError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn refund<'life0, 'life1, 'async_trait>(
&'life0 self,
_request: &'life1 RefundRequest,
) -> Pin<Box<dyn Future<Output = Result<Refund, PaymentsError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Refunds a prior payment, in whole or in part.
Source§fn verify_webhook<'life0, 'life1, 'life2, 'async_trait>(
&'life0 self,
signature_header: &'life1 str,
_body: &'life2 [u8],
) -> Pin<Box<dyn Future<Output = Result<WebhookEvent, PaymentsError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
fn verify_webhook<'life0, 'life1, 'life2, 'async_trait>(
&'life0 self,
signature_header: &'life1 str,
_body: &'life2 [u8],
) -> Pin<Box<dyn Future<Output = Result<WebhookEvent, PaymentsError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
Verifies a webhook’s signature and timestamp and returns the event.
signature_header is the raw Stripe-Signature header; body is the
exact bytes received (verification is over the raw body). Returns
PaymentsError::SignatureInvalid if verification fails.Source§fn report_usage<'life0, 'life1, 'async_trait>(
&'life0 self,
_report: &'life1 UsageReport,
) -> Pin<Box<dyn Future<Output = Result<UsageReported, PaymentsError>> + Send + 'async_trait>>where
'life0: 'async_trait,
'life1: 'async_trait,
Self: 'async_trait,
fn report_usage<'life0, 'life1, 'async_trait>(
&'life0 self,
_report: &'life1 UsageReport,
) -> Pin<Box<dyn Future<Output = Result<UsageReported, PaymentsError>> + Send + 'async_trait>>where
'life0: 'async_trait,
'life1: 'async_trait,
Self: 'async_trait,
Reports a metered usage amount to the billing provider (Stripe Billing
Meters) idempotently: the
UsageReport::identifier makes a
repeated report a no-op at the provider, so retrying is safe and a
second report of the same window comes back as
UsageReported::already_reported rather than an error. Read moreSource§fn verify_webhook_request<'life0, 'life1, 'life2, 'async_trait>(
&'life0 self,
headers: &'life1 HeaderMap,
body: &'life2 [u8],
) -> Pin<Box<dyn Future<Output = Result<WebhookEvent, PaymentsError>> + Send + 'async_trait>>where
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
Self: 'async_trait,
fn verify_webhook_request<'life0, 'life1, 'life2, 'async_trait>(
&'life0 self,
headers: &'life1 HeaderMap,
body: &'life2 [u8],
) -> Pin<Box<dyn Future<Output = Result<WebhookEvent, PaymentsError>> + Send + 'async_trait>>where
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
Self: 'async_trait,
Verifies a webhook from its request headers and raw body. It
exists because some providers sign over more than one header:
Standard Webhooks (Polar, Svix) sends
webhook-id,
webhook-timestamp and webhook-signature, which one
signature_header string cannot carry. A handler that calls this
instead of verify_webhook stays the same
whichever adapter is composed in. Read moreSource§fn create_portal_session<'life0, 'life1, 'async_trait>(
&'life0 self,
_request: &'life1 PortalSessionRequest,
) -> Pin<Box<dyn Future<Output = Result<PortalSession, PaymentsError>> + Send + 'async_trait>>where
'life0: 'async_trait,
'life1: 'async_trait,
Self: 'async_trait,
fn create_portal_session<'life0, 'life1, 'async_trait>(
&'life0 self,
_request: &'life1 PortalSessionRequest,
) -> Pin<Box<dyn Future<Output = Result<PortalSession, PaymentsError>> + Send + 'async_trait>>where
'life0: 'async_trait,
'life1: 'async_trait,
Self: 'async_trait,
A hosted customer-portal session (issue #589). The default reports
PaymentsError::Unsupported.Source§fn get_subscription<'life0, 'life1, 'async_trait>(
&'life0 self,
_subscription_ref: &'life1 str,
) -> Pin<Box<dyn Future<Output = Result<Subscription, PaymentsError>> + Send + 'async_trait>>where
'life0: 'async_trait,
'life1: 'async_trait,
Self: 'async_trait,
fn get_subscription<'life0, 'life1, 'async_trait>(
&'life0 self,
_subscription_ref: &'life1 str,
) -> Pin<Box<dyn Future<Output = Result<Subscription, PaymentsError>> + Send + 'async_trait>>where
'life0: 'async_trait,
'life1: 'async_trait,
Self: 'async_trait,
Reads one subscription by its provider id (issue #589): the lookup a
billing module makes when a webhook was missed, arrived out of order,
or left the module unsure of the current state. The default reports
PaymentsError::Unsupported.Source§fn list_subscriptions<'life0, 'life1, 'async_trait>(
&'life0 self,
_customer_ref: &'life1 str,
) -> Pin<Box<dyn Future<Output = Result<Vec<Subscription>, PaymentsError>> + Send + 'async_trait>>where
'life0: 'async_trait,
'life1: 'async_trait,
Self: 'async_trait,
fn list_subscriptions<'life0, 'life1, 'async_trait>(
&'life0 self,
_customer_ref: &'life1 str,
) -> Pin<Box<dyn Future<Output = Result<Vec<Subscription>, PaymentsError>> + Send + 'async_trait>>where
'life0: 'async_trait,
'life1: 'async_trait,
Self: 'async_trait,
Lists a customer’s subscriptions (issue #589): the poll a venture runs
to reconcile what a webhook stream missed, including canceled
subscriptions where the provider would otherwise hide them. The default
reports
PaymentsError::Unsupported.Source§fn get_dispute<'life0, 'life1, 'async_trait>(
&'life0 self,
_dispute_ref: &'life1 str,
) -> Pin<Box<dyn Future<Output = Result<Dispute, PaymentsError>> + Send + 'async_trait>>where
'life0: 'async_trait,
'life1: 'async_trait,
Self: 'async_trait,
fn get_dispute<'life0, 'life1, 'async_trait>(
&'life0 self,
_dispute_ref: &'life1 str,
) -> Pin<Box<dyn Future<Output = Result<Dispute, PaymentsError>> + Send + 'async_trait>>where
'life0: 'async_trait,
'life1: 'async_trait,
Self: 'async_trait,
Reads one dispute (issue #602). The default reports
PaymentsError::Unsupported.Source§fn list_disputes<'life0, 'life1, 'async_trait>(
&'life0 self,
_request: &'life1 DisputeListRequest,
) -> Pin<Box<dyn Future<Output = Result<DisputePage, PaymentsError>> + Send + 'async_trait>>where
'life0: 'async_trait,
'life1: 'async_trait,
Self: 'async_trait,
fn list_disputes<'life0, 'life1, 'async_trait>(
&'life0 self,
_request: &'life1 DisputeListRequest,
) -> Pin<Box<dyn Future<Output = Result<DisputePage, PaymentsError>> + Send + 'async_trait>>where
'life0: 'async_trait,
'life1: 'async_trait,
Self: 'async_trait,
Lists disputes, newest first: the poll a venture runs on a schedule
when its provider sends no dispute webhooks (Polar), or to reconcile
missed ones. Dedup each result through
Dispute::event_key. The
default reports PaymentsError::Unsupported.Source§fn close_dispute<'life0, 'life1, 'life2, 'async_trait>(
&'life0 self,
_dispute_ref: &'life1 str,
_idempotency_key: &'life2 str,
) -> Pin<Box<dyn Future<Output = Result<Dispute, PaymentsError>> + Send + 'async_trait>>where
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
Self: 'async_trait,
fn close_dispute<'life0, 'life1, 'life2, 'async_trait>(
&'life0 self,
_dispute_ref: &'life1 str,
_idempotency_key: &'life2 str,
) -> Pin<Box<dyn Future<Output = Result<Dispute, PaymentsError>> + Send + 'async_trait>>where
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
Self: 'async_trait,
Accepts a dispute, conceding the chargeback, which settles it as lost
(issue #602). The default reports
PaymentsError::Unsupported.Auto Trait Implementations§
impl Freeze for FakePayments
impl RefUnwindSafe for FakePayments
impl Send for FakePayments
impl Sync for FakePayments
impl Unpin for FakePayments
impl UnsafeUnpin for FakePayments
impl UnwindSafe for FakePayments
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more