payrail 0.1.2

Provider-neutral Rust payments facade for Stripe, PayPal, and Mobile Money
Documentation
use serde::{Deserialize, Serialize};

#[derive(Debug, Serialize)]
pub(crate) struct LipilaMobileMoneyCollectionRequest {
    #[serde(rename = "referenceId")]
    pub reference_id: String,
    pub amount: serde_json::Number,
    pub narration: String,
    #[serde(rename = "accountNumber")]
    pub account_number: String,
    pub currency: String,
    #[serde(skip_serializing_if = "Option::is_none")]
    pub email: Option<String>,
}

#[derive(Debug, Deserialize)]
pub(crate) struct LipilaCollectionResponse {
    #[serde(rename = "referenceId")]
    pub reference_id: String,
    pub currency: String,
    pub amount: serde_json::Number,
    #[serde(rename = "accountNumber")]
    pub account_number: String,
    pub status: String,
    #[serde(rename = "paymentType")]
    pub payment_type: Option<String>,
    #[serde(rename = "externalId")]
    pub external_id: Option<String>,
    pub identifier: Option<String>,
    pub message: Option<String>,
}

#[derive(Debug, Deserialize)]
pub(crate) struct LipilaCallbackPayload {
    #[serde(rename = "referenceId")]
    pub reference_id: String,
    pub currency: String,
    pub amount: serde_json::Number,
    #[serde(rename = "accountNumber")]
    pub account_number: String,
    pub status: String,
    #[serde(rename = "paymentType")]
    pub payment_type: String,
    #[serde(rename = "type")]
    pub transaction_type: String,
    #[serde(rename = "ipAddress")]
    pub ip_address: Option<String>,
    pub identifier: Option<String>,
    pub message: Option<String>,
    #[serde(rename = "externalId")]
    pub external_id: Option<String>,
}