paymentlib/remote/
payway_remote.rs

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
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,
        (),
    )
}