package paypalsdk_test import ( "fmt" "time" pp "github.com/logpacker/PayPal-Go-SDK" ) func BillingExample() { plan := pp.BillingPlan{ Name: "Plan with Regular and Trial Payment Definitions", Description: "Plan with regular and trial payment definitions.", Type: "fixed", PaymentDefinitions: []pp.PaymentDefinition{ { Name: "Regular payment definition", Type: "REGULAR", Frequency: "MONTH", FrequencyInterval: "2", Amount: pp.AmountPayout{ Value: "100", Currency: "USD", }, Cycles: "12", ChargeModels: []pp.ChargeModel{ { Type: "SHIPPING", Amount: pp.AmountPayout{ Value: "10", Currency: "USD", }, }, { Type: "TAX", Amount: pp.AmountPayout{ Value: "12", Currency: "USD", }, }, }, }, { Name: "Trial payment definition", Type: "trial", Frequency: "week", FrequencyInterval: "5", Amount: pp.AmountPayout{ Value: "9.19", Currency: "USD", }, Cycles: "2", ChargeModels: []pp.ChargeModel{ { Type: "SHIPPING", Amount: pp.AmountPayout{ Value: "1", Currency: "USD", }, }, { Type: "TAX", Amount: pp.AmountPayout{ Value: "2", Currency: "USD", }, }, }, }, }, MerchantPreferences: &pp.MerchantPreferences{ SetupFee: &pp.AmountPayout{ Value: "1", Currency: "USD", }, ReturnURL: "http://www.paypal.com", CancelURL: "http://www.paypal.com/cancel", AutoBillAmount: "YES", InitialFailAmountAction: "CONTINUE", MaxFailAttempts: "0", }, } c, err := pp.NewClient("clientID", "secretID", pp.APIBaseSandBox) if err != nil { panic(err) } _, err = c.GetAccessToken() if err != nil { panic(err) } planResp, err := c.CreateBillingPlan(plan) if err != nil { panic(err) } err = c.ActivatePlan(planResp.ID) fmt.Println(err) agreement := pp.BillingAgreement{ Name: "Fast Speed Agreement", Description: "Agreement for Fast Speed Plan", StartDate: pp.JSONTime(time.Now().Add(time.Hour * 24)), Plan: pp.BillingPlan{ID: planResp.ID}, Payer: pp.Payer{ PaymentMethod: "paypal", }, } resp, err := c.CreateBillingAgreement(agreement) fmt.Println(err, resp) bps, err := c.ListBillingPlans(pp.BillingPlanListParams{Status: "ACTIVE"}) fmt.Println(err, bps) }