Skip to main content

adk_payments/domain/
actor.rs

1use serde::{Deserialize, Serialize};
2
3use crate::domain::ProtocolExtensions;
4
5/// Canonical actor roles used across commerce flows.
6#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
7#[serde(rename_all = "snake_case")]
8pub enum CommerceActorRole {
9    Shopper,
10    Merchant,
11    CredentialsProvider,
12    PaymentProcessor,
13    AgentSurface,
14    System,
15    Custom(String),
16}
17
18/// Generic actor reference attached to canonical commerce actions.
19#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
20#[serde(rename_all = "camelCase")]
21pub struct CommerceActor {
22    pub actor_id: String,
23    pub role: CommerceActorRole,
24    #[serde(default, skip_serializing_if = "Option::is_none")]
25    pub display_name: Option<String>,
26    #[serde(default, skip_serializing_if = "Option::is_none")]
27    pub tenant_id: Option<String>,
28    #[serde(default, skip_serializing_if = "ProtocolExtensions::is_empty")]
29    pub extensions: ProtocolExtensions,
30}
31
32/// Explicit merchant-of-record identity.
33#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
34#[serde(rename_all = "camelCase")]
35pub struct MerchantRef {
36    pub merchant_id: String,
37    pub legal_name: String,
38    #[serde(default, skip_serializing_if = "Option::is_none")]
39    pub display_name: Option<String>,
40    #[serde(default, skip_serializing_if = "Option::is_none")]
41    pub statement_descriptor: Option<String>,
42    #[serde(default, skip_serializing_if = "Option::is_none")]
43    pub country_code: Option<String>,
44    #[serde(default, skip_serializing_if = "Option::is_none")]
45    pub website: Option<String>,
46    #[serde(default, skip_serializing_if = "ProtocolExtensions::is_empty")]
47    pub extensions: ProtocolExtensions,
48}
49
50/// Canonical payment-processor identity.
51#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
52#[serde(rename_all = "camelCase")]
53pub struct PaymentProcessorRef {
54    pub processor_id: String,
55    pub name: String,
56    #[serde(default, skip_serializing_if = "Option::is_none")]
57    pub processor_type: Option<String>,
58    #[serde(default, skip_serializing_if = "ProtocolExtensions::is_empty")]
59    pub extensions: ProtocolExtensions,
60}