amazon-pay-api-sdk-ruby 1.0.0 → 1.1.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: be95e6a94ffd92f2b63c434fae57106167e710b78e37ec2ee769055400498153
4
- data.tar.gz: b37aec741850a99fb89cc241f396da9fe49e0de47f910232101ba32c8c8bafb0
3
+ metadata.gz: ff292f2eaf06b442175de16106fb31f54042337f11af7653609bf436eb34133a
4
+ data.tar.gz: b752565c83f486c960878d54fd204c6f70c543544d5574a5f820c5210e8f857d
5
5
  SHA512:
6
- metadata.gz: 82928d3a73a42da02eb620166c86056402773fd700ff6d0e717d0610ff25ef02f1c84ef9bf4cd4288b70df489d0333b30297cee3b40bfbcdb34e3a3a057816b9
7
- data.tar.gz: 575aa9e43e074704128e085ac94d2dc3063d2dc4add84eebb5ea9d860c051fea17c1fe139b2339ceca0f2028a2ecd1e0cc8fb7fd48bf47d547a12d1f8a8b457e
6
+ metadata.gz: f45eaed130252eb5e06094fefd1cbc16d923a14c5248250118264ab29db0992bfc2c0bd3d4c820f7019aa2bae43241f3cdc0b5f148500724af32cbef454827d8
7
+ data.tar.gz: 8e867a51a1ffacd9eaee7c39c4217d0466dc3b651be3a89e71b0b8f0899696748be58cc6390d5b53a4417ede4368968919b9cc38ce662bcc1cabe8f0c47f873c
data/README.md CHANGED
@@ -135,7 +135,7 @@ createMerchantAccountPayload = {
135
135
  "storeName": "ABC ABC",
136
136
  "privacyPolicyUrl": "http://www.abc.com/privacy",
137
137
  "storeStatus": {
138
- "state": "Active",
138
+ "state": "ACTIVE",
139
139
  "reasonCode": nil
140
140
  }
141
141
  },
@@ -146,11 +146,7 @@ createMerchantAccountPayload = {
146
146
  }
147
147
  }
148
148
 
149
- createMerchantAccountHeader = {
150
- "x-amz-pay-Idempotency-Key": "idempotency-key"
151
- }
152
-
153
- response = client.create_merchant_account(createMerchantAccountPayload, headers: createMerchantAccountHeader)
149
+ response = client.create_merchant_account(createMerchantAccountPayload, headers: {})
154
150
  if response.code.to_i == 201 || response.code.to_i == 200
155
151
  puts "Create Merchant Account API Response:"
156
152
  puts response.body
@@ -183,7 +179,9 @@ updateMerchantAccountPayload = {
183
179
  }
184
180
  }
185
181
 
186
- updateMerchantAccountHeader = {}
182
+ updateMerchantAccountHeader = {
183
+ "x-amz-pay-authToken" : "AUTH_TOKEN"
184
+ }
187
185
 
188
186
  response = client.update_merchant_account('XXXXXXXXX', updateMerchantAccountPayload, headers: updateMerchantAccountHeader)
189
187
  if response.code.to_i == 200
@@ -215,4 +213,401 @@ else
215
213
  puts "Status: #{response.code}"
216
214
  puts response.body
217
215
  end
216
+ ```
217
+
218
+ ### Generate Button Signature
219
+
220
+ ```ruby
221
+ def button_payload = {
222
+ "webCheckoutDetails": {
223
+ "checkoutReviewReturnUrl": "https://a.com/merchant-review-page"
224
+ },
225
+ "storeId": "amzn1.application-oa2-client.xxxxxxxxxxxx",
226
+ "scopes": ["name", "email", "phoneNumber", "billingAddress"],
227
+ "deliverySpecifications": {
228
+ "specialRestrictions": ["RestrictPOBoxes"],
229
+ "addressRestrictions": {
230
+ "type": "Allowed",
231
+ "restrictions": {
232
+ "US": {
233
+ "statesOrRegions": ["WA"],
234
+ "zipCodes": ["95050", "93405"]
235
+ },
236
+ "GB": {
237
+ "zipCodes": ["72046", "72047"]
238
+ },
239
+ "IN": {
240
+ "statesOrRegions": ["AP"]
241
+ },
242
+ "JP": {}
243
+ }
244
+ }
245
+ }
246
+ }
247
+
248
+ response = client.generate_button_signature(button_payload)
249
+ puts "Button Signature:"
250
+ puts response
251
+ ```
252
+
253
+ ### Get Buyer
254
+
255
+ ```ruby
256
+ response = client.get_buyer('BUYER_TOKEN', headers: {})
257
+ if response.code.to_i == 200
258
+ puts "Get Buyer API Response:"
259
+ puts response.body
260
+ else
261
+ puts "Error: Get Buyer API"
262
+ puts "Status: #{response.code}"
263
+ puts response.body
264
+ end
265
+ ```
266
+
267
+ ### Create Checkout Session
268
+
269
+ ```ruby
270
+ require 'securerandom'
271
+
272
+ def createCheckoutSessionPayload = {
273
+ "webCheckoutDetails": {
274
+ "checkoutReviewReturnUrl": "https://a.com/merchant-review-page"
275
+ },
276
+ "storeId": "amzn1.application-oa2-client.xxxxxxxxxxxxx",
277
+ "scopes": ["name", "email", "phoneNumber", "billingAddress"],
278
+ "deliverySpecifications": {
279
+ "specialRestrictions": ["RestrictPOBoxes"],
280
+ "addressRestrictions": {
281
+ "type": "Allowed",
282
+ "restrictions": {
283
+ "US": {
284
+ "statesOrRegions": ["WA"],
285
+ "zipCodes": ["95050", "93405"]
286
+ },
287
+ "GB": {
288
+ "zipCodes": ["72046", "72047"]
289
+ },
290
+ "IN": {
291
+ "statesOrRegions": ["AP"]
292
+ },
293
+ "JP": {}
294
+ }
295
+ }
296
+ }
297
+ }
298
+
299
+ def create_checkout_session_header = {
300
+ "x-amz-pay-Idempotency-Key": SecureRandom.uuid
301
+ }
302
+
303
+ response = client.create_checkout_session(createCheckoutSessionPayload, headers: create_checkout_session_header)
304
+ if response.code.to_i == 201 || response.code.to_i == 200
305
+ puts "Create Checkout Session API Response:"
306
+ puts response.body
307
+ else
308
+ puts "Error: Create Checkout Session API"
309
+ puts "Status: #{response.code}"
310
+ puts response.body
311
+ end
312
+ ```
313
+
314
+ ### Get Checkout Session
315
+
316
+ ```ruby
317
+ response = client.get_checkout_session("checkout_session_id", headers: {})
318
+ if response.code.to_i == 200
319
+ puts "Get Checkout Session API Response:"
320
+ puts response.body
321
+ else
322
+ puts "Error: Get Checkout Session API"
323
+ puts "Status: #{response.code}"
324
+ puts response.body
325
+ end
326
+ ```
327
+
328
+ ### Update Checkout Session
329
+
330
+ ```ruby
331
+ def update_checkout_session_payload = {
332
+ "paymentDetails": {
333
+ "paymentIntent": "AuthorizeWithCapture",
334
+ "canHandlePendingAuthorization":false,
335
+ "softDescriptor": "Descriptor",
336
+ "chargeAmount": {
337
+ "amount": "1",
338
+ "currencyCode": "USD"
339
+ }
340
+ },
341
+ "merchantMetadata": {
342
+ "merchantReferenceId": "Merchant reference ID",
343
+ "merchantStoreName": "Merchant store name",
344
+ "noteToBuyer": "Note to buyer",
345
+ "customInformation": "Custom information"
346
+ }
347
+ }
348
+
349
+ response = client.update_checkout_session("checkout_session_id", update_checkout_session_payload, headers: {})
350
+ if response.code.to_i == 200
351
+ puts "Update Checkout Session API Response:"
352
+ puts response.body
353
+ else
354
+ puts "Error: Update Checkout Session API"
355
+ puts "Status: #{response.code}"
356
+ puts response.body
357
+ end
358
+ ```
359
+
360
+ ### Complete Checkout Session
361
+
362
+ ```ruby
363
+ def complete_checkout_session_payload = {
364
+ "chargeAmount": {
365
+ "amount": "10.00",
366
+ "currencyCode": "USD"
367
+ }
368
+ }
369
+
370
+ response = client.complete_checkout_session("checkout_session_id", complete_checkout_session_payload, headers: {})
371
+ if response.code.to_i == 200
372
+ puts "Complete Checkout Session API Response:"
373
+ puts response.body
374
+ else
375
+ puts "Error: Complete Checkout Session API"
376
+ puts "Status: #{response.code}"
377
+ puts response.body
378
+ end
379
+ ```
380
+
381
+ ### Finalize Checkout Session
382
+
383
+ ```ruby
384
+ def finalize_checkout_session_payload = {
385
+ "shippingAddress": {
386
+ "name": "Susy S",
387
+ "addressLine1": "11 Ditka Ave",
388
+ "addressLine2": "Suite 2500",
389
+ "city": "Chicago",
390
+ "county": nil,
391
+ "district": nil,
392
+ "stateOrRegion": "IL",
393
+ "postalCode": "60602",
394
+ "countryCode": "US",
395
+ "phoneNumber": "800-000-0000"
396
+ },
397
+ "billingAddress": {
398
+ "name": "Susy S",
399
+ "addressLine1": "11 Ditka Ave",
400
+ "addressLine2": "Suite 2500",
401
+ "city": "Chicago",
402
+ "county": null,
403
+ "district": null,
404
+ "stateOrRegion": "IL",
405
+ "postalCode": "60602",
406
+ "countryCode": "US",
407
+ "phoneNumber": "800-000-0000"
408
+ },
409
+ "chargeAmount": {
410
+ "amount": "10",
411
+ "currencyCode": "USD"
412
+ },
413
+ "paymentIntent": "Confirm"
414
+ }
415
+
416
+ response = client.finalize_checkout_session("checkout_session_id", finalize_checkout_session_payload, headers: {})
417
+ if response.code.to_i == 200 || response.code.to_i == 202
418
+ puts "Finalize Checkout Session API Response:"
419
+ puts response.body
420
+ else
421
+ puts "Error: Finalize Checkout Session API"
422
+ puts "Status: #{response.code}"
423
+ puts response.body
424
+ end
425
+ ```
426
+
427
+ ### Get Charge Permission
428
+
429
+ ```ruby
430
+ response = client.get_charge_permission("charge_permission_id", headers: {})
431
+ if response.code.to_i == 200
432
+ puts "Get Charge Permission API Response:"
433
+ puts response.body
434
+ else
435
+ puts "Error: Get Charge Permission API"
436
+ puts "Status: #{response.code}"
437
+ puts response.body
438
+ end
439
+ ```
440
+
441
+ ### Update Charge Permission
442
+
443
+ ```ruby
444
+ def update_charge_permission_payload = {
445
+ "merchantMetadata": {
446
+ "merchantReferenceId": "32-41-323141-32",
447
+ "merchantStoreName": "ShangameshestStoreFront",
448
+ "noteToBuyer": "Some Note to buyer",
449
+ "customInformation": ""
450
+ }
451
+ }
452
+
453
+ response = client.update_charge_permission("charge_permission_id", update_charge_permission_payload, headers: {})
454
+ if response.code.to_i == 200
455
+ puts "Update Charge Permission API Response:"
456
+ puts response.body
457
+ else
458
+ puts "Error: Update Charge Permission API"
459
+ puts "Status: #{response.code}"
460
+ puts response.body
461
+ end
462
+ ```
463
+
464
+ ### Close Charge Permission
465
+
466
+ ```ruby
467
+ def close_charge_permission = {
468
+ "closureReason": "No more charges required for Store",
469
+ "cancelPendingCharges": false
470
+ }
471
+
472
+ response = client.close_charge_permission("charge_permission_id", close_charge_permission, headers: {})
473
+ if response.code.to_i == 200
474
+ puts "Close Charge Permission API Response:"
475
+ puts response.body
476
+ else
477
+ puts "Error: Close Charge Permission API"
478
+ puts "Status: #{response.code}"
479
+ puts response.body
480
+ end
481
+ ```
482
+
483
+ ### Create Charge
484
+
485
+ ```ruby
486
+ require 'securerandom'
487
+
488
+ def create_charge_payload = {
489
+ "chargePermissionId": "S01-XXXXXX-XXXXXX",
490
+ "chargeAmount": {
491
+ "amount": "10.00",
492
+ "currencyCode": "USD"
493
+ },
494
+ "captureNow": true,
495
+ "softDescriptor": "Descriptor",
496
+ "canHandlePendingAuthorization": false
497
+ }
498
+
499
+ def create_charge_header = {
500
+ "x-amz-pay-Idempotency-Key": SecureRandom.uuid
501
+ }
502
+
503
+ response = client.create_charge(create_charge_payload, headers: create_charge_header)
504
+ if response.code.to_i == 201 || response.code.to_i == 200
505
+ puts "Create Charge Response:"
506
+ puts response.body
507
+ else
508
+ puts "Error: Create Charge API"
509
+ puts "Status: #{response.code}"
510
+ puts response.body
511
+ end
512
+ ```
513
+
514
+ ### Get Charge
515
+
516
+ ```ruby
517
+ response = client.get_charge('S01-XXXXXX-XXXXXX-XXXXXX', headers: {})
518
+ if response.code.to_i == 200
519
+ puts "Get Charge Response:"
520
+ puts response.body
521
+ else
522
+ puts "Error: Get Charge API"
523
+ puts "Status: #{response.code}"
524
+ puts response.body
525
+ end
526
+ ```
527
+
528
+ ### Capture Charge
529
+
530
+ ```ruby
531
+ require 'securerandom'
532
+
533
+ def capture_charge_payload = {
534
+ "captureAmount": {
535
+ "amount": "1.00",
536
+ "currencyCode": "USD"
537
+ },
538
+ "softDescriptor": "Descriptor"
539
+ }
540
+
541
+ def capture_charge_header = {
542
+ "x-amz-pay-Idempotency-Key": SecureRandom.uuid
543
+ }
544
+
545
+ response = client.capture_charge('S01-XXXXXX-XXXXXX-XXXXXX', capture_charge_payload, headers: capture_charge_header)
546
+ if response.code.to_i == 200
547
+ puts "Capture Charge Response:"
548
+ puts response.body
549
+ else
550
+ puts "Error: Capture Charge API"
551
+ puts "Status: #{response.code}"
552
+ puts response.body
553
+ end
554
+ ```
555
+
556
+ ### Cancel Charge
557
+
558
+ ```ruby
559
+ def cancel_charge_payload = {
560
+ "cancellationReason": "Charge Cancellation Reason"
561
+ }
562
+
563
+ response = client.cancel_charge('S01-XXXXXX-XXXXXX-XXXXXX', cancel_charge_payload, headers: {})
564
+ if response.code.to_i == 200
565
+ puts "Cancel Charge Response:"
566
+ puts response.body
567
+ else
568
+ puts "Error: Cancel Charge API"
569
+ puts "Status: #{response.code}"
570
+ puts response.body
571
+ end
572
+ ```
573
+
574
+ ### Create Refund
575
+
576
+ ```ruby
577
+ def create_refund_payload = {
578
+ "chargeId": "S01-XXXXXX-XXXXXX-XXXXXX",
579
+ "refundAmount": {
580
+ "amount": "1.00",
581
+ "currencyCode": "USD"
582
+ },
583
+ "softDescriptor": "Descriptor"
584
+ }
585
+
586
+ def create_refund_header = {
587
+ "x-amz-pay-Idempotency-Key": SecureRandom.uuid
588
+ }
589
+
590
+ response = client.create_refund(create_refund_payload, headers: create_refund_header)
591
+ if response.code.to_i == 201 || response.code.to_i == 200
592
+ puts "Create Refund Response:"
593
+ puts response.body
594
+ else
595
+ puts "Error: Create Refund API"
596
+ puts "Status: #{response.code}"
597
+ puts response.body
598
+ end
599
+ ```
600
+
601
+ ### Get Refund
602
+
603
+ ```ruby
604
+ response = client.get_refund('S01-XXXXXX-XXXXXX-XXXXXX', headers: {})
605
+ if response.code.to_i == 200
606
+ puts "Get Refund Response:"
607
+ puts response.body
608
+ else
609
+ puts "Error: Get Refund API"
610
+ puts "Status: #{response.code}"
611
+ puts response.body
612
+ end
218
613
  ```
@@ -99,4 +99,171 @@ class AmazonPayClient
99
99
  def merchant_account_claim(merchant_account_id, payload, headers: {})
100
100
  api_call("#{Constants::MERCHANT_ACCOUNTS_BASE_URL}/#{merchant_account_id}/claim", Constants::POST, payload: payload, headers: headers)
101
101
  end
102
+
103
+ # Generates a signature for the given payload
104
+ # This method is used to generate a signature for an Amazon Pay button payload.
105
+ # The payload can be provided as either a String or a Hash. If a Hash is provided, it is converted to a JSON string before signing.
106
+ # @param {Object|String} payload - The payload to be signed, which can be a JSON string or a Hash.
107
+ # @return {String} The signature for the provided payload.
108
+ def generate_button_signature(payload)
109
+ @helper.sign(payload.is_a?(String) ? payload : JSON.generate(payload))
110
+ end
111
+
112
+ # API to retrieve Buyer information
113
+ # Fetches details of a Buyer using the buyer token provided.
114
+ # @see https://developer.amazon.com/docs/amazon-pay-api-v2/buyer.html#get-buyer
115
+ # @param {String} buyer_token - The unique token associated with the Buyer.
116
+ # @param {Object} headers - Optional headers for the request, such as authorization tokens or custom headers.
117
+ # @return [HTTPResponse] The response from the API call, which includes the details of the Buyer, such as name, email, and address.
118
+ def get_buyer(buyer_token, headers: {})
119
+ api_call("#{Constants::BUYERS_URL}/#{buyer_token}", Constants::GET, headers: headers)
120
+ end
121
+
122
+ # API to create a CheckoutSession object
123
+ # Creates a new CheckoutSession object.
124
+ # @see https://developer.amazon.com/docs/amazon-pay-api-v2/checkout-session.html#create-checkout-session
125
+ # @param {Object} payload - The payload for the request. This should include all the required fields such as chargeAmount, currencyCode, etc.
126
+ # @param {Object} headers - Optional headers for the request, such as authorization tokens or custom headers.
127
+ # @return [HTTPResponse] The response from the API call, which includes the details of the newly created CheckoutSession.
128
+ def create_checkout_session(payload, headers: {})
129
+ api_call(Constants::CHECKOUT_SESSION_URL, Constants::POST, payload: payload, headers: headers)
130
+ end
131
+
132
+ # API to get a CheckoutSession object
133
+ # Retrieves details of a previously created CheckoutSession object.
134
+ # @see https://developer.amazon.com/docs/amazon-pay-api-v2/checkout-session.html#get-checkout-session
135
+ # @param {String} checkout_session_id - The unique identifier for the CheckoutSession.
136
+ # @param {Object} headers - Optional headers for the request.
137
+ # @return [HTTPResponse] The response from the API call, which includes the details of the CheckoutSession object.{Object} [headers=null] - The headers for the request
138
+ def get_checkout_session(checkout_session_id, headers: {})
139
+ api_call("#{Constants::CHECKOUT_SESSION_URL}/#{checkout_session_id}", Constants::GET, headers: headers)
140
+ end
141
+
142
+ # API to update a CheckoutSession object
143
+ # Updates a previously created CheckoutSession object with new information.
144
+ # @see https://developer.amazon.com/docs/amazon-pay-api-v2/checkout-session.html#update-checkout-session
145
+ # @param {String} checkout_session_id - The unique identifier for the CheckoutSession.
146
+ # @param {Object} payload - The payload for the request. This should include the fields that need to be updated.
147
+ # @param {Object} headers - Optional headers for the request.
148
+ # @return [HTTPResponse] The response from the API call, which includes the updated details of the CheckoutSession.
149
+ def update_checkout_session(checkout_session_id, payload, headers: {})
150
+ api_call("#{Constants::CHECKOUT_SESSION_URL}/#{checkout_session_id}", Constants::PATCH, payload: payload, headers: headers)
151
+ end
152
+
153
+ # API to complete a Checkout Session
154
+ # Confirms the completion of buyer checkout.
155
+ # @see https://developer.amazon.com/docs/amazon-pay-api-v2/checkout-session.html#complete-checkout-session
156
+ # @param {String} checkout_session_id - The unique identifier for the CheckoutSession.
157
+ # @param {Object} payload - The payload for the request, typically including fields like chargeAmount, currencyCode, etc.
158
+ # @param {Object} headers - Optional headers for the request.
159
+ # @return [HTTPResponse] The response from the API call, which confirms the completion of the checkout process.
160
+ def complete_checkout_session(checkout_session_id, payload, headers: {})
161
+ api_call("#{Constants::CHECKOUT_SESSION_URL}/#{checkout_session_id}/complete", Constants::POST, payload: payload, headers: headers)
162
+ end
163
+
164
+ # API to finalize a Checkout Session
165
+ # Finalizes the checkout process by confirming the payment and completing the session.
166
+ # @see https://developer.amazon.com/docs/amazon-pay-api-v2/checkout-session.html#finalize-checkout-session
167
+ # @param {String} checkout_session_id - The unique ID of the checkout session that needs to be finalized.
168
+ # @param {Object} payload - The payload for the request, typically including payment confirmation details.
169
+ # @param {Object} headers - Optional headers for the request, such as authorization tokens or custom headers.
170
+ # @return [HTTPResponse] The response from the API call, indicating the success or failure of the checkout finalization.
171
+ def finalize_checkout_session(checkout_session_id, payload, headers: {})
172
+ api_call("#{Constants::CHECKOUT_SESSION_URL}/#{checkout_session_id}/finalize", Constants::POST, payload: payload, headers: headers)
173
+ end
174
+
175
+ # API to retrieve a Charge Permission object
176
+ # Fetches details of a Charge Permission, which is associated with a Checkout Session.
177
+ # @see https://developer.amazon.com/docs/amazon-pay-api-v2/charge-permission.html#get-charge-permission
178
+ # @param {String} charge_permission_id - The unique identifier for the Charge Permission.
179
+ # @param {Object} headers - Optional headers for the request.
180
+ # @return [HTTPResponse] The response from the API call, including the details of the Charge Permission.
181
+ def get_charge_permission(charge_permission_id, headers: {})
182
+ api_call("#{Constants::CHARGE_PERMISSIONS_URL}/#{charge_permission_id}", Constants::GET, headers: headers)
183
+ end
184
+
185
+ # API to update a Charge Permission object
186
+ # Updates a previously created Charge Permission with new information.
187
+ # @see https://developer.amazon.com/docs/amazon-pay-api-v2/charge-permission.html#update-charge-permission
188
+ # @param {String} charge_permission_id - The unique identifier for the Charge Permission.
189
+ # @param {Object} payload - The payload for the request. This should include the fields that need to be updated.
190
+ # @param {Object} headers - Optional headers for the request.
191
+ # @return [HTTPResponse] The response from the API call, including the updated details of the Charge Permission.
192
+ def update_charge_permission(charge_permission_id, payload, headers: {})
193
+ api_call("#{Constants::CHARGE_PERMISSIONS_URL}/#{charge_permission_id}", Constants::PATCH, payload: payload, headers: headers)
194
+ end
195
+
196
+ # API to close a Charge Permission object
197
+ # Closes a Charge Permission, preventing further charges.
198
+ # @see https://developer.amazon.com/docs/amazon-pay-api-v2/charge-permission.html#close-charge-permission
199
+ # @param {String} charge_permission_id - The unique identifier for the Charge Permission.
200
+ # @param {Object} payload - The payload for the request, typically including a reason for closure.
201
+ # @param {Object} headers - Optional headers for the request.
202
+ # @return [HTTPResponse] The response from the API call, confirming the closure of the Charge Permission.
203
+ def close_charge_permission(charge_permission_id, payload, headers: {})
204
+ api_call("#{Constants::CHARGE_PERMISSIONS_URL}/#{charge_permission_id}/close", Constants::DELETE, payload: payload, headers: headers)
205
+ end
206
+
207
+ # API to create a new charge
208
+ # Initiates a new charge with the provided payment details.
209
+ # @see https://developer.amazon.com/docs/amazon-pay-api-v2/charge.html#create-charge
210
+ # @param {Object} payload - The payload containing payment details, such as the amount and currency.
211
+ # @param {Object} headers - Optional headers for the request, such as authorization tokens or custom headers.
212
+ # @return [HTTPResponse] The response from the API call, which includes details of the created charge.
213
+ def create_charge(payload, headers: {})
214
+ api_call(Constants::CHARGES_URL, Constants::POST, payload: payload, headers: headers)
215
+ end
216
+
217
+ # API to retrieve charge details
218
+ # Retrieves details of an existing charge using its unique charge ID.
219
+ # @see https://developer.amazon.com/docs/amazon-pay-api-v2/charge.html#get-charge
220
+ # @param {String} charge_id - The unique ID of the charge to retrieve.
221
+ # @param {Object} headers - Optional headers for the request, such as authorization tokens or custom headers.
222
+ # @return [HTTPResponse] The response from the API call, which includes details of the requested charge.
223
+ def get_charge(charge_id, headers: {})
224
+ api_call("#{Constants::CHARGES_URL}/#{charge_id}", Constants::GET, headers: headers)
225
+ end
226
+
227
+ # API to capture a charge
228
+ # Captures an authorized charge to collect the funds.
229
+ # @see https://developer.amazon.com/docs/amazon-pay-api-v2/charge.html#capture-charge
230
+ # @param {String} charge_id - The unique ID of the charge to capture.
231
+ # @param {Object} payload - The payload containing capture details, such as the amount to capture.
232
+ # @param {Object} headers - Optional headers for the request, such as authorization tokens or custom headers.
233
+ # @return [HTTPResponse] The response from the API call, which includes details of the captured charge.
234
+ def capture_charge(charge_id, payload, headers: {})
235
+ api_call("#{Constants::CHARGES_URL}/#{charge_id}/capture", Constants::POST, payload: payload, headers: headers)
236
+ end
237
+
238
+ # API to cancel a charge
239
+ # Cancels an existing charge, preventing it from being captured.
240
+ # @see https://developer.amazon.com/docs/amazon-pay-api-v2/charge.html#cancel-charge
241
+ # @param {String} charge_id - The unique ID of the charge to cancel.
242
+ # @param {Object} payload - The payload containing cancellation details.
243
+ # @param {Object} headers - Optional headers for the request, such as authorization tokens or custom headers.
244
+ # @return [HTTPResponse] The response from the API call, which confirms the cancellation of the charge.
245
+ def cancel_charge(charge_id, payload, headers: {})
246
+ api_call("#{Constants::CHARGES_URL}/#{charge_id}/cancel", Constants::DELETE, payload: payload, headers: headers)
247
+ end
248
+
249
+ # API to create a refund
250
+ # Initiates a new refund for a previously captured charge.
251
+ # @see https://developer.amazon.com/docs/amazon-pay-api-v2/refund.html#create-refund
252
+ # @param {Object} payload - The payload containing refund details, such as the amount and currency.
253
+ # @param {Object} headers - Optional headers for the request, such as authorization tokens or custom headers.
254
+ # @return [HTTPResponse] The response from the API call, which includes details of the created refund.
255
+ def create_refund(payload, headers: {})
256
+ api_call(Constants::REFUNDS_URL, Constants::POST, payload: payload, headers: headers)
257
+ end
258
+
259
+ # API to retrieve refund details
260
+ # Retrieves details of an existing refund using its unique refund ID.
261
+ # @see https://developer.amazon.com/docs/amazon-pay-api-v2/refund.html#get-refund
262
+ # @param {String} refund_id - The unique ID of the refund to retrieve.
263
+ # @param {Object} headers - Optional headers for the request, such as authorization tokens or custom headers.
264
+ # @return [HTTPResponse] The response from the API call, which includes details of the requested refund.
265
+ def get_refund(refund_id, headers: {})
266
+ api_call("#{Constants::REFUNDS_URL}/#{refund_id}", Constants::GET, headers: headers)
267
+ end
268
+
102
269
  end
@@ -1,8 +1,8 @@
1
1
  require 'net/http'
2
2
 
3
3
  module Constants
4
- SDK_TYPE = "MerchantOnboarding-Ruby".freeze
5
- SDK_VERSION = "1.0.0".freeze
4
+ SDK_TYPE = "amazon-pay-api-sdk-ruby".freeze
5
+ SDK_VERSION = "1.1.0".freeze
6
6
  API_VERSION = "v2".freeze
7
7
  API_ENDPOINTS = {
8
8
  'na' => 'pay-api.amazon.com',
@@ -32,11 +32,18 @@ module Constants
32
32
  LIVE = 'LIVE-'
33
33
  SANDBOX = 'SANDBOX-'
34
34
  MERCHANT_ACCOUNTS_BASE_URL = 'merchantAccounts'.freeze
35
+ GET = 'GET'.freeze
35
36
  POST = 'POST'.freeze
36
37
  PATCH = 'PATCH'.freeze
38
+ DELETE = 'DELETE'.freeze
37
39
  MAX_RETRIES = 3.freeze
38
40
  BACKOFF_TIMES = [1, 2, 4].freeze # Define backoff times for retries
39
41
  RETRYABLE_ERROR_CODES = [408, 429, 500, 502, 503, 504].freeze
40
42
  HTTP_OK = '200'
41
43
  HTTP_SERVER_ERROR = '500'
44
+ BUYERS_URL = 'buyers'.freeze
45
+ CHECKOUT_SESSION_URL = 'checkoutSessions'.freeze
46
+ CHARGE_PERMISSIONS_URL = 'chargePermissions'.freeze
47
+ CHARGES_URL = 'charges'.freeze
48
+ REFUNDS_URL = 'refunds'.freeze
42
49
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: amazon-pay-api-sdk-ruby
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.0
4
+ version: 1.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - AmazonPay
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2024-08-05 00:00:00.000000000 Z
11
+ date: 2024-08-19 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: base64
@@ -70,7 +70,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
70
70
  - !ruby/object:Gem::Version
71
71
  version: '0'
72
72
  requirements: []
73
- rubygems_version: 3.4.10
73
+ rubygems_version: 3.5.4
74
74
  signing_key:
75
75
  specification_version: 4
76
76
  summary: This is an AmazonPay Ruby SDK