google4r-checkout 1.0.2 → 1.0.3

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.
data/CHANGES CHANGED
@@ -1,5 +1,21 @@
1
1
  =google4r-checkout Changelog
2
2
 
3
+ == 1.0.3 (2008-08-08)
4
+
5
+ * Added analytics_data support. Thanks to Will Schwenk!
6
+ * Added create_address_filters_allowed_area and create_address_filters_excluded_area method to the MerchantCalculatedShipping class.
7
+ * Created two aliases create_shipping_restrictions_allowed_area and create_shipping_restrictions_excluded_area to facilitate deprecation of create_allowed_area and create_excluded_area.
8
+ * country_code in PostalArea class is now optional in the initialize method so it can be called properly in the create_area method in shared.rb.
9
+ * Added line-item shipping support.
10
+ * Refactor notifications to extract a base notification class that has the front_end, serial_number, google_order_number and timestamp.
11
+ * Added notification handshake support (i.e. serial-number) for notifciation-acknowledgement.
12
+ * Added digital delivery support. Thanks to Andy Kim and Matthew Moore!
13
+ * Added Carrier Calculated Shipping support.
14
+ * Added unit tests - carrier_calculated_shipping_test.rb, digital_content_test.rb, *_items_*commands.rb
15
+ * Updated unit tests - item_test.rb, merchant_calculated_shipping_test.rb, notification_acknowledgement_test.rb
16
+ * Updated integration test - checkout_command_test.rb
17
+ * Added HTML Form API Signature support. It is included in utils.rb.
18
+
3
19
  == 1.0.2 (2007-08-18)
4
20
 
5
21
  * Moved Address from notifications.rb to shared.rb
@@ -40,17 +40,15 @@ module Google4R #:nodoc:
40
40
  class Command
41
41
  # The URL to use for requests to the sandboxed API. The merchant id is to be
42
42
  # put in via String#%.
43
- #--
44
- # TODO: Move this into a class variable (e.g. via cattr) so it is adaptable.
45
- #++
46
- SANDBOX_URL = "https://sandbox.google.com/checkout/cws/v2/Merchant/%s/request"
43
+ SANDBOX_URL_PREFIX = 'https://sandbox.google.com/checkout/'
47
44
 
48
45
  # The URL to use for real requests to the Google Checkout API. The merchant id
49
46
  # is to be put in via String#%.
50
- #--
51
- # TODO: Move this into a class variable (e.g. via cattr) so it is adaptable.
52
- #++
53
- PRODUCTION_URL = "https://checkout.google.com/cws/v2/Merchant/%s/request"
47
+ PRODUCTION_URL_PREFIX = 'https://checkout.google.com/'
48
+
49
+ CHECKOUT_API_URL = 'api/checkout/v2/merchantCheckout/Merchant/%s'
50
+
51
+ ORDER_PROCESSING_API_URL = 'api/checkout/v2/request/Merchant/%s'
54
52
 
55
53
  # The Frontent class that was used to create this CheckoutCommand and whose
56
54
  # configuration will be used.
@@ -64,6 +62,9 @@ module Google4R #:nodoc:
64
62
 
65
63
  # Initialize the frontend attribute with the value of the frontend parameter.
66
64
  def initialize(frontend)
65
+ if self.instance_of?(Command) || self.instance_of?(ItemsCommand)
66
+ raise 'Cannot instantiate abstract class ' + self.class.to_s
67
+ end
67
68
  @frontend = frontend
68
69
  end
69
70
 
@@ -81,10 +82,17 @@ module Google4R #:nodoc:
81
82
  # Create HTTP(S) POST command and set up Basic Authentication.
82
83
  url_str =
83
84
  if frontend.configuration[:use_sandbox] then
84
- SANDBOX_URL % frontend.configuration[:merchant_id]
85
+ SANDBOX_URL_PREFIX
86
+ else
87
+ PRODUCTION_URL_PREFIX
88
+ end
89
+ url_str +=
90
+ if self.class == CheckoutCommand then
91
+ CHECKOUT_API_URL
85
92
  else
86
- PRODUCTION_URL % frontend.configuration[:merchant_id]
93
+ ORDER_PROCESSING_API_URL
87
94
  end
95
+ url_str = url_str % frontend.configuration[:merchant_id]
88
96
  url = URI.parse(url_str)
89
97
 
90
98
  request = Net::HTTP::Post.new(url.path)
@@ -138,12 +146,8 @@ module Google4R #:nodoc:
138
146
 
139
147
  # Class method to return the command's XML representation.
140
148
  def to_xml
141
- if self.class == Command then
142
- raise NotImplementedError, "Command#to_xml has to be used in a subclass."
143
- else
144
- generator_class = Google4R::Command.get_const("#{self.class}XmlGenerator")
145
- return generator_class.new(self).generate
146
- end
149
+ generator_class = Google4R::Command.get_const("#{self.class}XmlGenerator")
150
+ return generator_class.new(self).generate
147
151
  end
148
152
 
149
153
  protected
@@ -219,6 +223,13 @@ module Google4R #:nodoc:
219
223
 
220
224
  # A Google Checkout merchant ID that identifies the eCommerce provider.
221
225
  attr_accessor :platform_id
226
+
227
+ # Setting this allows Google Analytics to track purchases that use Checkout
228
+ # The value should be as set by the analytics javascript in the hidden form
229
+ # element names "analyticsdata" on the page with the checkout button.
230
+ # If left unset then the element will not be generated.
231
+ # see: http://code.google.com/apis/checkout/developer/checkout_analytics_integration.html
232
+ attr_accessor :analytics_data
222
233
 
223
234
  # Generates the XML for this CheckoutCommand.
224
235
  def to_xml
@@ -249,7 +260,9 @@ module Google4R #:nodoc:
249
260
  #
250
261
  # Raises a ArgumentError if the parameter clazz is invalid.
251
262
  def create_shipping_method(clazz, &block)
252
- if not [ PickupShipping, FlatRateShipping, MerchantCalculatedShipping ].include?(clazz) then
263
+ if not [ PickupShipping, FlatRateShipping,
264
+ MerchantCalculatedShipping, CarrierCalculatedShipping
265
+ ].include?(clazz) then
253
266
  raise ArgumentError, "Unknown shipping method: #{clazz.inspect}."
254
267
  end
255
268
 
@@ -278,6 +291,10 @@ module Google4R #:nodoc:
278
291
  @serial_number = serial_number
279
292
  @redirect_url = redirect_url
280
293
  end
294
+
295
+ def to_s
296
+ return @redirect_url
297
+ end
281
298
  end
282
299
 
283
300
  #
@@ -288,11 +305,6 @@ module Google4R #:nodoc:
288
305
  # The amount to charge, optional, Money
289
306
  attr_accessor :amount
290
307
 
291
- # frontend, required
292
- def initialize(frontend)
293
- super(frontend)
294
- end
295
-
296
308
  # Generates the XML for this ChargeOrderCommand
297
309
  def to_xml
298
310
  ChargeOrderCommandXmlGenerator.new(self).generate
@@ -310,10 +322,6 @@ module Google4R #:nodoc:
310
322
  # A comment related to the refunded order, String of maximum 140 characters, optional
311
323
  attr_accessor :comment
312
324
 
313
- def initialize(frontend)
314
- super(frontend)
315
- end
316
-
317
325
  def to_xml
318
326
  RefundOrderCommandXmlGenerator.new(self).generate
319
327
  end
@@ -327,10 +335,6 @@ module Google4R #:nodoc:
327
335
  # A comment related to the cancelled order, String of maximum 140 characters, optional
328
336
  attr_accessor :comment
329
337
 
330
- def initialize(frontend)
331
- super(frontend)
332
- end
333
-
334
338
  def to_xml
335
339
  CancelOrderCommandXmlGenerator.new(self).generate
336
340
  end
@@ -340,10 +344,6 @@ module Google4R #:nodoc:
340
344
  # a customer's credit card for the uncharged balance of an order to verify that
341
345
  # funds for the order are available
342
346
  class AuthorizeOrderCommand < Command
343
- def initialize(frontend)
344
- super(frontend)
345
- end
346
-
347
347
  def to_xml
348
348
  AuthorizeOrderCommandXmlGenerator.new(self).generate
349
349
  end
@@ -352,10 +352,6 @@ module Google4R #:nodoc:
352
352
  # The ProcessOrderCommand instructs Google Checkout to to update
353
353
  # an order's fulfillment state from NEW to PROCESSING
354
354
  class ProcessOrderCommand < Command
355
- def initialize(frontend)
356
- super(frontend)
357
- end
358
-
359
355
  def to_xml
360
356
  ProcessOrderCommandXmlGenerator.new(self).generate
361
357
  end
@@ -366,10 +362,6 @@ module Google4R #:nodoc:
366
362
  class AddMerchantOrderNumberCommand < Command
367
363
  # The merchant-assigned order number associated with an order
368
364
  attr_accessor :merchant_order_number
369
-
370
- def initialize(frontend)
371
- super(frontend)
372
- end
373
365
 
374
366
  def to_xml
375
367
  AddMerchantOrderNumberCommandXmlGenerator.new(self).generate
@@ -387,10 +379,6 @@ module Google4R #:nodoc:
387
379
 
388
380
  # The shipper's tracking number that is associated with an order
389
381
  attr_accessor :tracking_number
390
-
391
- def initialize(frontend)
392
- super(frontend)
393
- end
394
382
 
395
383
  def to_xml
396
384
  DeliverOrderCommandXmlGenerator.new(self).generate
@@ -405,10 +393,6 @@ module Google4R #:nodoc:
405
393
 
406
394
  # The shipper's tracking number that is associated with an order
407
395
  attr_accessor :tracking_number
408
-
409
- def initialize(frontend)
410
- super(frontend)
411
- end
412
396
 
413
397
  def to_xml
414
398
  AddTrackingDataCommandXmlGenerator.new(self).generate
@@ -420,12 +404,8 @@ module Google4R #:nodoc:
420
404
  # The message to the customer
421
405
  attr_accessor :message
422
406
 
423
- # if google checkout should email buyer to ssay order is dispatched
407
+ # if google checkout should email buyer to say order is dispatched
424
408
  attr_accessor :send_email
425
-
426
- def initialize(frontend)
427
- super(frontend)
428
- end
429
409
 
430
410
  def to_xml
431
411
  SendBuyerMessageCommandXmlGenerator.new(self).generate
@@ -434,10 +414,6 @@ module Google4R #:nodoc:
434
414
 
435
415
  # The ArchiveOrderCommand instructs Google Checkout to remove an order from your Merchant Center Inbox.
436
416
  class ArchiveOrderCommand < Command
437
- def initialize(frontend)
438
- super(frontend)
439
- end
440
-
441
417
  def to_xml
442
418
  ArchiveOrderCommandXmlGenerator.new(self).generate
443
419
  end
@@ -445,12 +421,76 @@ module Google4R #:nodoc:
445
421
 
446
422
  # The UnarchiveOrderCommand instructs Google Checkout to return a previously archived order to your Merchant Center Inbox.
447
423
  class UnarchiveOrderCommand < Command
424
+ def to_xml
425
+ UnarchiveOrderCommandXmlGenerator.new(self).generate
426
+ end
427
+ end
428
+
429
+ #
430
+ # XML API Commands for Line-item Shipping
431
+ #
432
+
433
+ # Abstract class for Line-item shipping commands
434
+ class ItemsCommand < Command
435
+ # An array of ItemInfo objects that you are marking as backordered,
436
+ # cancelled, returned or resetting shipping information
437
+ attr_accessor :item_info_arr
438
+
439
+ # if google checkout should email buyer to say order is dispatched
440
+ attr_accessor :send_email
441
+
448
442
  def initialize(frontend)
449
- super(frontend)
443
+ super
444
+ @item_info_arr = []
445
+ @send_email = false
450
446
  end
447
+ end
451
448
 
449
+ # The <ship-items> command specifies shipping information for one or
450
+ # more items in an order.
451
+ class ShipItemsCommand < ItemsCommand
452
452
  def to_xml
453
- UnarchiveOrderCommandXmlGenerator.new(self).generate
453
+ ShipItemsCommandXmlGenerator.new(self).generate
454
+ end
455
+ end
456
+
457
+ # The <backorder-items> command lets you specify that one or more
458
+ # specific items in an order are out of stock.
459
+ class BackorderItemsCommand < ItemsCommand
460
+ def to_xml
461
+ BackorderItemsCommandXmlGenerator.new(self).generate
462
+ end
463
+ end
464
+
465
+ # The <cancel-items> command lets you specify that one or more
466
+ # specific items in an order have been cancelled, meaning they
467
+ # will not be delivered to the customer.
468
+ class CancelItemsCommand < ItemsCommand
469
+
470
+ # The reason that you are canceling one or more line items
471
+ attr_accessor :reason
472
+
473
+ # An optional comment related to one or more canceled line items
474
+ attr_accessor :comment
475
+
476
+ def to_xml
477
+ CancelItemsCommandXmlGenerator.new(self).generate
478
+ end
479
+ end
480
+
481
+ # The <return-items> command lets you specify that your customer
482
+ # returned one or more specific items in an order.
483
+ class ReturnItemsCommand < ItemsCommand
484
+ def to_xml
485
+ ReturnItemsCommandXmlGenerator.new(self).generate
486
+ end
487
+ end
488
+
489
+ # The <reset-items-shipping-information> command allows you to reset
490
+ # the shipping status for specific items in an order to "Not yet shipped".
491
+ class ResetItemsShippingInformationCommand < ItemsCommand
492
+ def to_xml
493
+ ResetItemsShippingInformationCommandXmlGenerator.new(self).generate
454
494
  end
455
495
  end
456
496
  end
@@ -169,6 +169,36 @@ module Google4R #:nodoc:
169
169
  def create_unarchive_order_command
170
170
  return UnarchiveOrderCommand.new(self)
171
171
  end
172
+
173
+ # Factory method to create a new ShipItemsCommand object. Use this method to create
174
+ # your ShipItemsCommand instances.
175
+ def create_ship_items_command
176
+ return ShipItemsCommand.new(self)
177
+ end
178
+
179
+ # Factory method to create a new BackorderItemsCommand object. Use this method to create
180
+ # your BackorderItemsCommand instances.
181
+ def create_backorder_items_command
182
+ return BackorderItemsCommand.new(self)
183
+ end
184
+
185
+ # Factory method to create a new ReturnItemsCommand object. Use this method to create
186
+ # your ReturnItemsCommand instances.
187
+ def create_return_items_command
188
+ return ReturnItemsCommand.new(self)
189
+ end
190
+
191
+ # Factory method to create a new CancelItemsCommand object. Use this method to create
192
+ # your CancelItemsCommand instances.
193
+ def create_cancel_items_command
194
+ return CancelItemsCommand.new(self)
195
+ end
196
+
197
+ # Factory method to create a new ResetItemsShippingInformationCommand object. Use this method to create
198
+ # your ResetItemsShippingInformationCommand instances.
199
+ def create_reset_items_shipping_information_command
200
+ return ResetItemsShippingInformationCommand.new(self)
201
+ end
172
202
  end
173
203
  end
174
204
  end
@@ -123,12 +123,16 @@ module Google4R #:nodoc:
123
123
  # An array of merchant codes
124
124
  attr_reader :merchant_code_strings
125
125
 
126
+ # The tax tables for the items in the order notification.
127
+ attr_reader :tax_tables
128
+
126
129
  # Sets the frontend attribute to the value of the frontend parameter.
127
130
  def initialize(frontend)
128
131
  @frontend = frontend
129
132
  @anonymous_addresses = Array.new
130
133
  @shipping_methods = Array.new
131
134
  @merchant_code_strings = Array.new
135
+ @tax_tables = frontend.tax_table_factory.effective_tax_tables_at(Time.now)
132
136
  end
133
137
 
134
138
  # Factory method to create a new MerchantCalculationCallback object from
@@ -35,17 +35,32 @@ module Google4R #:nodoc:
35
35
  class UnknownNotificationType < Exception
36
36
  end
37
37
 
38
- # Use this objects of this class to tell Google that everything went fine.
38
+ # Represents a notification acknowledgment to tell Google that the
39
+ # notification has been recieved and processed. Google guarantees not to
40
+ # resend any notification it has recieved an acknowledgment for.
41
+ #
42
+ # === For example, in a Rails app
39
43
  #
40
- # === Example
44
+ # # Let Google Checkout know we handled this notification with handshake
45
+ # notification_acknowledgement = Google4R::Checkout::NotificationAcknowledgement.new(notification).to_xml
46
+ # render :text => notification_acknowledgement, :status => 200
41
47
  #
42
- # render :text => NotificationAcknowledgement.to_xml
43
- #--
44
- # TODO: Should this become a Singleton?
45
- #++
46
- class NotificationAcknowledgement
48
+ # or
49
+ #
50
+ # # Without handshake
51
+ # notification_acknowledgement = Google4R::Checkout::NotificationAcknowledgement.new.to_xml
52
+ # render :text => notification_acknowledgement, :status => 200
53
+ #
54
+ class NotificationAcknowledgement
55
+
56
+ attr_reader :serial_number
57
+
58
+ def initialize(notification=nil)
59
+ @serial_number = notification.serial_number unless notification.nil?
60
+ end
61
+
47
62
  def to_xml
48
- %q{<?xml version="1.0" encoding="UTF-8"?><notification-acknowledgment xmlns="http://checkout.google.com/schema/2"/>}
63
+ NotificationAcknowledgementXmlGenerator.new(self).generate
49
64
  end
50
65
  end
51
66
 
@@ -123,10 +138,9 @@ module Google4R #:nodoc:
123
138
  end
124
139
  end
125
140
 
126
- # Google Checkout sends <new-order-notification> messages to the web service when a new
127
- # order has been successfully filed with Google Checkout. These messages will be parsed
128
- # into NewOrderNotification instances.
129
- class NewOrderNotification
141
+ # Abstract class for all the notifications. It should not be instantiated
142
+ # directly.
143
+ class Notification
130
144
  # The frontend this notification belongs to.
131
145
  attr_accessor :frontend
132
146
 
@@ -136,6 +150,21 @@ module Google4R #:nodoc:
136
150
  # The Google order number the new order notification belongs to (String).
137
151
  attr_accessor :google_order_number
138
152
 
153
+ # The timestamp of the notification. Also see #timestamp=
154
+ attr_accessor :timestamp
155
+
156
+ # Initializes the RiskInformationNotification instance with the given Frontend instance.
157
+ def initialize(frontend)
158
+ @frontend = frontend
159
+ end
160
+
161
+ end
162
+
163
+ # Google Checkout sends <new-order-notification> messages to the web service when a new
164
+ # order has been successfully filed with Google Checkout. These messages will be parsed
165
+ # into NewOrderNotification instances.
166
+ class NewOrderNotification < Notification
167
+
139
168
  # The buyer's billing address (Address).
140
169
  attr_accessor :buyer_billing_address
141
170
 
@@ -166,8 +195,8 @@ module Google4R #:nodoc:
166
195
  # The order's shopping cart (ShoppingCart)
167
196
  attr_accessor :shopping_cart
168
197
 
169
- # The order's timestamp (Time), also see #timestamp=
170
- attr_accessor :timestamp
198
+ # The tax tables for the items in the order notification.
199
+ attr_reader :tax_tables
171
200
 
172
201
  # Set the order's timestamp (Time). When the timestamp is set then the tax tables valid
173
202
  # at the given point of time are set into the attribute tax tables from the frontend's
@@ -177,14 +206,6 @@ module Google4R #:nodoc:
177
206
  @tax_tables = frontend.tax_table_factory.effective_tax_tables_at(time)
178
207
  end
179
208
 
180
- # The tax tables for the items in the order notification.
181
- attr_reader :tax_tables
182
-
183
- # Sets the frontend attribute to the value of the frontend parameter.
184
- def initialize(frontend)
185
- @frontend = frontend
186
- end
187
-
188
209
  # Factory method to create a new CheckoutNotification object from the REXML:Element object
189
210
  #
190
211
  # Raises NoMethodError and RuntimeError exceptions if the given element misses required
@@ -216,15 +237,7 @@ module Google4R #:nodoc:
216
237
 
217
238
  # GoogleCheckout sends <order-change-notification> messages to the web service when the
218
239
  # order's state changes. They will get parsed into OrderStateChangeNotification objects.
219
- class OrderStateChangeNotification
220
- # The frontend this notification belongs to.
221
- attr_accessor :frontend
222
-
223
- # The serial number of the notification (String).
224
- attr_accessor :serial_number
225
-
226
- # The order number in Google's database (String).
227
- attr_accessor :google_order_number
240
+ class OrderStateChangeNotification < Notification
228
241
 
229
242
  # The previous financial state of the order (String, one of FinancialOrderState::*).
230
243
  attr_accessor :previous_financial_order_state
@@ -240,9 +253,9 @@ module Google4R #:nodoc:
240
253
 
241
254
  # The reason for the change (String, can be nil).
242
255
  attr_accessor :reason
243
-
244
- # The timestamp of the notification. Also see #timestamp=
245
- attr_accessor :timestamp
256
+
257
+ # The tax tables for the items in the order notification.
258
+ attr_reader :tax_tables
246
259
 
247
260
  # Set the order's timestamp (Time). When the timestamp is set then the tax tables valid
248
261
  # at the given point of time are set into the attribute tax tables from the frontend's
@@ -252,14 +265,6 @@ module Google4R #:nodoc:
252
265
  @tax_tables = frontend.tax_table_factory.effective_tax_tables_at(time)
253
266
  end
254
267
 
255
- # The tax tables for the items in the order notification.
256
- attr_reader :tax_tables
257
-
258
- # Sets the frontend attribute to the value of the frontend parameter.
259
- def initialize(frontend)
260
- @frontend = frontend
261
- end
262
-
263
268
  # Factory method that creates a new OrderStateChangeNotification from an REXML::Element instance.
264
269
  # Use this to create instances of OrderStateChangeNotification.
265
270
  #
@@ -283,16 +288,7 @@ module Google4R #:nodoc:
283
288
 
284
289
  # Google Checkout sends <charge-amount-notification> messages to the web service when the
285
290
  # to confirm that the charge was successfully executed.
286
- class ChargeAmountNotification
287
-
288
- # The serial number of the notification (String).
289
- attr_accessor :serial_number
290
-
291
- # The order number in Google's database (String).
292
- attr_accessor :google_order_number
293
-
294
- # The timestamp of the notification
295
- attr_accessor :timestamp
291
+ class ChargeAmountNotification < Notification
296
292
 
297
293
  # The amount most recently charged for an order (Money)
298
294
  attr_accessor :latest_charge_amount
@@ -300,14 +296,6 @@ module Google4R #:nodoc:
300
296
  # The total amount charged for an order (Money)
301
297
  attr_accessor :total_charge_amount
302
298
 
303
- # The Frontend instance for this Notification
304
- attr_accessor :frontend
305
-
306
- # Initializes the ChargeAmountNotification instance with the given Frontend instance.
307
- def initialize(frontend)
308
- @frontend = frontend
309
- end
310
-
311
299
  # Factory method that creates a new ChargeAmountNotification from an REXML::Element instance.
312
300
  # Use this to create instances of ChargeAmountNotification.
313
301
  #
@@ -336,15 +324,7 @@ module Google4R #:nodoc:
336
324
  # Google Checkout sends a <refund-amount-notification> after successfully executing
337
325
  # a <refund-order> order processing command. See the Google Checkout documentation for more details:
338
326
  # http://code.google.com/apis/checkout/developer/index.html#refund_amount_notification
339
- class RefundAmountNotification
340
- # The serial number of the notification (String).
341
- attr_accessor :serial_number
342
-
343
- # The order number in Google's database (String).
344
- attr_accessor :google_order_number
345
-
346
- # The timestamp of the notification
347
- attr_accessor :timestamp
327
+ class RefundAmountNotification < Notification
348
328
 
349
329
  # The amount most recently refunded for an order (Money)
350
330
  attr_accessor :latest_refund_amount
@@ -352,14 +332,6 @@ module Google4R #:nodoc:
352
332
  # The total amount refunded for an order (Money)
353
333
  attr_accessor :total_refund_amount
354
334
 
355
- # The Frontend instance for this Notification
356
- attr_accessor :frontend
357
-
358
- # Initializes the RefundAmountNotification instance with the given Frontend instance.
359
- def initialize(frontend)
360
- @frontend = frontend
361
- end
362
-
363
335
  # Factory method that creates a new RefundAmountNotification from an REXML::Element instance.
364
336
  # Use this to create instances of RefundAmountNotification.
365
337
  #
@@ -389,15 +361,7 @@ module Google4R #:nodoc:
389
361
  # chargeback against the order and Google approves the chargeback.
390
362
  # See the Google Checkout documentation for more details:
391
363
  # http://code.google.com/apis/checkout/developer/index.html#chargeback_amount_notification
392
- class ChargebackAmountNotification
393
- # The serial number of the notification (String).
394
- attr_accessor :serial_number
395
-
396
- # The order number in Google's database (String).
397
- attr_accessor :google_order_number
398
-
399
- # The timestamp of the notification
400
- attr_accessor :timestamp
364
+ class ChargebackAmountNotification < Notification
401
365
 
402
366
  # The amount most recently charged back for an order (Money)
403
367
  attr_accessor :latest_chargeback_amount
@@ -405,14 +369,6 @@ module Google4R #:nodoc:
405
369
  # The total amount charged back for an order (Money)
406
370
  attr_accessor :total_chargeback_amount
407
371
 
408
- # The Frontend instance for this Notification
409
- attr_accessor :frontend
410
-
411
- # Initializes the ChargebackAmountNotification instance with the given Frontend instance.
412
- def initialize(frontend)
413
- @frontend = frontend
414
- end
415
-
416
372
  # Factory method that creates a new ChargebackAmountNotification from an REXML::Element instance.
417
373
  # Use this to create instances of ChargebackAmountNotification.
418
374
  #
@@ -442,15 +398,7 @@ module Google4R #:nodoc:
442
398
  # request for an explicit credit card reauthorization.
443
399
  # See the Google Checkout documentation for more details:
444
400
  # http://code.google.com/apis/checkout/developer/index.html#authorization_amount_notification
445
- class AuthorizationAmountNotification
446
- # The serial number of the notification (String).
447
- attr_accessor :serial_number
448
-
449
- # The order number in Google's database (String).
450
- attr_accessor :google_order_number
451
-
452
- # The timestamp of the notification
453
- attr_accessor :timestamp
401
+ class AuthorizationAmountNotification < Notification
454
402
 
455
403
  # The amount that is reauthorized to be charged to the customer's credit card (Money)
456
404
  attr_accessor :authorization_amount
@@ -463,14 +411,6 @@ module Google4R #:nodoc:
463
411
 
464
412
  # Credit verification value for the order (String)
465
413
  attr_accessor :cvn_response
466
-
467
- # The Frontend instance for this Notification
468
- attr_accessor :frontend
469
-
470
- # Initializes the AuthorizationAmountNotification instance with the given Frontend instance.
471
- def initialize(frontend)
472
- @frontend = frontend
473
- end
474
414
 
475
415
  # Factory method that creates a new AuthorizationAmountNotification from an REXML::Element instance.
476
416
  # Use this to create instances of AuthorizationAmountNotification.
@@ -501,12 +441,7 @@ module Google4R #:nodoc:
501
441
  # Google Checkout sends out <risk-information-notification> messages for fraud detection
502
442
  # related information. See the Google Checkout documentation for more details:
503
443
  # http://code.google.com/apis/checkout/developer/index.html#risk_information_notification
504
- class RiskInformationNotification
505
- # The serial number of the notification (String).
506
- attr_accessor :serial_number
507
-
508
- # The order number in Google's database (String).
509
- attr_accessor :google_order_number
444
+ class RiskInformationNotification < Notification
510
445
 
511
446
  # Is the order eligible for Google Checkout's payment guarantee policy (boolean).
512
447
  attr_accessor :eligible_for_protection
@@ -527,18 +462,7 @@ module Google4R #:nodoc:
527
462
  attr_accessor :ip_address
528
463
 
529
464
  # The age of the buyer's google checkout account in days
530
- attr_accessor :buyer_account_age
531
-
532
- # The timestamp of the notification
533
- attr_accessor :timestamp
534
-
535
- # The Frontend instance for this Notification
536
- attr_accessor :frontend
537
-
538
- # Initializes the RiskInformationNotification instance with the given Frontend instance.
539
- def initialize(frontend)
540
- @frontend = frontend
541
- end
465
+ attr_accessor :buyer_account_age
542
466
 
543
467
  # Factory method that creates a new RiskInformationNotification from an REXML::Element instance.
544
468
  # Use this to create instances of RiskInformationNotification