paymentlib/remote/
payway_remote.rs
use crate::payway::dto::create_cusomer_response::CreateCustomerResponse;
use crate::payway::dto::create_customer_request::CreateCustomerRequest;
use crate::payway::dto::single_user_token_request::SingleUseTokenRequest;
use crate::payway::dto::single_user_token_response::SingleUserTokenResponse;
use crate::payway::dto::transaction_refund_request::TransactionRefundRequest;
use crate::payway::dto::transaction_request::TransactionRequest;
use crate::payway::dto::transaction_response::TransactionResponse;
use common::remote::{get, post_urlencoded};
use hyper::header::{HeaderName, HeaderValue};
use hyper::HeaderMap;
use std::str::FromStr;
pub fn create_single_use_token(
headers: HeaderMap,
body: SingleUseTokenRequest,
) -> Result<SingleUserTokenResponse, String> {
post_urlencoded::<_, SingleUserTokenResponse>(
"https://api.payway.com.au",
String::from("/rest/v1/single-use-tokens"),
headers,
body,
)
}
pub fn create_customer(
headers: HeaderMap,
body: CreateCustomerRequest,
) -> Result<CreateCustomerResponse, String> {
post_urlencoded::<_, CreateCustomerResponse>(
"https://api.payway.com.au",
String::from("/rest/v1/customers"),
headers,
body,
)
}
pub fn transaction(body: TransactionRequest) -> Result<TransactionResponse, String> {
let secret_key = dotenv::var("PAYWAY.secretKey").unwrap();
let mut transaction_header = hyper::header::HeaderMap::new();
transaction_header.insert(
HeaderName::from_str("authorization").unwrap(),
HeaderValue::from_str(&*format!("Basic {}", base64::encode(secret_key))).unwrap(),
);
post_urlencoded::<_, TransactionResponse>(
"https://api.payway.com.au",
String::from("/rest/v1/transactions"),
transaction_header,
body,
)
}
pub fn transaction_refund(body: TransactionRefundRequest) -> Result<TransactionResponse, String> {
let secret_key = dotenv::var("PAYWAY.secretKey").unwrap();
let mut transaction_header = hyper::header::HeaderMap::new();
transaction_header.insert(
HeaderName::from_str("authorization").unwrap(),
HeaderValue::from_str(&*format!("Basic {}", base64::encode(secret_key))).unwrap(),
);
post_urlencoded::<_, TransactionResponse>(
"https://api.payway.com.au",
String::from("/rest/v1/transactions"),
transaction_header,
body,
)
}
pub fn get_transaction(id: String) -> Result<TransactionResponse, String> {
let secret_key = dotenv::var("PAYWAY.secretKey").unwrap();
let mut transaction_header = hyper::header::HeaderMap::new();
transaction_header.insert(
HeaderName::from_str("authorization").unwrap(),
HeaderValue::from_str(&*format!("Basic {}", base64::encode(secret_key))).unwrap(),
);
get::<TransactionResponse>(
"https://api.payway.com.au",
format!("/rest/v1/transactions/{}", id),
transaction_header,
)
}
pub fn void_transaction(id: String) -> Result<TransactionResponse, String> {
let secret_key = dotenv::var("PAYWAY.secretKey").unwrap();
let mut transaction_header = hyper::header::HeaderMap::new();
transaction_header.insert(
HeaderName::from_str("authorization").unwrap(),
HeaderValue::from_str(&*format!("Basic {}", base64::encode(secret_key))).unwrap(),
);
post_urlencoded::<_, TransactionResponse>(
"https://api.payway.com.au",
format!("/rest/v1/transactions/{}/void", id),
transaction_header,
(),
)
}