pub struct ResourceServer { /* private fields */ }Expand description
Server-side payment orchestrator.
Implementations§
Source§impl ResourceServer
impl ResourceServer
Sourcepub async fn notify_verified_payment_canceled(
&self,
payload: &WirePaymentPayload,
requirements: &PaymentRequirements,
reason: CancelReason,
error: Option<&str>,
response_status: Option<u16>,
)
pub async fn notify_verified_payment_canceled( &self, payload: &WirePaymentPayload, requirements: &PaymentRequirements, reason: CancelReason, error: Option<&str>, response_status: Option<u16>, )
Fires on_verified_payment_canceled for every registered hook.
Sourcepub fn cancellation_guard(
&self,
payload: WirePaymentPayload,
requirements: PaymentRequirements,
) -> CancellationGuard
pub fn cancellation_guard( &self, payload: WirePaymentPayload, requirements: PaymentRequirements, ) -> CancellationGuard
Builds a one-shot cancellation dispatcher (first call wins).
Source§impl ResourceServer
impl ResourceServer
Sourcepub fn find_matching_requirements<'a>(
&self,
available: &'a [PaymentRequirements],
payload: &WirePaymentPayload,
) -> Option<&'a PaymentRequirements>
pub fn find_matching_requirements<'a>( &self, available: &'a [PaymentRequirements], payload: &WirePaymentPayload, ) -> Option<&'a PaymentRequirements>
First available accept that matches payload.accepted.
Scheme-declared crate::SchemeNetworkServer::dynamic_extra_fields are
omitted from the extra-subset comparison.
Source§impl ResourceServer
impl ResourceServer
Sourcepub async fn create_payment_required_response(
&self,
accepts: Vec<PaymentRequirements>,
ctx: PaymentRequiredBuildContext,
) -> Result<PaymentRequired, FacilitatorError>
pub async fn create_payment_required_response( &self, accepts: Vec<PaymentRequirements>, ctx: PaymentRequiredBuildContext, ) -> Result<PaymentRequired, FacilitatorError>
One 402 body used for both unpaid challenges and paid matching.
After scheme enrich and extension advertise, each accept is resolved
through the registered scheme table and written with
apply_payment_flow_wire_extra. Unregistered schemes fail closed.
§Errors
FacilitatorError::Internal when hook policy, unregistered scheme,
or payment-flow resolution / wire extra application fails.
Source§impl ResourceServer
impl ResourceServer
Sourcepub fn new<F>(facilitator: Arc<F>) -> Selfwhere
F: Facilitator + 'static,
pub fn new<F>(facilitator: Arc<F>) -> Selfwhere
F: Facilitator + 'static,
Creates a resource server over any Facilitator.
Sourcepub fn from_dyn(facilitator: Arc<dyn DynFacilitator>) -> Self
pub fn from_dyn(facilitator: Arc<dyn DynFacilitator>) -> Self
Creates from an already-erased facilitator handle.
Sourcepub fn with_hook(self, hook: impl ResourceServerHooks + 'static) -> Self
pub fn with_hook(self, hook: impl ResourceServerHooks + 'static) -> Self
Registers a lifecycle hook. Returns self for builder chaining.
Sourcepub fn add_hook(&mut self, hook: impl ResourceServerHooks + 'static)
pub fn add_hook(&mut self, hook: impl ResourceServerHooks + 'static)
Registers a lifecycle hook after construction.
Sourcepub fn hook_count(&self) -> usize
pub fn hook_count(&self) -> usize
Number of registered resource-server hooks.
Sourcepub fn facilitator(&self) -> Arc<dyn DynFacilitator> ⓘ
pub fn facilitator(&self) -> Arc<dyn DynFacilitator> ⓘ
Returns a clone of the inner facilitator handle.
Sourcepub fn with_scheme(
self,
network: ChainIdPattern,
scheme: impl SchemeNetworkServer + 'static,
) -> Self
pub fn with_scheme( self, network: ChainIdPattern, scheme: impl SchemeNetworkServer + 'static, ) -> Self
Registers a scheme/network adapter. Returns self for builder chaining.
Sourcepub fn register_scheme(
&mut self,
network: ChainIdPattern,
scheme: impl SchemeNetworkServer + 'static,
)
pub fn register_scheme( &mut self, network: ChainIdPattern, scheme: impl SchemeNetworkServer + 'static, )
Registers a scheme/network adapter after construction.
Sourcepub fn registered_scheme(
&self,
scheme: &str,
network: &ChainId,
) -> Option<&dyn DynSchemeNetworkServer>
pub fn registered_scheme( &self, scheme: &str, network: &ChainId, ) -> Option<&dyn DynSchemeNetworkServer>
Registered adapter for scheme on network, if any.
Exact CAIP-2 registrations win over wildcard/set patterns.
Sourcepub fn get_payment_flow(
&self,
requirements: &PaymentRequirements,
) -> Result<PaymentFlowName, PaymentFlowError>
pub fn get_payment_flow( &self, requirements: &PaymentRequirements, ) -> Result<PaymentFlowName, PaymentFlowError>
Resolves the payment-flow name for this accept from the scheme table.
§Errors
PaymentFlowError::UnregisteredScheme when no adapter matches this
accept, or ATM/flow errors from resolve_payment_flow.
Sourcepub async fn has_settle_on_cancel(
&self,
requirements: &PaymentRequirements,
) -> bool
pub async fn has_settle_on_cancel( &self, requirements: &PaymentRequirements, ) -> bool
Whether the registered scheme yields cancel-settle requirements.
Escrow accepts must return true before a transport will serve them.
Sourcepub fn with_extension(self, extension: impl Extension + 'static) -> Self
pub fn with_extension(self, extension: impl Extension + 'static) -> Self
Registers a protocol extension advertised on 402 responses.
Source§impl ResourceServer
impl ResourceServer
Sourcepub async fn settle_payment(
&self,
payload: &WirePaymentPayload,
requirements: &PaymentRequirements,
overrides: Option<&SettlementOverrides>,
phase: SettlePhase,
resource_url: Option<&str>,
advertised: Option<&Extensions>,
) -> Result<SettleResponse, FacilitatorError>
pub async fn settle_payment( &self, payload: &WirePaymentPayload, requirements: &PaymentRequirements, overrides: Option<&SettlementOverrides>, phase: SettlePhase, resource_url: Option<&str>, advertised: Option<&Extensions>, ) -> Result<SettleResponse, FacilitatorError>
Optional amount overrides → before hooks → facilitator → after hooks.
Facilitator settle is attempted twice only when the first Ok result is
settlement_pending with a non-empty transaction; no sleep.
§Errors
Propagates facilitator / abort / invalid-override errors unless a failure hook recovers.
Source§impl ResourceServer
impl ResourceServer
Sourcepub async fn verify_payment(
&self,
payload: &WirePaymentPayload,
requirements: &PaymentRequirements,
advertised: Option<&Extensions>,
) -> Result<VerifyPaymentOutcome, FacilitatorError>
pub async fn verify_payment( &self, payload: &WirePaymentPayload, requirements: &PaymentRequirements, advertised: Option<&Extensions>, ) -> Result<VerifyPaymentOutcome, FacilitatorError>
Before hooks → facilitator → after hooks.
Every accept must have a registered crate::SchemeNetworkServer. Empty
schemes is crate::PaymentFlowError::UnregisteredScheme, not an
always-facilitator fallback. When the resolved flow has
!verify_before_handler, returns Valid without the facilitator and
without after_verify.
§Errors
Propagates facilitator errors (unless recovered), before-hook aborts,
after-verify aborts (FacilitatorError::Aborted), and payment-flow
resolution failures.