recurly 2.17.0 → 3.23.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/.bumpversion.cfg +15 -0
- data/.changelog_config.yaml +11 -0
- data/.github/ISSUE_TEMPLATE/bug-report.md +30 -0
- data/.github/ISSUE_TEMPLATE/question-or-other.md +10 -0
- data/.github/workflows/ci.yml +29 -0
- data/.github/workflows/docs.yml +28 -0
- data/.gitignore +15 -0
- data/.rspec +2 -0
- data/.yardopts +2 -0
- data/CHANGELOG.md +496 -0
- data/CODE_OF_CONDUCT.md +130 -0
- data/CONTRIBUTING.md +106 -0
- data/GETTING_STARTED.md +319 -0
- data/Gemfile +4 -0
- data/LICENSE.txt +21 -0
- data/README.md +9 -153
- data/Rakefile +6 -0
- data/benchmark.rb +16 -0
- data/lib/data/ca-certificates.crt +3466 -0
- data/lib/recurly/client/operations.rb +3868 -0
- data/lib/recurly/client.rb +355 -0
- data/lib/recurly/connection_pool.rb +40 -0
- data/lib/recurly/errors/api_errors.rb +87 -0
- data/lib/recurly/errors/network_errors.rb +10 -0
- data/lib/recurly/errors.rb +68 -0
- data/lib/recurly/http.rb +50 -0
- data/lib/recurly/pager.rb +146 -0
- data/lib/recurly/request.rb +31 -0
- data/lib/recurly/requests/account_acquisition_cost.rb +18 -0
- data/lib/recurly/requests/account_acquisition_updatable.rb +26 -0
- data/lib/recurly/requests/account_create.rb +94 -0
- data/lib/recurly/requests/account_purchase.rb +94 -0
- data/lib/recurly/requests/account_update.rb +82 -0
- data/lib/recurly/requests/add_on_create.rb +94 -0
- data/lib/recurly/requests/add_on_pricing.rb +22 -0
- data/lib/recurly/requests/add_on_update.rb +74 -0
- data/lib/recurly/requests/address.rb +46 -0
- data/lib/recurly/requests/billing_info_create.rb +126 -0
- data/lib/recurly/requests/billing_info_verify.rb +14 -0
- data/lib/recurly/requests/coupon_bulk_create.rb +14 -0
- data/lib/recurly/requests/coupon_create.rb +102 -0
- data/lib/recurly/requests/coupon_pricing.rb +18 -0
- data/lib/recurly/requests/coupon_redemption_create.rb +22 -0
- data/lib/recurly/requests/coupon_update.rb +34 -0
- data/lib/recurly/requests/custom_field.rb +18 -0
- data/lib/recurly/requests/dunning_campaigns_bulk_update.rb +18 -0
- data/lib/recurly/requests/external_refund.rb +22 -0
- data/lib/recurly/requests/external_transaction.rb +26 -0
- data/lib/recurly/requests/invoice_address.rb +54 -0
- data/lib/recurly/requests/invoice_collect.rb +22 -0
- data/lib/recurly/requests/invoice_create.rb +42 -0
- data/lib/recurly/requests/invoice_refund.rb +34 -0
- data/lib/recurly/requests/invoice_updatable.rb +34 -0
- data/lib/recurly/requests/item_create.rb +58 -0
- data/lib/recurly/requests/item_update.rb +58 -0
- data/lib/recurly/requests/line_item_create.rb +86 -0
- data/lib/recurly/requests/line_item_refund.rb +26 -0
- data/lib/recurly/requests/measured_unit_create.rb +22 -0
- data/lib/recurly/requests/measured_unit_update.rb +22 -0
- data/lib/recurly/requests/plan_create.rb +114 -0
- data/lib/recurly/requests/plan_hosted_pages.rb +26 -0
- data/lib/recurly/requests/plan_pricing.rb +26 -0
- data/lib/recurly/requests/plan_ramp_interval.rb +18 -0
- data/lib/recurly/requests/plan_ramp_pricing.rb +18 -0
- data/lib/recurly/requests/plan_update.rb +102 -0
- data/lib/recurly/requests/pricing.rb +22 -0
- data/lib/recurly/requests/purchase_create.rb +78 -0
- data/lib/recurly/requests/shipping_address_create.rb +62 -0
- data/lib/recurly/requests/shipping_address_update.rb +66 -0
- data/lib/recurly/requests/shipping_fee_create.rb +22 -0
- data/lib/recurly/requests/shipping_method_create.rb +26 -0
- data/lib/recurly/requests/shipping_method_update.rb +26 -0
- data/lib/recurly/requests/shipping_purchase.rb +22 -0
- data/lib/recurly/requests/subscription_add_on_create.rb +38 -0
- data/lib/recurly/requests/subscription_add_on_tier.rb +18 -0
- data/lib/recurly/requests/subscription_add_on_update.rb +42 -0
- data/lib/recurly/requests/subscription_cancel.rb +14 -0
- data/lib/recurly/requests/subscription_change_billing_info_create.rb +14 -0
- data/lib/recurly/requests/subscription_change_create.rb +78 -0
- data/lib/recurly/requests/subscription_change_shipping_create.rb +22 -0
- data/lib/recurly/requests/subscription_create.rb +118 -0
- data/lib/recurly/requests/subscription_pause.rb +14 -0
- data/lib/recurly/requests/subscription_purchase.rb +74 -0
- data/lib/recurly/requests/subscription_ramp_interval.rb +18 -0
- data/lib/recurly/requests/subscription_shipping_create.rb +30 -0
- data/lib/recurly/requests/subscription_shipping_purchase.rb +22 -0
- data/lib/recurly/requests/subscription_shipping_update.rb +22 -0
- data/lib/recurly/requests/subscription_update.rb +66 -0
- data/lib/recurly/requests/tier.rb +18 -0
- data/lib/recurly/requests/usage_create.rb +26 -0
- data/lib/recurly/requests.rb +8 -0
- data/lib/recurly/resource.rb +23 -1082
- data/lib/recurly/resources/account.rb +134 -0
- data/lib/recurly/resources/account_acquisition.rb +46 -0
- data/lib/recurly/resources/account_acquisition_cost.rb +18 -0
- data/lib/recurly/resources/account_balance.rb +26 -0
- data/lib/recurly/resources/account_balance_amount.rb +26 -0
- data/lib/recurly/resources/account_mini.rb +50 -0
- data/lib/recurly/resources/account_note.rb +34 -0
- data/lib/recurly/resources/add_on.rb +114 -0
- data/lib/recurly/resources/add_on_mini.rb +54 -0
- data/lib/recurly/resources/add_on_pricing.rb +22 -0
- data/lib/recurly/resources/address.rb +46 -0
- data/lib/recurly/resources/billing_info.rb +74 -0
- data/lib/recurly/resources/billing_info_updated_by.rb +18 -0
- data/lib/recurly/resources/binary_file.rb +14 -0
- data/lib/recurly/resources/coupon.rb +138 -0
- data/lib/recurly/resources/coupon_discount.rb +26 -0
- data/lib/recurly/resources/coupon_discount_pricing.rb +18 -0
- data/lib/recurly/resources/coupon_discount_trial.rb +18 -0
- data/lib/recurly/resources/coupon_mini.rb +42 -0
- data/lib/recurly/resources/coupon_redemption.rb +54 -0
- data/lib/recurly/resources/coupon_redemption_mini.rb +34 -0
- data/lib/recurly/resources/credit_payment.rb +66 -0
- data/lib/recurly/resources/custom_field.rb +18 -0
- data/lib/recurly/resources/custom_field_definition.rb +50 -0
- data/lib/recurly/resources/dunning_campaign.rb +50 -0
- data/lib/recurly/resources/dunning_campaigns_bulk_update_response.rb +18 -0
- data/lib/recurly/resources/dunning_cycle.rb +58 -0
- data/lib/recurly/resources/dunning_interval.rb +18 -0
- data/lib/recurly/resources/error.rb +22 -0
- data/lib/recurly/resources/error_may_have_transaction.rb +26 -0
- data/lib/recurly/resources/export_dates.rb +18 -0
- data/lib/recurly/resources/export_file.rb +22 -0
- data/lib/recurly/resources/export_files.rb +18 -0
- data/lib/recurly/resources/fraud_info.rb +22 -0
- data/lib/recurly/resources/invoice.rb +154 -0
- data/lib/recurly/resources/invoice_address.rb +54 -0
- data/lib/recurly/resources/invoice_collection.rb +22 -0
- data/lib/recurly/resources/invoice_mini.rb +30 -0
- data/lib/recurly/resources/item.rb +82 -0
- data/lib/recurly/resources/item_mini.rb +34 -0
- data/lib/recurly/resources/line_item.rb +214 -0
- data/lib/recurly/resources/line_item_list.rb +26 -0
- data/lib/recurly/resources/measured_unit.rb +46 -0
- data/lib/recurly/resources/payment_method.rb +70 -0
- data/lib/recurly/resources/plan.rb +134 -0
- data/lib/recurly/resources/plan_hosted_pages.rb +26 -0
- data/lib/recurly/resources/plan_mini.rb +26 -0
- data/lib/recurly/resources/plan_pricing.rb +26 -0
- data/lib/recurly/resources/plan_ramp_interval.rb +18 -0
- data/lib/recurly/resources/plan_ramp_pricing.rb +18 -0
- data/lib/recurly/resources/pricing.rb +22 -0
- data/lib/recurly/resources/settings.rb +22 -0
- data/lib/recurly/resources/shipping_address.rb +82 -0
- data/lib/recurly/resources/shipping_method.rb +46 -0
- data/lib/recurly/resources/shipping_method_mini.rb +26 -0
- data/lib/recurly/resources/site.rb +54 -0
- data/lib/recurly/resources/subscription.rb +190 -0
- data/lib/recurly/resources/subscription_add_on.rb +66 -0
- data/lib/recurly/resources/subscription_add_on_tier.rb +18 -0
- data/lib/recurly/resources/subscription_change.rb +90 -0
- data/lib/recurly/resources/subscription_change_billing_info.rb +14 -0
- data/lib/recurly/resources/subscription_change_preview.rb +90 -0
- data/lib/recurly/resources/subscription_ramp_interval_response.rb +22 -0
- data/lib/recurly/resources/subscription_shipping.rb +26 -0
- data/lib/recurly/resources/tax_detail.rb +26 -0
- data/lib/recurly/resources/tax_info.rb +26 -0
- data/lib/recurly/resources/tier.rb +18 -0
- data/lib/recurly/resources/transaction.rb +162 -0
- data/lib/recurly/resources/transaction_error.rb +38 -0
- data/lib/recurly/resources/transaction_payment_gateway.rb +26 -0
- data/lib/recurly/resources/unique_coupon_code.rb +50 -0
- data/lib/recurly/resources/usage.rb +70 -0
- data/lib/recurly/resources/user.rb +42 -0
- data/lib/recurly/resources.rb +18 -0
- data/lib/recurly/schema/file_parser.rb +13 -0
- data/lib/recurly/schema/json_parser.rb +72 -0
- data/lib/recurly/schema/request_caster.rb +60 -0
- data/lib/recurly/schema/resource_caster.rb +46 -0
- data/lib/recurly/schema/schema_factory.rb +48 -0
- data/lib/recurly/schema/schema_validator.rb +144 -0
- data/lib/recurly/schema.rb +156 -0
- data/lib/recurly/version.rb +1 -15
- data/lib/recurly.rb +15 -137
- data/openapi/api.yaml +22373 -0
- data/recurly.gemspec +39 -0
- data/scripts/build +5 -0
- data/scripts/clean +6 -0
- data/scripts/format +12 -0
- data/scripts/prepare-release +50 -0
- data/scripts/release +17 -0
- data/scripts/test +15 -0
- metadata +216 -165
- data/lib/recurly/account.rb +0 -169
- data/lib/recurly/account_balance.rb +0 -21
- data/lib/recurly/add_on.rb +0 -30
- data/lib/recurly/address.rb +0 -25
- data/lib/recurly/adjustment.rb +0 -76
- data/lib/recurly/api/errors.rb +0 -206
- data/lib/recurly/api/net_http_adapter.rb +0 -111
- data/lib/recurly/api.rb +0 -101
- data/lib/recurly/billing_info.rb +0 -80
- data/lib/recurly/coupon.rb +0 -134
- data/lib/recurly/credit_payment.rb +0 -28
- data/lib/recurly/custom_field.rb +0 -15
- data/lib/recurly/delivery.rb +0 -19
- data/lib/recurly/error.rb +0 -13
- data/lib/recurly/gift_card.rb +0 -79
- data/lib/recurly/helper.rb +0 -51
- data/lib/recurly/invoice.rb +0 -268
- data/lib/recurly/invoice_collection.rb +0 -14
- data/lib/recurly/js.rb +0 -14
- data/lib/recurly/juris_detail.rb +0 -14
- data/lib/recurly/measured_unit.rb +0 -16
- data/lib/recurly/money.rb +0 -120
- data/lib/recurly/plan.rb +0 -40
- data/lib/recurly/purchase.rb +0 -219
- data/lib/recurly/redemption.rb +0 -46
- data/lib/recurly/resource/association.rb +0 -16
- data/lib/recurly/resource/errors.rb +0 -20
- data/lib/recurly/resource/pager.rb +0 -314
- data/lib/recurly/shipping_address.rb +0 -22
- data/lib/recurly/subscription/add_ons.rb +0 -77
- data/lib/recurly/subscription.rb +0 -325
- data/lib/recurly/subscription_add_on.rb +0 -50
- data/lib/recurly/tax_detail.rb +0 -14
- data/lib/recurly/tax_type.rb +0 -12
- data/lib/recurly/transaction/errors.rb +0 -107
- data/lib/recurly/transaction.rb +0 -116
- data/lib/recurly/usage.rb +0 -24
- data/lib/recurly/webhook/account_notification.rb +0 -10
- data/lib/recurly/webhook/billing_info_updated_notification.rb +0 -6
- data/lib/recurly/webhook/canceled_account_notification.rb +0 -6
- data/lib/recurly/webhook/canceled_subscription_notification.rb +0 -6
- data/lib/recurly/webhook/closed_credit_invoice_notification.rb +0 -6
- data/lib/recurly/webhook/closed_invoice_notification.rb +0 -6
- data/lib/recurly/webhook/credit_payment_notification.rb +0 -12
- data/lib/recurly/webhook/dunning_notification.rb +0 -14
- data/lib/recurly/webhook/expired_subscription_notification.rb +0 -6
- data/lib/recurly/webhook/failed_charge_invoice_notification.rb +0 -6
- data/lib/recurly/webhook/failed_payment_notification.rb +0 -6
- data/lib/recurly/webhook/gift_card_notification.rb +0 -8
- data/lib/recurly/webhook/invoice_notification.rb +0 -12
- data/lib/recurly/webhook/new_account_notification.rb +0 -6
- data/lib/recurly/webhook/new_charge_invoice_notification.rb +0 -6
- data/lib/recurly/webhook/new_credit_invoice_notification.rb +0 -6
- data/lib/recurly/webhook/new_credit_payment_notification.rb +0 -6
- data/lib/recurly/webhook/new_dunning_event_notification.rb +0 -6
- data/lib/recurly/webhook/new_invoice_notification.rb +0 -6
- data/lib/recurly/webhook/new_subscription_notification.rb +0 -6
- data/lib/recurly/webhook/new_usage_notification.rb +0 -8
- data/lib/recurly/webhook/notification.rb +0 -18
- data/lib/recurly/webhook/paid_charge_invoice_notification.rb +0 -6
- data/lib/recurly/webhook/past_due_charge_invoice_notification.rb +0 -6
- data/lib/recurly/webhook/past_due_invoice_notification.rb +0 -6
- data/lib/recurly/webhook/processing_charge_invoice_notification.rb +0 -6
- data/lib/recurly/webhook/processing_credit_invoice_notification.rb +0 -6
- data/lib/recurly/webhook/processing_invoice_notification.rb +0 -6
- data/lib/recurly/webhook/processing_payment_notification.rb +0 -6
- data/lib/recurly/webhook/purchased_gift_card_notification.rb +0 -7
- data/lib/recurly/webhook/reactivated_account_notification.rb +0 -6
- data/lib/recurly/webhook/redeemed_gift_card_notification.rb +0 -7
- data/lib/recurly/webhook/renewed_subscription_notification.rb +0 -6
- data/lib/recurly/webhook/reopened_charge_invoice_notification.rb +0 -6
- data/lib/recurly/webhook/reopened_credit_invoice_notification.rb +0 -6
- data/lib/recurly/webhook/scheduled_payment_notification.rb +0 -6
- data/lib/recurly/webhook/subscription_notification.rb +0 -12
- data/lib/recurly/webhook/successful_payment_notification.rb +0 -6
- data/lib/recurly/webhook/successful_refund_notification.rb +0 -6
- data/lib/recurly/webhook/transaction_authorized_notification.rb +0 -6
- data/lib/recurly/webhook/transaction_notification.rb +0 -12
- data/lib/recurly/webhook/updated_account_notification.rb +0 -6
- data/lib/recurly/webhook/updated_balance_gift_card_notification.rb +0 -7
- data/lib/recurly/webhook/updated_subscription_notification.rb +0 -6
- data/lib/recurly/webhook/void_payment_notification.rb +0 -6
- data/lib/recurly/webhook/voided_credit_invoice_notification.rb +0 -6
- data/lib/recurly/webhook/voided_credit_payment_notification.rb +0 -6
- data/lib/recurly/webhook.rb +0 -88
- data/lib/recurly/xml/nokogiri.rb +0 -58
- data/lib/recurly/xml/rexml.rb +0 -50
- data/lib/recurly/xml.rb +0 -120
data/lib/recurly/invoice.rb
DELETED
@@ -1,268 +0,0 @@
|
|
1
|
-
module Recurly
|
2
|
-
# Invoices are created through account objects.
|
3
|
-
#
|
4
|
-
# Recurly Documentation: https://dev.recurly.com/docs/list-invoices
|
5
|
-
#
|
6
|
-
# @example
|
7
|
-
# account = Account.find(account_code)
|
8
|
-
# account.invoice!
|
9
|
-
class Invoice < Resource
|
10
|
-
# @macro [attach] scope
|
11
|
-
# @scope class
|
12
|
-
# @return [Pager<Invoice>] A pager that yields +$1+ invoices.
|
13
|
-
scope :pending, :state => :pending
|
14
|
-
scope :paid, :state => :paid
|
15
|
-
scope :failed, :state => :failed
|
16
|
-
scope :past_due, :state => :past_due
|
17
|
-
|
18
|
-
# These are deprecated as the states were renamed
|
19
|
-
scope :open, :state => :pending
|
20
|
-
scope :collected, :state => :paid
|
21
|
-
|
22
|
-
# @return [Account]
|
23
|
-
belongs_to :account
|
24
|
-
|
25
|
-
# @return [Pager<Subscription>, []]
|
26
|
-
has_many :subscriptions
|
27
|
-
|
28
|
-
# This will only be present if the invoice has > 500 line items
|
29
|
-
# @return [Pager<Adjustment>, []]
|
30
|
-
has_many :all_line_items, class_name: :Adjustment
|
31
|
-
|
32
|
-
# This will only be present if the invoice has > 500 transactions
|
33
|
-
# @return [Pager<Transaction>, []]
|
34
|
-
has_many :all_transactions, class_name: :Transaction
|
35
|
-
|
36
|
-
# @return [Pager<Redemption>, []]
|
37
|
-
has_many :redemptions
|
38
|
-
|
39
|
-
# @return [ShippingAddress, nil]
|
40
|
-
has_one :shipping_address, class_name: :ShippingAddress, readonly: true
|
41
|
-
|
42
|
-
# @return [Pager<Invoice>, []]
|
43
|
-
has_many :credit_invoices, class_name: :Invoice
|
44
|
-
|
45
|
-
# @return [[CreditPayment]]
|
46
|
-
has_many :credit_payments, class_name: :CreditPayment, readonly: true
|
47
|
-
|
48
|
-
# @return [Pager<Invoice>, []]
|
49
|
-
has_many :original_invoices, class_name: :Invoice, readonly: true
|
50
|
-
|
51
|
-
# @return [Invoice, nil]
|
52
|
-
has_one :original_invoice, class_name: :Invoice, readonly: true
|
53
|
-
|
54
|
-
# Returns the first redemption in the Invoice's redemptions.
|
55
|
-
# This was placed here for backwards compatibility when we went from
|
56
|
-
# having a single redemption per invoice to multiple redemptions per invoice.
|
57
|
-
#
|
58
|
-
# @deprecated Use {#redemptions} and find the redemption you want.
|
59
|
-
def redemption
|
60
|
-
redemptions.first
|
61
|
-
end
|
62
|
-
|
63
|
-
# @return [String] The invoice number with the prefix (if there is one)
|
64
|
-
def invoice_number_with_prefix
|
65
|
-
"#{invoice_number_prefix}#{invoice_number}"
|
66
|
-
end
|
67
|
-
|
68
|
-
define_attribute_methods %w(
|
69
|
-
uuid
|
70
|
-
state
|
71
|
-
invoice_number
|
72
|
-
invoice_number_prefix
|
73
|
-
po_number
|
74
|
-
vat_number
|
75
|
-
subtotal_in_cents
|
76
|
-
tax_in_cents
|
77
|
-
tax_type
|
78
|
-
tax_region
|
79
|
-
tax_rate
|
80
|
-
total_in_cents
|
81
|
-
currency
|
82
|
-
created_at
|
83
|
-
updated_at
|
84
|
-
closed_at
|
85
|
-
amount_remaining_in_cents
|
86
|
-
line_items
|
87
|
-
transactions
|
88
|
-
terms_and_conditions
|
89
|
-
vat_reverse_charge_notes
|
90
|
-
customer_notes
|
91
|
-
address
|
92
|
-
net_terms
|
93
|
-
collection_method
|
94
|
-
tax_types
|
95
|
-
refund_tax_date
|
96
|
-
refund_geo_code
|
97
|
-
subtotal_before_discount_in_cents
|
98
|
-
attempt_next_collection_at
|
99
|
-
recovery_reason
|
100
|
-
discount_in_cents
|
101
|
-
balance_in_cents
|
102
|
-
due_on
|
103
|
-
type
|
104
|
-
origin
|
105
|
-
credit_customer_notes
|
106
|
-
refund_method
|
107
|
-
)
|
108
|
-
alias to_param invoice_number_with_prefix
|
109
|
-
|
110
|
-
def self.to_xml(attrs)
|
111
|
-
invoice = new attrs
|
112
|
-
invoice.to_xml
|
113
|
-
end
|
114
|
-
|
115
|
-
# Marks an invoice as paid successfully.
|
116
|
-
#
|
117
|
-
# @return [true, false] +true+ when successful, +false+ when unable to
|
118
|
-
# (e.g., the invoice is no longer open).
|
119
|
-
def mark_successful
|
120
|
-
return false unless link? :mark_successful
|
121
|
-
reload follow_link :mark_successful
|
122
|
-
true
|
123
|
-
end
|
124
|
-
|
125
|
-
# Marks an invoice as failing collection.
|
126
|
-
# Returns a new {InvoiceCollection} and does not
|
127
|
-
# reload this invoice.
|
128
|
-
#
|
129
|
-
# @return [InvoiceCollection, false] InvoiceCollection when successful, +false+ when unable to
|
130
|
-
# (e.g., the invoice is no longer open).
|
131
|
-
def mark_failed
|
132
|
-
return false unless link? :mark_failed
|
133
|
-
InvoiceCollection.from_response follow_link(:mark_failed)
|
134
|
-
rescue Recurly::API::UnprocessableEntity => e
|
135
|
-
raise Invalid, e.message
|
136
|
-
end
|
137
|
-
|
138
|
-
# Initiate a collection attempt on an invoice.
|
139
|
-
#
|
140
|
-
# @return [true, false] +true+ when successful, +false+ when unable to
|
141
|
-
# (e.g., the invoice is no longer open).
|
142
|
-
def force_collect
|
143
|
-
return false unless link? :force_collect
|
144
|
-
reload follow_link :force_collect
|
145
|
-
true
|
146
|
-
end
|
147
|
-
|
148
|
-
# Voids the invoice.
|
149
|
-
#
|
150
|
-
# @return [true, false] +true+ when successful, +false+ when unable to
|
151
|
-
# (e.g., the invoice is no longer open).
|
152
|
-
def void
|
153
|
-
return false unless link? :void
|
154
|
-
reload follow_link :void
|
155
|
-
true
|
156
|
-
end
|
157
|
-
|
158
|
-
# Posts an offline payment on this invoice
|
159
|
-
#
|
160
|
-
# @return [Transaction]
|
161
|
-
# @raise [Error] If the transaction fails.
|
162
|
-
def enter_offline_payment(attrs={})
|
163
|
-
Transaction.from_response API.post("#{uri}/transactions", attrs.empty? ? nil : Transaction.to_xml(attrs))
|
164
|
-
rescue Recurly::API::UnprocessableEntity => e
|
165
|
-
raise Invalid, e.message
|
166
|
-
end
|
167
|
-
|
168
|
-
# Fetches the pdf for this invoice
|
169
|
-
def pdf
|
170
|
-
self.class.find(to_param, format: 'pdf')
|
171
|
-
end
|
172
|
-
|
173
|
-
# Refunds specific line items on the invoice.
|
174
|
-
#
|
175
|
-
# @return [Invoice, false] Invoice if successful, false if the invoice isn't
|
176
|
-
# refundable.
|
177
|
-
# @raise [Error] If the refund fails.
|
178
|
-
# @param line_items [Array, nil] An array of line items to refund.
|
179
|
-
# @param refund_method ["credit_first", "transaction_first", "all_transaction", "all_credit"] The method used to refund.
|
180
|
-
# @param external_refund [true, false] Designates that the refund transactions created are manual.
|
181
|
-
# @param credit_customer_notes [String] Adds notes to refund credit invoice.
|
182
|
-
# @param payment_method [String] Creates the manual transactions with this payment method. Allowed if *external_refund* is true.
|
183
|
-
# @param description [String] Sets this value as the *transaction_note* on the manual transactions created. Allowed if *external_refund* is true.
|
184
|
-
# @param refunded_at [DateTime] Sets this value as the *collected_at* on the manual transactions created. Allowed if *external_refund* is true.
|
185
|
-
def refund(line_items = nil, refund_method = 'credit_first', options = {})
|
186
|
-
return false unless link? :refund
|
187
|
-
self.class.from_response(
|
188
|
-
follow_link :refund, :body => refund_line_items_to_xml(line_items, refund_method, options)
|
189
|
-
)
|
190
|
-
end
|
191
|
-
|
192
|
-
# Refunds the invoice for a specific amount.
|
193
|
-
#
|
194
|
-
# @return [Invoice, false] Invoice if successful, false if the invoice isn't
|
195
|
-
# refundable.
|
196
|
-
# @raise [Error] If the refund fails.
|
197
|
-
# @param amount_in_cents [Integer, nil] The amount (in cents) to refund.
|
198
|
-
# @param refund_method ["credit_first", "transaction_first", "all_transaction", "all_credit"] The method used to refund.
|
199
|
-
# @param external_refund [true, false] Designates that the refund transactions created are manual.
|
200
|
-
# @param credit_customer_notes [String] Adds notes to refund credit invoice.
|
201
|
-
# @param payment_method [String] Creates the manual transactions with this payment method. Allowed if *external_refund* is true.
|
202
|
-
# @param description [String] Sets this value as the *transaction_note* on the manual transactions created. Allowed if *external_refund* is true.
|
203
|
-
# @param refunded_at [DateTime] Sets this value as the *collected_at* on the manual transactions created. Allowed if *external_refund* is true.
|
204
|
-
def refund_amount(amount_in_cents = nil, refund_method = 'credit_first', options = {})
|
205
|
-
return false unless link? :refund
|
206
|
-
self.class.from_response(
|
207
|
-
follow_link :refund, :body => refund_amount_to_xml(amount_in_cents, refund_method, options)
|
208
|
-
)
|
209
|
-
end
|
210
|
-
|
211
|
-
def xml_keys
|
212
|
-
super - ['currency']
|
213
|
-
end
|
214
|
-
|
215
|
-
# Attempts to update the invoice, returning the success of the request.
|
216
|
-
# Raises an error if attempting to create an invoice using this method.
|
217
|
-
#
|
218
|
-
# @return [true, false]
|
219
|
-
# @raise [RuntimeError] Raises error if you attempt to create an invoice.
|
220
|
-
# @example
|
221
|
-
# invoice = Recurly::Invoice.find('1000')
|
222
|
-
# invoice.po_number = '1234'
|
223
|
-
# invoice.save # => true
|
224
|
-
def save
|
225
|
-
unless persisted?
|
226
|
-
raise "Invoices can only be updated with Invoice#save. New invoices cannot be created using this method."
|
227
|
-
end
|
228
|
-
super
|
229
|
-
end
|
230
|
-
|
231
|
-
private
|
232
|
-
|
233
|
-
def initialize(attributes = {})
|
234
|
-
super({ :currency => Recurly.default_currency }.merge attributes)
|
235
|
-
end
|
236
|
-
|
237
|
-
def refund_amount_to_xml(amount_in_cents = nil, refund_method = nil, options = {})
|
238
|
-
builder = XML.new("<invoice/>")
|
239
|
-
builder.add_element 'refund_method', refund_method
|
240
|
-
builder.add_element 'amount_in_cents', amount_in_cents
|
241
|
-
options.each do |k, v|
|
242
|
-
builder.add_element k.to_s, v
|
243
|
-
end
|
244
|
-
builder.to_s
|
245
|
-
end
|
246
|
-
|
247
|
-
def refund_line_items_to_xml(line_items = nil, refund_method = nil, options = {})
|
248
|
-
builder = XML.new("<invoice/>")
|
249
|
-
builder.add_element 'refund_method', refund_method
|
250
|
-
options.each do |k, v|
|
251
|
-
builder.add_element k.to_s, v
|
252
|
-
end
|
253
|
-
line_items ||= []
|
254
|
-
node = builder.add_element 'line_items'
|
255
|
-
line_items.each do |line_item|
|
256
|
-
adj_node = node.add_element 'adjustment'
|
257
|
-
adj_node.add_element 'uuid', line_item[:adjustment].uuid
|
258
|
-
adj_node.add_element 'quantity', line_item[:quantity]
|
259
|
-
adj_node.add_element 'prorate', line_item[:prorate]
|
260
|
-
end
|
261
|
-
builder.to_s
|
262
|
-
end
|
263
|
-
|
264
|
-
# Invoices are only writeable through {Account} instances.
|
265
|
-
embedded! true
|
266
|
-
undef destroy
|
267
|
-
end
|
268
|
-
end
|
@@ -1,14 +0,0 @@
|
|
1
|
-
module Recurly
|
2
|
-
class InvoiceCollection < Resource
|
3
|
-
# @return [Invoice, nil]
|
4
|
-
has_one :charge_invoice, class_name: :Invoice, readonly: true
|
5
|
-
|
6
|
-
# @return [[Invoice], []]
|
7
|
-
has_many :credit_invoices, class_name: :Invoice, readonly: true
|
8
|
-
|
9
|
-
# These are readonly resources
|
10
|
-
embedded! true
|
11
|
-
undef save
|
12
|
-
undef destroy
|
13
|
-
end
|
14
|
-
end
|
data/lib/recurly/js.rb
DELETED
@@ -1,14 +0,0 @@
|
|
1
|
-
module Recurly
|
2
|
-
module JS
|
3
|
-
class << self
|
4
|
-
# @return [String] A public key for Recurly.js.
|
5
|
-
# @raise [ConfigurationError] No public key has been set.
|
6
|
-
def public_key
|
7
|
-
defined? @public_key and @public_key or raise(
|
8
|
-
ConfigurationError, "public_key not configured"
|
9
|
-
)
|
10
|
-
end
|
11
|
-
attr_writer :public_key
|
12
|
-
end
|
13
|
-
end
|
14
|
-
end
|
data/lib/recurly/juris_detail.rb
DELETED
@@ -1,16 +0,0 @@
|
|
1
|
-
module Recurly
|
2
|
-
# Measured Units are used in Recurly's usage-based billing feature.
|
3
|
-
#
|
4
|
-
# Recurly Documentation: https://dev.recurly.com/docs/measured-unit-object
|
5
|
-
class MeasuredUnit < Resource
|
6
|
-
define_attribute_methods %w(
|
7
|
-
id
|
8
|
-
name
|
9
|
-
display_name
|
10
|
-
description
|
11
|
-
created_at
|
12
|
-
updated_at
|
13
|
-
)
|
14
|
-
alias to_param id
|
15
|
-
end
|
16
|
-
end
|
data/lib/recurly/money.rb
DELETED
@@ -1,120 +0,0 @@
|
|
1
|
-
module Recurly
|
2
|
-
# Represents a collection of currencies (in cents).
|
3
|
-
class Money
|
4
|
-
# @return A money object representing multiple currencies (in cents).
|
5
|
-
# @param currencies [Hash] A hash of currency codes and amounts.
|
6
|
-
# @example
|
7
|
-
# # 12 United States dollars.
|
8
|
-
# Recurly::Money.new :USD => 12_00
|
9
|
-
#
|
10
|
-
# # $9.99 (or €6.99).
|
11
|
-
# Recurly::Money.new :USD => 9_99, :EUR => 6_99
|
12
|
-
#
|
13
|
-
# # Using a default currency.
|
14
|
-
# Recurly.default_currency = 'USD'
|
15
|
-
# Recurly::Money.new(49_00) # => #<Recurly::Money USD: 49_00>
|
16
|
-
def initialize currencies = {}, parent = nil, attribute = nil
|
17
|
-
@currencies = {}
|
18
|
-
@parent = parent
|
19
|
-
@attribute = attribute
|
20
|
-
|
21
|
-
if currencies.respond_to? :each_pair
|
22
|
-
currencies.each_pair { |key, value| @currencies[key.to_s] = value }
|
23
|
-
elsif Recurly.default_currency
|
24
|
-
self[Recurly.default_currency] = currencies
|
25
|
-
else
|
26
|
-
message = 'expected a Hash'
|
27
|
-
message << ' or Numeric' if Recurly.default_currency
|
28
|
-
message << " but received #{currencies.class}"
|
29
|
-
raise ArgumentError, message
|
30
|
-
end
|
31
|
-
end
|
32
|
-
|
33
|
-
def [] code
|
34
|
-
currencies[code.to_s]
|
35
|
-
end
|
36
|
-
|
37
|
-
def []= code, amount
|
38
|
-
currencies[code.to_s] = amount
|
39
|
-
@parent.send "#@attribute=", dup if @parent
|
40
|
-
amount
|
41
|
-
end
|
42
|
-
|
43
|
-
# @return [Hash] A hash of currency codes to amounts.
|
44
|
-
def to_hash
|
45
|
-
currencies.dup
|
46
|
-
end
|
47
|
-
|
48
|
-
# @return [true, false] Whether or not the currency is equal to another
|
49
|
-
# instance.
|
50
|
-
# @param other [Money]
|
51
|
-
def eql? other
|
52
|
-
other.respond_to?(:currencies) && currencies.eql?(other.currencies)
|
53
|
-
end
|
54
|
-
|
55
|
-
# @return [Integer] Unique identifier.
|
56
|
-
# @see Hash#hash
|
57
|
-
def hash
|
58
|
-
currencies.hash
|
59
|
-
end
|
60
|
-
|
61
|
-
# Implemented so that solitary currencies can be compared and sorted.
|
62
|
-
#
|
63
|
-
# @return [-1, 0, 1]
|
64
|
-
# @param other [Money]
|
65
|
-
# @example
|
66
|
-
# [Recurly::Money.new(2_00), Recurly::Money.new(1_00)].sort
|
67
|
-
# # => [#<Recurly::Money USD: 1_00>, #<Recurly::Money USD: 2_00>]
|
68
|
-
# @see Hash#<=>
|
69
|
-
def <=> other
|
70
|
-
if currencies.keys.length == 1 && other.currencies.length == 1
|
71
|
-
if currencies.keys == other.currencies.keys
|
72
|
-
return currencies.values.first <=> other.currencies.values.first
|
73
|
-
end
|
74
|
-
end
|
75
|
-
|
76
|
-
currencies <=> other.currencies
|
77
|
-
end
|
78
|
-
|
79
|
-
# @return [true, false]
|
80
|
-
# @see Object#respond_to?
|
81
|
-
def respond_to? method_name, include_private = false
|
82
|
-
super || currencies.respond_to?(method_name, include_private)
|
83
|
-
end
|
84
|
-
|
85
|
-
# @return [String]
|
86
|
-
def inspect
|
87
|
-
string = "#<#{self.class}"
|
88
|
-
if currencies.any?
|
89
|
-
string << " %s" % currencies.keys.sort.map { |code|
|
90
|
-
value = currencies[code].to_s
|
91
|
-
value.gsub!(/^(\d)$/, '0_0\1')
|
92
|
-
value.gsub!(/^(\d{2})$/, '0_\1')
|
93
|
-
value.gsub!(/(\d)(\d{2})$/, '\1_\2')
|
94
|
-
value.gsub!(/(\d)(?=(\d\d\d)+(?!\d))/, '\1_')
|
95
|
-
"#{code}: #{value}"
|
96
|
-
}.join(', ')
|
97
|
-
end
|
98
|
-
string << '>'
|
99
|
-
end
|
100
|
-
alias to_s inspect
|
101
|
-
|
102
|
-
attr_reader :currencies
|
103
|
-
|
104
|
-
private
|
105
|
-
|
106
|
-
def method_missing name, *args, &block
|
107
|
-
if currencies.respond_to? name
|
108
|
-
return currencies.send name, *args, &block
|
109
|
-
elsif c = currencies[Recurly.default_currency] and c.respond_to? name
|
110
|
-
if currencies.keys.length > 1
|
111
|
-
raise TypeError, "can't convert multicurrency into Integer"
|
112
|
-
else
|
113
|
-
return c.send name, *args, &block
|
114
|
-
end
|
115
|
-
end
|
116
|
-
|
117
|
-
super
|
118
|
-
end
|
119
|
-
end
|
120
|
-
end
|
data/lib/recurly/plan.rb
DELETED
@@ -1,40 +0,0 @@
|
|
1
|
-
module Recurly
|
2
|
-
# Recurly Documentation: https://dev.recurly.com/docs/list-plans
|
3
|
-
class Plan < Resource
|
4
|
-
# @return [Pager<AddOn>, []]
|
5
|
-
has_many :add_ons
|
6
|
-
|
7
|
-
define_attribute_methods %w(
|
8
|
-
plan_code
|
9
|
-
name
|
10
|
-
description
|
11
|
-
success_url
|
12
|
-
cancel_url
|
13
|
-
display_donation_amounts
|
14
|
-
display_quantity
|
15
|
-
display_phone_number
|
16
|
-
bypass_hosted_confirmation
|
17
|
-
unit_name
|
18
|
-
payment_page_tos_link
|
19
|
-
payment_page_css
|
20
|
-
setup_fee_in_cents
|
21
|
-
unit_amount_in_cents
|
22
|
-
plan_interval_length
|
23
|
-
plan_interval_unit
|
24
|
-
trial_interval_length
|
25
|
-
trial_interval_unit
|
26
|
-
total_billing_cycles
|
27
|
-
accounting_code
|
28
|
-
setup_fee_accounting_code
|
29
|
-
revenue_schedule_type
|
30
|
-
setup_fee_revenue_schedule_type
|
31
|
-
tax_exempt
|
32
|
-
tax_code
|
33
|
-
trial_requires_billing_info
|
34
|
-
auto_renew
|
35
|
-
created_at
|
36
|
-
updated_at
|
37
|
-
)
|
38
|
-
alias to_param plan_code
|
39
|
-
end
|
40
|
-
end
|