use libstripe::resources::billing::subscriptions::{ItemParam, Subscription, SubscriptionParam};
use libstripe::resources::core::customer::{Customer, CustomerParam};
use libstripe::resources::paymentmethods::source::PaymentSourceParam;
use libstripe::Client;
use std::env;
fn main() -> libstripe::Result<()> {
let secret_key = env::var("STRIPE_KEY").expect("Missing 'STRIPE_KEY'.");
let client = Client::new(&secret_key);
let mut customer_param = CustomerParam::default();
customer_param.email = Some("example@example.com");
customer_param.description = Some("Example account");
customer_param.source = Some(PaymentSourceParam::Token("tok_visa"));
let customer = Customer::create(&client, customer_param)?;
let mut subscription_param = SubscriptionParam::default();
let mut items = ItemParam::default();
items.plan = "golden-plan";
subscription_param.items = Some(vec![items]);
subscription_param.customer = Some(&customer.id);
let subscription = Subscription::create(&client, subscription_param)?;
println!("{:?}", subscription);
Ok(())
}