yapay-sdk-rust 0.3.3

A strongly-typed wrapper for Yapay payment gateway API.
Documentation
use serde::{Deserialize, Serialize};

use crate::common_types::{
    CustomerResponse, TransactionTrace, YapayCardData, YapayCustomer, YapayProduct,
    YapayTransaction,
};

#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
pub struct PaymentCreditCardPayload {
    pub token_account: String,
    pub customer: YapayCustomer,
    pub transaction_product: Vec<YapayProduct>,
    pub transaction: YapayTransaction,
    pub transaction_trace: TransactionTrace,
    pub payment: YapayCardData,
}

#[derive(Debug, Clone, PartialEq, Deserialize)]
pub struct TransactionResponse {
    pub order_number: String,
    pub free: String,
    pub transaction_id: i64,
    pub status_name: String,
    pub status_id: i64,
    pub token_transaction: String,
    pub payment: CreditCardPaymentResponse,
    pub customer: CustomerResponse,
}

#[derive(Default, Debug, Clone, PartialEq, Serialize, Deserialize)]
pub struct CreditCardPaymentResponse {
    pub price_payment: String,
    pub price_original: String,
    pub payment_response: String,
    pub payment_response_code: String,
    pub url_payment: String,
    pub tid: String,
    pub split: i64,
    pub payment_method_id: i64,
    pub payment_method_name: String,
    pub linha_digitavel: serde_json::Value,
    pub card_token: String,
}

#[cfg(test)]
mod tests {
    use super::*;
    use crate::{CardTransactionResponse, PaymentRequestRoot};

    #[test]
    fn t_credit_card_request() {
        let jd = serde_json::from_str::<PaymentRequestRoot<YapayCardData>>(include_str!(
            "../../tests/assets/creditcard_request.json"
        ));
        assert!(jd.is_ok());
    }

    #[test]
    fn t_credit_card_response() {
        let jd = serde_json::from_str::<CardTransactionResponse>(include_str!(
            "../../tests/assets/creditcard_response.json"
        ));
        assert!(jd.is_ok());
    }
}