pub struct SubscriptionBillingService { /* private fields */ }Implementations§
Source§impl SubscriptionBillingService
impl SubscriptionBillingService
pub fn new( pool: PgPool, offers: Arc<dyn SubscriptionOfferStore>, resolver: Arc<dyn GatewayResolver>, admission: Arc<dyn EndUserMutationAdmission>, coordinator: Arc<dyn BillingTransactionCoordinator>, ) -> Self
pub fn with_host_charge_targets( self, targets: Arc<dyn HostChargeTargetStore>, ) -> Self
Sourcepub async fn charge_host_target(
&self,
command: ChargeHostTarget,
) -> Result<HostChargePaymentResult, SubscriptionEnrollmentServiceError>
pub async fn charge_host_target( &self, command: ChargeHostTarget, ) -> Result<HostChargePaymentResult, SubscriptionEnrollmentServiceError>
Charges one host-owned target through the canonical attempt ledger.
Target eligibility and economics are supplied by the configured host extension. No transaction or target lock spans gateway I/O.
Sourcepub async fn enroll(
&self,
command: EnrollSubscription,
) -> Result<SubscriptionEnrollmentPaymentResult, SubscriptionEnrollmentServiceError>
pub async fn enroll( &self, command: EnrollSubscription, ) -> Result<SubscriptionEnrollmentPaymentResult, SubscriptionEnrollmentServiceError>
Runs one complete initial-subscription payment boundary.
Matching replay and conflict are resolved before host admission. No database transaction or lock is held across host admission, gateway resolution, readiness I/O, or the one provider mutation.
Sourcepub async fn renew(
&self,
command: ChargeRenewal,
) -> Result<SubscriptionRenewalOutcome, SubscriptionEnrollmentServiceError>
pub async fn renew( &self, command: ChargeRenewal, ) -> Result<SubscriptionRenewalOutcome, SubscriptionEnrollmentServiceError>
Runs one complete automatic recurring-renewal boundary.
Stale, future, canceled, paced, and contended work is a successful no-op. The operation never invokes end-user admission or the live offer store and never holds a database lock across provider I/O.
Sourcepub async fn recover(
&self,
command: RecoverSubscriptionPayment,
) -> Result<SubscriptionEnrollmentPaymentResult, SubscriptionEnrollmentServiceError>
pub async fn recover( &self, command: RecoverSubscriptionPayment, ) -> Result<SubscriptionEnrollmentPaymentResult, SubscriptionEnrollmentServiceError>
Runs one complete subscriber-initiated recovery payment boundary.
The command carries only the owner, requested plan/configuration, and memory-only token/contact. Reservation derives the exact due period, amount, subscription, and payment-state snapshot under lock.
Sourcepub async fn replace_payment_method(
&self,
command: ReplaceSubscriptionPaymentMethod,
) -> Result<SubscriptionEnrollmentPaymentResult, SubscriptionEnrollmentServiceError>
pub async fn replace_payment_method( &self, command: ReplaceSubscriptionPaymentMethod, ) -> Result<SubscriptionEnrollmentPaymentResult, SubscriptionEnrollmentServiceError>
Runs one complete stored payment-method replacement boundary.
Sourcepub async fn apply_reconciled_outcome(
&self,
billing_scope_id: BillingScopeId,
attempt_id: PaymentAttemptId,
outcome: &GatewayPaymentOutcome,
) -> Result<SubscriptionEnrollmentPaymentResult, SubscriptionEnrollmentServiceError>
pub async fn apply_reconciled_outcome( &self, billing_scope_id: BillingScopeId, attempt_id: PaymentAttemptId, outcome: &GatewayPaymentOutcome, ) -> Result<SubscriptionEnrollmentPaymentResult, SubscriptionEnrollmentServiceError>
Applies an already-observed provider outcome without another submission.
Reconciliation enters the same application authority as foreground enrollment but reconstructs its secret-free reservation from the exact durable attempt and canonical gateway account.
Sourcepub async fn apply_reconciled_host_charge_outcome(
&self,
billing_scope_id: BillingScopeId,
attempt_id: PaymentAttemptId,
outcome: &GatewayPaymentOutcome,
) -> Result<HostChargePaymentResult, SubscriptionEnrollmentServiceError>
pub async fn apply_reconciled_host_charge_outcome( &self, billing_scope_id: BillingScopeId, attempt_id: PaymentAttemptId, outcome: &GatewayPaymentOutcome, ) -> Result<HostChargePaymentResult, SubscriptionEnrollmentServiceError>
Applies an exact-query outcome to one host charge without resubmission.
Trait Implementations§
Source§impl Clone for SubscriptionBillingService
impl Clone for SubscriptionBillingService
Source§fn clone(&self) -> SubscriptionBillingService
fn clone(&self) -> SubscriptionBillingService
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreAuto Trait Implementations§
impl !RefUnwindSafe for SubscriptionBillingService
impl !UnwindSafe for SubscriptionBillingService
impl Freeze for SubscriptionBillingService
impl Send for SubscriptionBillingService
impl Sync for SubscriptionBillingService
impl Unpin for SubscriptionBillingService
impl UnsafeUnpin for SubscriptionBillingService
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
impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
Source§fn in_current_span(self) -> Instrumented<Self> ⓘ
fn in_current_span(self) -> Instrumented<Self> ⓘ
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more