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 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147
use serde; use stripe::Currency; use util::{List, Result, RangeQuery}; use Client; #[derive(Deserialize, Debug)] pub struct Balance { pub object: String, pub available: Vec<BalanceSource>, pub connect_reserved: Vec<BalanceSource>, pub pending: Vec<BalanceSource>, pub livemode: bool, } #[derive(Deserialize, Debug)] pub struct BalanceSource { pub currency: Currency, pub amount: i64, pub source_types: Option<BalanceSourceType> } #[derive(Deserialize, Debug)] pub struct BalanceSourceType { pub card: Option<i64>, pub bank_account: Option<i64>, pub bitcoin_receiver: Option<i64> } #[derive(Deserialize, Debug)] pub struct BalanceTransaction { pub id: String, pub object: String, pub amount: i64, pub available_on: i64, pub created: i64, pub currency: Currency, pub description: Option<String>, pub exchange_rate: Option<f64>, pub fee: i64, pub fee_details: Vec<FeeDetails>, pub net: i64, pub source: String, pub status: BalanceStatus, #[serde(rename="type")] pub balance_type: BalanceType } #[derive(Deserialize, Debug)] pub enum BalanceStatus { #[serde(rename="available")] Available, #[serde(rename="pending")] Pending } #[derive(Deserialize, Debug)] pub enum BalanceType { #[serde(rename="adjustment")] Adjustment, #[serde(rename="application_fee")] ApplicationFee, #[serde(rename="application_fee_refund")] ApplicationFeeRefund, #[serde(rename="charge")] Charge, #[serde(rename="payment")] Payment, #[serde(rename="payment_failure_refund")] PaymentFailureRefund, #[serde(rename="payment_refund")] PaymentRefund, #[serde(rename="refund")] Refund, #[serde(rename="transfer")] Transfer, #[serde(rename="transfer_refund")] TransferRefund, #[serde(rename="payout")] Payout, #[serde(rename="payout_cancel")] PayoutCancel, #[serde(rename="payout_failure")] PayoutFailure, #[serde(rename="validation")] Validation, #[serde(rename="stripe_fee")] StripeFee } #[derive(Deserialize, Debug)] pub struct FeeDetails { pub amount: i64, pub application: Option<String>, pub currency: Currency, pub description: String, #[serde(rename="type")] pub fee_type: FeeType } #[derive(Deserialize, Debug)] pub enum FeeType { #[serde(rename="application_fee")] ApplicationFee, #[serde(rename="stripe_fee")] StripeFee, #[serde(rename="tax")] Tax } #[derive(Default, Serialize, Debug)] pub struct BalanceListParams<'a> { #[serde(skip_serializing_if = "Option::is_none")] pub available_on: Option<RangeQuery>, #[serde(skip_serializing_if = "Option::is_none")] pub created: Option<RangeQuery>, #[serde(skip_serializing_if = "Option::is_none")] pub ending_before: Option<&'a str>, #[serde(skip_serializing_if = "Option::is_none")] pub limit: Option<i64>, #[serde(skip_serializing_if = "Option::is_none")] pub starting_after: Option<&'a str>, #[serde(skip_serializing_if = "Option::is_none")] pub source: Option<&'a str>, #[serde(skip_serializing_if = "Option::is_none")] pub payout: Option<&'a str>, #[serde(skip_serializing_if = "Option::is_none")] pub currency: Option<Currency>, #[serde(skip_serializing_if = "Option::is_none")] #[serde(rename="type")] pub balance_type: Option<&'a str>, } impl Balance { pub fn retrieve(client: &Client) -> Result<Balance> { client.get_empty("/balance") } pub fn retrieve_transaction(client: &Client, txn: String) -> Result<BalanceTransaction> { client.get_empty(&format!("/balance/history/{}", txn)) } pub fn list<B: serde::Serialize>(client: &Client, param: B) -> Result<List<BalanceTransaction>> { client.get("/balance/history", param) } }