pay_pal v0.0.2 PayPal.Billing.Plans
Documentation for PayPal.Billing.Plans
Summary
Functions
Create a billing plan
Get billing plans, no plans returns an empty list
Get a billing plan by ID
Update a billing plan
Functions
create(plan)
create(%{name: String.t, description: String.t, type: String.t, payment_definitions: [%{name: String.t, type: String.t, frequency_interval: String.t, frequency: String.t, cycles: String.t, amount: %{value: String.t, currency: String.t}, charge_models: [%{type: String.t, amount: %{value: String.t, currency: String.t}}], merchant_preferences: %{setup_fee: %{amount: String.t, currency: String.t}, return_url: String.t, cancel_url: String.t, auto_bill_amount: String.t, initial_fail_amount_action: String.t, max_fail_attempts: String.t}}]}) :: {atom, any}
Create a billing plan
This can be a bit prickly so I highly suggest you check out the official docs (above), this maps 1:1 to the HTTP API.
Possible returns:
- {:ok, plan}
- {:error, reason}
Example hash:
%{
name: "Plan with Regular and Trial Payment Definitions",
description: "Plan with regular and trial payment definitions.",
type: "FIXED",
payment_definitions: [%{
name: "Regular payment definition",
type: "REGULAR",
frequency: "MONTH",
frequency_interval: "2",
amount: %{
value: "100",
currency: "USD"
},
cycles: "12",
charge_models: [
%{
type: "SHIPPING",
amount: %{
value: "10",
currency: "USD"
}
},
%{
type: "TAX",
amount: %{
value: "12",
currency: "USD"
}
}
]
}],
merchant_preferences: %{
setup_fee: %{
value: "1",
currency: "USD"
},
return_url: "http://www.paypal.com",
cancel_url: "http://www.paypal.com/cancel",
auto_bill_amount: "YES",
initial_fail_amount_action: "CONTINUE",
max_fail_attempts: "0"
}
}
Examples
iex> PayPal.Billing.Plans.create(plan)
{:ok, plan}
Get billing plans, no plans returns an empty list
Possible returns:
- {:ok, plans_list}
- {:error, reason}
Examples
iex> PayPal.Billing.Plans.list
{:ok,
[%{create_time: "2017-05-02T08:04:20.411Z",
description: "Plan with regular and trial payment definitions.",
id: "P-3C560437P9994340RZAYE2OY",
links: [%{href: "https://api.sandbox.paypal.com/v1/payments/billing-plans/P-3C560437P9994340RZAYE2OY",
method: "GET", rel: "self"}],
name: "Plan with Regular and Trial Payment Definitions", state: "CREATED",
type: "FIXED", update_time: "2017-05-02T08:04:20.411Z"}]}
Get a billing plan by ID.
Possible returns:
- {:ok, plan}
- {:ok, nil}
- {:error, reason}
Examples
iex> PayPal.Billing.Plans.show(id)
{:ok,
%{create_time: "2017-05-02T08:04:20.411Z",
description: "Plan with regular and trial payment definitions.",
id: "P-3C560437P9994340RZAYE2OY",
links: [%{href: "https://api.sandbox.paypal.com/v1/payments/billing-plans/P-3C560437P9994340RZAYE2OY",
method: "GET", rel: "self"}],
name: "Plan with Regular and Trial Payment Definitions", state: "CREATED",
type: "FIXED", update_time: "2017-05-02T08:04:20.411Z"}}
Update a billing plan
This can be a bit prickly so I highly suggest you check out the official docs (above), this maps 1:1 to the HTTP API.
This function takes an ID and a list of change operations (see the PayPal API docs, this is kind of a pain in the ass)
Possible returns:
- {:ok, plan}
- {:error, reason}
Example list of operations:
[ %{
op: "replace",
path: "/merchant-preferences",
value: %{
cancel_url: "http://www.cancel.com",
setup_fee: {
value: "5",
currency: "USD"
}
}
} ]
Examples
iex> PayPal.Billing.Plans.update(id, plan)
{:ok, plan}