recurly 2.19.7 → 3.0.0.beta.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (230) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +14 -0
  3. data/.rspec +2 -0
  4. data/.travis.yml +5 -0
  5. data/Gemfile +4 -0
  6. data/LICENSE.txt +21 -0
  7. data/README.md +158 -110
  8. data/Rakefile +6 -0
  9. data/bin/bundle +105 -0
  10. data/bin/coderay +29 -0
  11. data/bin/console +14 -0
  12. data/bin/htmldiff +29 -0
  13. data/bin/ldiff +29 -0
  14. data/bin/pry +29 -0
  15. data/bin/rake +29 -0
  16. data/bin/rspec +29 -0
  17. data/bin/setup +8 -0
  18. data/bin/yard +29 -0
  19. data/bin/yardoc +29 -0
  20. data/bin/yri +29 -0
  21. data/lib/data/ca-certificates.crt +31 -0
  22. data/lib/recurly/client/operations.rb +935 -0
  23. data/lib/recurly/client.rb +198 -0
  24. data/lib/recurly/errors/api_errors.rb +35 -0
  25. data/lib/recurly/errors/network_errors.rb +8 -0
  26. data/lib/recurly/errors.rb +34 -0
  27. data/lib/recurly/pager.rb +119 -0
  28. data/lib/recurly/request.rb +30 -0
  29. data/lib/recurly/requests/account_acquisition_updatable.rb +22 -0
  30. data/lib/recurly/requests/account_create_only.rb +18 -0
  31. data/lib/recurly/requests/account_updatable.rb +50 -0
  32. data/lib/recurly/requests/add_on_create.rb +38 -0
  33. data/lib/recurly/requests/add_on_update.rb +38 -0
  34. data/lib/recurly/requests/address.rb +42 -0
  35. data/lib/recurly/requests/billing_info_create.rb +58 -0
  36. data/lib/recurly/requests/coupon_create_only.rb +66 -0
  37. data/lib/recurly/requests/coupon_updatable.rb +30 -0
  38. data/lib/recurly/requests/create_account.rb +62 -0
  39. data/lib/recurly/requests/create_coupon.rb +90 -0
  40. data/lib/recurly/requests/invoice_create.rb +42 -0
  41. data/lib/recurly/requests/invoice_refund.rb +30 -0
  42. data/lib/recurly/requests/line_item_create.rb +46 -0
  43. data/lib/recurly/requests/plan_create.rb +66 -0
  44. data/lib/recurly/requests/plan_update.rb +70 -0
  45. data/lib/recurly/requests/shipping_address_create.rb +58 -0
  46. data/lib/recurly/requests/shipping_address_update.rb +62 -0
  47. data/lib/recurly/requests/subscription_add_on_create.rb +22 -0
  48. data/lib/recurly/requests/subscription_change_create.rb +42 -0
  49. data/lib/recurly/requests/subscription_create.rb +86 -0
  50. data/lib/recurly/requests/subscription_update.rb +42 -0
  51. data/lib/recurly/requests/update_coupon.rb +30 -0
  52. data/lib/recurly/resource.rb +16 -1113
  53. data/lib/recurly/resources/account.rb +86 -0
  54. data/lib/recurly/resources/account_acquisition.rb +42 -0
  55. data/lib/recurly/resources/account_balance.rb +22 -0
  56. data/lib/recurly/resources/account_note.rb +30 -0
  57. data/lib/recurly/resources/add_on.rb +62 -0
  58. data/lib/recurly/resources/address.rb +42 -0
  59. data/lib/recurly/resources/billing_info.rb +62 -0
  60. data/lib/recurly/resources/coupon.rb +110 -0
  61. data/lib/recurly/resources/coupon_discount.rb +22 -0
  62. data/lib/recurly/resources/coupon_redemption.rb +46 -0
  63. data/lib/recurly/resources/credit_payment.rb +62 -0
  64. data/lib/recurly/resources/error.rb +18 -0
  65. data/lib/recurly/resources/error_may_have_transaction.rb +22 -0
  66. data/lib/recurly/resources/invoice.rb +138 -0
  67. data/lib/recurly/resources/invoice_collection.rb +18 -0
  68. data/lib/recurly/resources/line_item.rb +166 -0
  69. data/lib/recurly/resources/plan.rb +86 -0
  70. data/lib/recurly/resources/settings.rb +18 -0
  71. data/lib/recurly/resources/shipping_address.rb +74 -0
  72. data/lib/recurly/resources/site.rb +46 -0
  73. data/lib/recurly/resources/subscription.rb +134 -0
  74. data/lib/recurly/resources/subscription_add_on.rb +42 -0
  75. data/lib/recurly/resources/subscription_change.rb +54 -0
  76. data/lib/recurly/resources/tax_info.rb +18 -0
  77. data/lib/recurly/resources/transaction.rb +146 -0
  78. data/lib/recurly/resources/unique_coupon_code.rb +38 -0
  79. data/lib/recurly/resources/user.rb +38 -0
  80. data/lib/recurly/schema/json_deserializer.rb +53 -0
  81. data/lib/recurly/schema/json_parser.rb +71 -0
  82. data/lib/recurly/schema/request_caster.rb +66 -0
  83. data/lib/recurly/schema/schema_factory.rb +50 -0
  84. data/lib/recurly/schema/schema_validator.rb +125 -0
  85. data/lib/recurly/schema.rb +114 -0
  86. data/lib/recurly/version.rb +1 -10
  87. data/lib/recurly.rb +14 -164
  88. data/recurly.gemspec +32 -0
  89. data/scripts/build +4 -0
  90. data/scripts/clean +6 -0
  91. data/scripts/test +3 -0
  92. metadata +129 -192
  93. data/lib/recurly/account.rb +0 -230
  94. data/lib/recurly/account_acquisition.rb +0 -27
  95. data/lib/recurly/account_balance.rb +0 -23
  96. data/lib/recurly/add_on.rb +0 -52
  97. data/lib/recurly/address.rb +0 -25
  98. data/lib/recurly/adjustment.rb +0 -98
  99. data/lib/recurly/api/errors.rb +0 -208
  100. data/lib/recurly/api/net_http_adapter.rb +0 -111
  101. data/lib/recurly/api.rb +0 -110
  102. data/lib/recurly/billing_info.rb +0 -133
  103. data/lib/recurly/business_entity.rb +0 -30
  104. data/lib/recurly/coupon.rb +0 -136
  105. data/lib/recurly/credit_payment.rb +0 -32
  106. data/lib/recurly/currency_percentage_tier.rb +0 -17
  107. data/lib/recurly/custom_field.rb +0 -15
  108. data/lib/recurly/custom_field_definition.rb +0 -14
  109. data/lib/recurly/customer_permission.rb +0 -10
  110. data/lib/recurly/delivery.rb +0 -19
  111. data/lib/recurly/dunning_campaign.rb +0 -30
  112. data/lib/recurly/dunning_cycle.rb +0 -18
  113. data/lib/recurly/entitlement.rb +0 -19
  114. data/lib/recurly/error.rb +0 -13
  115. data/lib/recurly/external_account.rb +0 -17
  116. data/lib/recurly/external_charge.rb +0 -20
  117. data/lib/recurly/external_invoice.rb +0 -26
  118. data/lib/recurly/external_product.rb +0 -34
  119. data/lib/recurly/external_product_reference.rb +0 -18
  120. data/lib/recurly/external_subscription.rb +0 -36
  121. data/lib/recurly/gateway_attribute.rb +0 -10
  122. data/lib/recurly/gift_card.rb +0 -85
  123. data/lib/recurly/helper.rb +0 -51
  124. data/lib/recurly/invoice.rb +0 -322
  125. data/lib/recurly/invoice_collection.rb +0 -14
  126. data/lib/recurly/invoice_template.rb +0 -14
  127. data/lib/recurly/item.rb +0 -36
  128. data/lib/recurly/js.rb +0 -14
  129. data/lib/recurly/juris_detail.rb +0 -15
  130. data/lib/recurly/measured_unit.rb +0 -16
  131. data/lib/recurly/money.rb +0 -120
  132. data/lib/recurly/note.rb +0 -14
  133. data/lib/recurly/percentage_tier.rb +0 -17
  134. data/lib/recurly/plan.rb +0 -56
  135. data/lib/recurly/plan_ramp_interval.rb +0 -10
  136. data/lib/recurly/purchase.rb +0 -238
  137. data/lib/recurly/redemption.rb +0 -46
  138. data/lib/recurly/resource/association.rb +0 -16
  139. data/lib/recurly/resource/errors.rb +0 -20
  140. data/lib/recurly/resource/pager.rb +0 -313
  141. data/lib/recurly/shipping_address.rb +0 -26
  142. data/lib/recurly/shipping_fee.rb +0 -17
  143. data/lib/recurly/shipping_method.rb +0 -13
  144. data/lib/recurly/sub_add_on_percentage_tier.rb +0 -17
  145. data/lib/recurly/subscription/add_ons.rb +0 -82
  146. data/lib/recurly/subscription.rb +0 -371
  147. data/lib/recurly/subscription_add_on.rb +0 -64
  148. data/lib/recurly/subscription_ramp_interval.rb +0 -10
  149. data/lib/recurly/tax_detail.rb +0 -18
  150. data/lib/recurly/tax_type.rb +0 -13
  151. data/lib/recurly/tier.rb +0 -18
  152. data/lib/recurly/transaction/errors.rb +0 -119
  153. data/lib/recurly/transaction.rb +0 -131
  154. data/lib/recurly/usage.rb +0 -29
  155. data/lib/recurly/verify.rb +0 -12
  156. data/lib/recurly/webhook/account_notification.rb +0 -13
  157. data/lib/recurly/webhook/billing_info_update_failed_notification.rb +0 -6
  158. data/lib/recurly/webhook/billing_info_updated_notification.rb +0 -6
  159. data/lib/recurly/webhook/canceled_account_notification.rb +0 -6
  160. data/lib/recurly/webhook/canceled_gift_card_notification.rb +0 -6
  161. data/lib/recurly/webhook/canceled_subscription_notification.rb +0 -6
  162. data/lib/recurly/webhook/closed_credit_invoice_notification.rb +0 -6
  163. data/lib/recurly/webhook/closed_invoice_notification.rb +0 -6
  164. data/lib/recurly/webhook/credit_payment_notification.rb +0 -12
  165. data/lib/recurly/webhook/deactivated_item_notification.rb +0 -6
  166. data/lib/recurly/webhook/deleted_shipping_address_notification.rb +0 -6
  167. data/lib/recurly/webhook/dunning_notification.rb +0 -14
  168. data/lib/recurly/webhook/expired_subscription_notification.rb +0 -6
  169. data/lib/recurly/webhook/failed_charge_invoice_notification.rb +0 -6
  170. data/lib/recurly/webhook/failed_payment_notification.rb +0 -6
  171. data/lib/recurly/webhook/fraud_info_updated_notification.rb +0 -6
  172. data/lib/recurly/webhook/gift_card_notification.rb +0 -8
  173. data/lib/recurly/webhook/invoice_notification.rb +0 -12
  174. data/lib/recurly/webhook/item_notification.rb +0 -7
  175. data/lib/recurly/webhook/low_balance_gift_card_notification.rb +0 -6
  176. data/lib/recurly/webhook/new_account_notification.rb +0 -6
  177. data/lib/recurly/webhook/new_charge_invoice_notification.rb +0 -6
  178. data/lib/recurly/webhook/new_credit_invoice_notification.rb +0 -6
  179. data/lib/recurly/webhook/new_credit_payment_notification.rb +0 -6
  180. data/lib/recurly/webhook/new_dunning_event_notification.rb +0 -6
  181. data/lib/recurly/webhook/new_invoice_notification.rb +0 -6
  182. data/lib/recurly/webhook/new_item_notification.rb +0 -6
  183. data/lib/recurly/webhook/new_shipping_address_notification.rb +0 -6
  184. data/lib/recurly/webhook/new_subscription_notification.rb +0 -6
  185. data/lib/recurly/webhook/new_usage_notification.rb +0 -8
  186. data/lib/recurly/webhook/notification.rb +0 -18
  187. data/lib/recurly/webhook/paid_charge_invoice_notification.rb +0 -6
  188. data/lib/recurly/webhook/past_due_charge_invoice_notification.rb +0 -6
  189. data/lib/recurly/webhook/past_due_invoice_notification.rb +0 -6
  190. data/lib/recurly/webhook/paused_subscription_renewal_notification.rb +0 -6
  191. data/lib/recurly/webhook/prerenewal_notification.rb +0 -6
  192. data/lib/recurly/webhook/processing_charge_invoice_notification.rb +0 -6
  193. data/lib/recurly/webhook/processing_credit_invoice_notification.rb +0 -6
  194. data/lib/recurly/webhook/processing_invoice_notification.rb +0 -6
  195. data/lib/recurly/webhook/processing_payment_notification.rb +0 -6
  196. data/lib/recurly/webhook/purchased_gift_card_notification.rb +0 -7
  197. data/lib/recurly/webhook/reactivated_account_notification.rb +0 -6
  198. data/lib/recurly/webhook/reactivated_item_notification.rb +0 -6
  199. data/lib/recurly/webhook/redeemed_gift_card_notification.rb +0 -7
  200. data/lib/recurly/webhook/regenerated_gift_card_notification.rb +0 -6
  201. data/lib/recurly/webhook/renewed_subscription_notification.rb +0 -6
  202. data/lib/recurly/webhook/reopened_charge_invoice_notification.rb +0 -6
  203. data/lib/recurly/webhook/reopened_credit_invoice_notification.rb +0 -6
  204. data/lib/recurly/webhook/scheduled_payment_notification.rb +0 -6
  205. data/lib/recurly/webhook/scheduled_subscription_pause_notification.rb +0 -6
  206. data/lib/recurly/webhook/scheduled_subscription_update_notification.rb +0 -6
  207. data/lib/recurly/webhook/subscription_notification.rb +0 -12
  208. data/lib/recurly/webhook/subscription_pause_canceled_notification.rb +0 -6
  209. data/lib/recurly/webhook/subscription_pause_modified_notification.rb +0 -6
  210. data/lib/recurly/webhook/subscription_paused_notification.rb +0 -6
  211. data/lib/recurly/webhook/subscription_resumed_notification.rb +0 -6
  212. data/lib/recurly/webhook/successful_payment_notification.rb +0 -6
  213. data/lib/recurly/webhook/successful_refund_notification.rb +0 -6
  214. data/lib/recurly/webhook/transaction_authorized_notification.rb +0 -6
  215. data/lib/recurly/webhook/transaction_notification.rb +0 -12
  216. data/lib/recurly/webhook/transaction_status_updated_notification.rb +0 -6
  217. data/lib/recurly/webhook/updated_account_notification.rb +0 -6
  218. data/lib/recurly/webhook/updated_balance_gift_card_notification.rb +0 -7
  219. data/lib/recurly/webhook/updated_gift_card_notification.rb +0 -6
  220. data/lib/recurly/webhook/updated_invoice_notification.rb +0 -6
  221. data/lib/recurly/webhook/updated_item_notification.rb +0 -6
  222. data/lib/recurly/webhook/updated_shipping_address_notification.rb +0 -6
  223. data/lib/recurly/webhook/updated_subscription_notification.rb +0 -6
  224. data/lib/recurly/webhook/void_payment_notification.rb +0 -6
  225. data/lib/recurly/webhook/voided_credit_invoice_notification.rb +0 -6
  226. data/lib/recurly/webhook/voided_credit_payment_notification.rb +0 -6
  227. data/lib/recurly/webhook.rb +0 -113
  228. data/lib/recurly/xml/nokogiri.rb +0 -60
  229. data/lib/recurly/xml/rexml.rb +0 -52
  230. data/lib/recurly/xml.rb +0 -122
data/lib/recurly/note.rb DELETED
@@ -1,14 +0,0 @@
1
- module Recurly
2
- # Recurly Documentation: https://dev.recurly.com/docs/list-account-notes
3
- class Note < Resource
4
- # @return [Account]
5
- belongs_to :account
6
-
7
- define_attribute_methods %w(
8
- account
9
- message
10
- created_at
11
- )
12
-
13
- end
14
- end
@@ -1,17 +0,0 @@
1
- module Recurly
2
- class PercentageTier < Resource
3
-
4
- belongs_to :currency_percentage_tier
5
-
6
- define_attribute_methods %w(
7
- ending_amount_in_cents
8
- usage_percentage
9
- )
10
-
11
- def xml_keys
12
- attributes.keys
13
- end
14
-
15
- embedded! true
16
- end
17
- end
data/lib/recurly/plan.rb DELETED
@@ -1,56 +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
- # @return <ExternalProduct>
8
- has_one :external_product
9
-
10
- # @return [[PlanRampInterval], nil]
11
- has_many :ramp_intervals, class_name: :PlanRampInterval
12
-
13
- # @return [[CustomField], []]
14
- has_many :custom_fields, class_name: :CustomField, readonly: false
15
-
16
- define_attribute_methods %w(
17
- plan_code
18
- name
19
- description
20
- success_url
21
- cancel_url
22
- display_donation_amounts
23
- display_quantity
24
- display_phone_number
25
- bypass_hosted_confirmation
26
- unit_name
27
- payment_page_tos_link
28
- payment_page_css
29
- setup_fee_in_cents
30
- unit_amount_in_cents
31
- plan_interval_length
32
- plan_interval_unit
33
- pricing_model
34
- ramp_intervals
35
- trial_interval_length
36
- trial_interval_unit
37
- total_billing_cycles
38
- accounting_code
39
- setup_fee_accounting_code
40
- revenue_schedule_type
41
- setup_fee_revenue_schedule_type
42
- tax_exempt
43
- tax_code
44
- trial_requires_billing_info
45
- auto_renew
46
- allow_any_item_on_subscriptions
47
- avalara_transaction_type
48
- avalara_service_type
49
- dunning_campaign_id
50
- custom_fields
51
- created_at
52
- updated_at
53
- )
54
- alias to_param plan_code
55
- end
56
- end
@@ -1,10 +0,0 @@
1
- module Recurly
2
- class PlanRampInterval < Resource
3
- belongs_to :plan
4
-
5
- define_attribute_methods %w(
6
- starting_billing_cycle
7
- unit_amount_in_cents
8
- )
9
- end
10
- end
@@ -1,238 +0,0 @@
1
- module Recurly
2
- # The Purchase object works in a slightly different way than the rest of the models.
3
- # You build up the purchase data into an object then pass to either:
4
- # {Purchase.invoice!} or {Purchase.preview!} and it will
5
- # return an {InvoiceCollection}.
6
- #
7
- # You can build your purchase object with a new account or an existing account.
8
- # For an existing account, you just need an account_code:
9
- # Recurly::Purchase.new({account: {account_code: 'myexistingaccount'}})
10
- # or
11
- # account = Recurly::Account.find('existing_account')
12
- # Recurly::Purchase.new({account: account})
13
- # or
14
- # account = Recurly::Account.find('existing_account')
15
- # purchase = Recurly::Purchase.new
16
- # purchase.account = account
17
- #
18
- # For a new account, you can pass in {Account} data, {BillingInfo} data, etc
19
- # in the same way you would when creating a {Subscription} with a new account.
20
- #
21
- # You can also pass in adjustments and invoicing data to be added to the invoice.
22
- #
23
- # There are multiple ways to set the shipping addresses:
24
- # 1. Use {Purchase#shipping_address_id} if you want to apply an existing shipping
25
- # address to all subscriptions, adjustments, and shipping fees in this purchase.
26
- # 2. Use {Purchase#shipping_address} if you want to add and apply a single shipping address.
27
- # 3. Use {Subscription#shipping_address_id} or {Subscription#shipping_address}
28
- # to set a shipping address for only the subscription.
29
- # 4. Use {Adjustment#shipping_address_id} or {Adjustment#shipping_address}
30
- # to set a shipping address for only the adjustment.
31
- # 5. Use {ShippingFee#shipping_address_id} or {ShippingFee#shipping_address}
32
- # to set a shipping address for only the shipping fee. If there are multiple
33
- # shipping fees on a single purchase, each can have its own shipping address.
34
- # This way, if you ship different adjustments to multiple addresses, the
35
- # shipping fees on the purchase can be associated with the same address
36
- # as the adjustment.
37
- #
38
- # @example
39
- # require 'securerandom'
40
- #
41
- # purchase = Recurly::Purchase.new(
42
- # currency: 'USD',
43
- # collection_method: :automatic,
44
- # account: {
45
- # account_code: SecureRandom.uuid,
46
- # billing_info: {
47
- # first_name: 'Benjamin',
48
- # last_name: 'Du Monde',
49
- # address1: '400 Alabama St.',
50
- # city: 'San Francisco',
51
- # state: 'CA',
52
- # zip: '94110',
53
- # country: 'US',
54
- # number: '4111-1111-1111-1111',
55
- # month: 12,
56
- # year: 2019,
57
- # }
58
- # },
59
- # adjustments: [
60
- # {
61
- # product_code: 'product_1',
62
- # unit_amount_in_cents: 1000,
63
- # quantity: 1,
64
- # revenue_schedule_type: :at_invoice
65
- # },
66
- # {
67
- # product_code: 'product_2',
68
- # unit_amount_in_cents: 3000,
69
- # quantity: 5,
70
- # revenue_schedule_type: :at_invoice
71
- # }
72
- # ],
73
- # shipping_address: {
74
- # first_name: 'Benjamin',
75
- # last_name: 'Du Monde',
76
- # address1: '400 Dolores St.',
77
- # city: 'San Francisco',
78
- # state: 'CA',
79
- # zip: '94110',
80
- # country: 'US',
81
- # nickname: 'Home'
82
- # },
83
- # shipping_fees: [
84
- # {
85
- # shipping_method_code: 'fast_fast_fast',
86
- # shipping_amount_in_cents: '999'
87
- # }
88
- # ]
89
- # )
90
- #
91
- # begin
92
- # preview_collection = Recurly::Purchase.preview!(purchase)
93
- # puts preview_collection.inspect
94
- # rescue Recurly::Resource::Invalid => e
95
- # # Invalid data
96
- # end
97
- #
98
- # begin
99
- # invoice_collection = Recurly::Purchase.invoice!(purchase)
100
- # puts invoice_collection.inspect
101
- # rescue Recurly::Resource::Invalid => e
102
- # # Invalid data
103
- # rescue Recurly::Transaction::DeclinedError => e
104
- # # Display e.message and/or subscription (and associated) errors...
105
- # rescue Recurly::Transaction::RetryableError => e
106
- # # You should be able to attempt to save this again later.
107
- # rescue Recurly::Transaction::Error => e
108
- # # Fallback transaction error
109
- # # e.transaction
110
- # # e.transaction_error_code
111
- # end
112
- class Purchase < Resource
113
- # @return [[Adjustment], nil]
114
- has_many :adjustments, class_name: :Adjustment, readonly: false
115
-
116
- # @return [Account, nil]
117
- has_one :account, class_name: :Account, readonly: false
118
-
119
- # @return [GiftCard, nil]
120
- has_one :gift_card, class_name: :GiftCard, readonly: false
121
-
122
- # @return [ShippingAddress, nil]
123
- has_one :shipping_address, class_name: :ShippingAddress, readonly: false
124
-
125
- # @return [[Subscription], nil]
126
- has_many :subscriptions, class_name: :Subscription, readonly: false
127
-
128
- # @return [[ShippingFee], nil]
129
- has_many :shipping_fees, class_name: :ShippingFee, readonly: false
130
-
131
- # @return [BillingInfo, nil]
132
- has_one :billing_info, class_name: :BillingInfo, readonly: true
133
-
134
- define_attribute_methods %w(
135
- currency
136
- collection_method
137
- po_number
138
- net_terms
139
- coupon_codes
140
- terms_and_conditions
141
- customer_notes
142
- vat_reverse_charge_notes
143
- shipping_address_id
144
- gateway_code
145
- transaction_type
146
- billing_info_uuid
147
- )
148
-
149
- class << self
150
-
151
- # Generate an invoice for the purchase and run any needed transactions.
152
- #
153
- # @param purchase [Purchase] The purchase data for the request.
154
- # @return [InvoiceCollection] The saved invoice(s) representing this purchase.
155
- # @raise [Invalid] Raised if the purchase cannot be invoiced.
156
- # @raise [Transaction::Error] Raised if the transaction failed.
157
- def invoice!(purchase)
158
- post(purchase, collection_path)
159
- end
160
-
161
- # Generate a preview invoice for the purchase. Runs validations
162
- # but does not run any transactions.
163
- #
164
- # @param purchase [Purchase] The purchase data for the request.
165
- # @return [InvoiceCollection] The preview invoice(s) representing this purchase.
166
- # @raise [Invalid] Raised if the purchase cannot be invoiced.
167
- def preview!(purchase)
168
- post(purchase, "#{collection_path}/preview")
169
- end
170
-
171
- # Generate an authorized invoice for the purchase. Runs validations
172
- # but does not run any transactions. This endpoint will create a
173
- # pending purchase that can be activated at a later time once payment
174
- # has been completed on an external source (e.g. Adyen's Hosted
175
- # Payment Pages).
176
- #
177
- # @param purchase [Purchase] The purchase data for the request.
178
- # @return [InvoiceCollection] The authorized invoice collection representing this purchase.
179
- # @raise [Invalid] Raised if the purchase cannot be invoiced.
180
- def authorize!(purchase)
181
- post(purchase, "#{collection_path}/authorize")
182
- end
183
-
184
- # Use for Adyen HPP transaction requests. Runs validations
185
- # but does not run any transactions.
186
- #
187
- # @param purchase [Purchase] The purchase data for the request.
188
- # @return [InvoiceCollection] The authorized invoice collection representing this purchase.
189
- # @raise [Invalid] Raised if the purchase cannot be invoiced.
190
- def pending!(purchase)
191
- post(purchase, "#{collection_path}/pending")
192
- end
193
-
194
- # Allows the merchant to cancel an authorization.
195
- #
196
- # @param transaction_uuid [String] The uuid for the transaction representing the authorization. Can typically be found at invoice_collection.charge_invoice.transactions.first.uuid.
197
- # @return [InvoiceCollection] The canceled invoice collection.
198
- # @raise [Invalid] Raised if the authorization cannot be canceled.
199
- def cancel!(transaction_uuid)
200
- post(nil, "#{collection_path}/transaction-uuid-#{transaction_uuid}/cancel")
201
- end
202
-
203
- # Allows the merchants to initiate a capture transaction tied to the original authorization.
204
- #
205
- # @param transaction_uuid [String] The uuid for the transaction representing the authorization. Can typically be found at invoice_collection.charge_invoice.transactions.first.uuid.
206
- # @return [InvoiceCollection] The captured invoice collection.
207
- # @raise [Invalid] Raised if the authorization cannot be captured.
208
- def capture!(transaction_uuid)
209
- post(nil, "#{collection_path}/transaction-uuid-#{transaction_uuid}/capture")
210
- end
211
-
212
- def post(purchase, path)
213
- body = purchase.nil? ? nil : purchase.to_xml
214
- response = API.send(:post, path, body)
215
- InvoiceCollection.from_response(response)
216
- rescue API::UnprocessableEntity => e
217
- purchase.apply_errors(e) if purchase
218
- Transaction::Error.validate!(e, nil)
219
- raise Resource::Invalid.new(purchase)
220
- end
221
- end
222
-
223
- # TODO
224
- # This is a temporary solution which allows us to
225
- # embed these resources in a purchase without changing their
226
- # interface. It will be removed once we get rid of default_currency.
227
- def to_xml(options = {})
228
- subscriptions.each {|s| s.currency = nil}
229
- adjustments.each {|a| a.currency = nil}
230
- super(options)
231
- end
232
-
233
- # This object does not represent a model on the server side
234
- # so we do not need to expose these methods.
235
- protected(*%w(save save!))
236
- private_class_method(*%w(all find_each first paginate scoped where post create! create))
237
- end
238
- end
@@ -1,46 +0,0 @@
1
- module Recurly
2
- # Redemptions are not top-level resources, but they can be accessed (and
3
- # created) through {Coupon} instances.
4
- #
5
- # @example
6
- # coupon = Coupon.find("summer2011")
7
- # coupon.redemptions.each { |r| p r }
8
- # coupon.redeem Account.find("groupon_lover")
9
- class Redemption < Resource
10
- # @return [Coupon]
11
- belongs_to :coupon
12
-
13
- # @return [Account]
14
- belongs_to :account, :readonly => false
15
-
16
- # @return [Subscription]
17
- belongs_to :subscription
18
-
19
- # @return [Invoice]
20
- belongs_to :invoice
21
-
22
- define_attribute_methods %w(
23
- uuid
24
- single_use
25
- total_discounted_in_cents
26
- currency
27
- state
28
- coupon_code
29
- subscription_uuid
30
- created_at
31
- updated_at
32
- )
33
-
34
- def save
35
- return false if persisted?
36
- copy_from coupon.redeem account, currency
37
- true
38
- rescue Recurly::API::UnprocessableEntity => e
39
- apply_errors e
40
- false
41
- end
42
-
43
- # Redemptions are only writeable through {Coupon} instances.
44
- embedded!
45
- end
46
- end
@@ -1,16 +0,0 @@
1
- module Recurly
2
- class Resource
3
- class Association
4
- attr_reader :relation, :resource_class
5
-
6
- def initialize relation, resource_class, options = {}
7
- @relation, @resource_class, @options = relation, resource_class, options
8
- end
9
-
10
- def class_name
11
- return @class_name if defined? @class_name
12
- @class_name = @options[:class_name]
13
- end
14
- end
15
- end
16
- end
@@ -1,20 +0,0 @@
1
- module Recurly
2
- class Resource
3
- class Errors < Hash
4
- def [] key
5
- super key.to_s
6
- end
7
-
8
- def []= key, value
9
- super key.to_s, value
10
- end
11
-
12
- def full_messages
13
- map { |attribute, messages|
14
- attribute_name = attribute.capitalize.gsub('_', ' ')
15
- messages.map { |message| "#{attribute_name} #{message}." }
16
- }.flatten
17
- end
18
- end
19
- end
20
- end