airwallex 0.1.0 → 0.2.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 7517d087f8337d63e00476a7be3e551164e97bd271c510ac37621db595a4c86f
4
- data.tar.gz: 7b5a90c9a5a9ca677f48ce63d9a1bb50a9cedd030a2f13ae39c658b2fe8d63e9
3
+ metadata.gz: 24329b3008cb6844904a266d7cfed62b05bb0743935edd22a7ea1e3c1a98606e
4
+ data.tar.gz: 73d9c743bfa6da7e652da8663b98965985aefcbe575d373f322a7023232278f3
5
5
  SHA512:
6
- metadata.gz: 9a6344fa43f9f38ae9950cf8c84a0770361f5448bcb365d6e44d20068986f831e23d628c41f07402d94d3c0bb71306095fd2fd46eca867a61abfb79f18b57fd9
7
- data.tar.gz: '08d8be5e80b739ce7278af4f894744fa708d9aa755fda96b415a881c24218692c4336602b1c59c765d9ea0dd3a705f3cdc6e0b42108979d6ad6ce097f5b46e83'
6
+ metadata.gz: caae41e87cb5071ed6d8fdba00d873c6d90a6eabf20406a33e6261f960d8b65cf4355a71df4cac01c60ea5cb74705e9491843f74c1458559c8e24c1d5bebb044
7
+ data.tar.gz: 0b0924430871eb4065f78b75e2e1a6cad937089ebfec9801dbebcb8d5b7aa6e3ae49bbd882f8adb8406d0c3a17fd7a81956495dd9e194ea9349c41109b1faf2e
data/CHANGELOG.md CHANGED
@@ -1,5 +1,14 @@
1
1
  ## [Unreleased]
2
2
 
3
+ ## [0.2.0] - 2025-11-25
4
+
5
+ ### Added
6
+ - Refund resource (create, retrieve, list)
7
+ - PaymentMethod resource (create, retrieve, list, update, delete, detach)
8
+ - Customer resource (create, retrieve, list, update, delete)
9
+ - Customer#payment_methods convenience method
10
+ - 28 new tests (215 total)
11
+
3
12
  ## [0.1.0] - 2025-11-25
4
13
 
5
14
  ### Added
data/README.md CHANGED
@@ -102,6 +102,58 @@ transfer = Airwallex::Transfer.create(
102
102
  )
103
103
  ```
104
104
 
105
+ ### Processing Refunds
106
+
107
+ ```ruby
108
+ # Create a full refund
109
+ refund = Airwallex::Refund.create(
110
+ payment_intent_id: payment_intent.id,
111
+ amount: 100.00,
112
+ reason: 'requested_by_customer'
113
+ )
114
+
115
+ # Create a partial refund
116
+ partial_refund = Airwallex::Refund.create(
117
+ payment_intent_id: payment_intent.id,
118
+ amount: 50.00
119
+ )
120
+
121
+ # List all refunds for a payment
122
+ refunds = Airwallex::Refund.list(payment_intent_id: payment_intent.id)
123
+ ```
124
+
125
+ ### Managing Payment Methods
126
+
127
+ ```ruby
128
+ # Create a customer
129
+ customer = Airwallex::Customer.create(
130
+ email: 'customer@example.com',
131
+ first_name: 'John',
132
+ last_name: 'Doe'
133
+ )
134
+
135
+ # Save a payment method
136
+ payment_method = Airwallex::PaymentMethod.create(
137
+ type: 'card',
138
+ card: {
139
+ number: '4242424242424242',
140
+ expiry_month: '12',
141
+ expiry_year: '2025',
142
+ cvc: '123'
143
+ },
144
+ billing: {
145
+ first_name: 'John',
146
+ email: 'customer@example.com'
147
+ }
148
+ )
149
+
150
+ # Use saved payment method
151
+ payment_intent.confirm(payment_method_id: payment_method.id)
152
+
153
+ # List customer's payment methods
154
+ methods = customer.payment_methods
155
+ ```
156
+
105
157
  ## Usage
106
158
 
107
159
  ### Authentication
@@ -263,22 +315,27 @@ Airwallex.configure do |config|
263
315
  end
264
316
  ```
265
317
 
266
- ## API Coverage (v0.1.0)
318
+ ## API Coverage
267
319
 
268
320
  ### Currently Implemented Resources
269
321
 
270
- - **Payment Acceptance**: PaymentIntent (create, retrieve, list, update, confirm, cancel, capture)
271
- - **Payouts**: Transfer (create, retrieve, list, cancel), Beneficiary (create, retrieve, list, delete)
322
+ - **Payment Acceptance**:
323
+ - PaymentIntent (create, retrieve, list, update, confirm, cancel, capture)
324
+ - Refund (create, retrieve, list)
325
+ - PaymentMethod (create, retrieve, list, update, delete, detach)
326
+ - Customer (create, retrieve, list, update, delete)
327
+ - **Payouts**:
328
+ - Transfer (create, retrieve, list, cancel)
329
+ - Beneficiary (create, retrieve, list, delete)
272
330
  - **Webhooks**: Event handling, HMAC-SHA256 signature verification
273
331
 
274
332
  ### Coming in Future Versions
275
333
 
276
- - Refunds and disputes
334
+ - Disputes and chargebacks
277
335
  - Foreign exchange (rates, quotes, conversions)
278
- - Payment methods management
279
336
  - Global accounts
280
337
  - Card issuing
281
- - Additional payout methods
338
+ - Batch transfers
282
339
 
283
340
  ## Environment Support
284
341
 
@@ -0,0 +1,162 @@
1
+ # v0.1.0 Publication Checklist
2
+
3
+ **Status:** ✅ READY FOR PUBLICATION
4
+ **Date:** November 25, 2025
5
+
6
+ ## Pre-Publication Verification
7
+
8
+ ### Code Quality ✅
9
+ - [x] All 187 tests passing
10
+ - [x] 0 RSpec failures
11
+ - [x] 0 Rubocop offenses
12
+ - [x] Test coverage: 100% of implemented features
13
+ - [x] No security vulnerabilities
14
+
15
+ ### Gem Build ✅
16
+ - [x] Gem builds successfully: `airwallex-0.1.0.gem`
17
+ - [x] All required files included
18
+ - [x] No build errors (only metadata warnings)
19
+ - [x] Gemspec metadata complete
20
+
21
+ ### Documentation ✅
22
+ - [x] README updated to reflect actual v0.1.0 implementation
23
+ - [x] CHANGELOG.md updated with detailed release notes
24
+ - [x] No over-promising of unimplemented features
25
+ - [x] Clear MVP messaging
26
+ - [x] Usage examples accurate
27
+
28
+ ### Implementation ✅
29
+ - [x] Core infrastructure complete
30
+ - [x] 3 resources implemented (PaymentIntent, Transfer, Beneficiary)
31
+ - [x] Authentication with auto-refresh
32
+ - [x] Pagination support
33
+ - [x] Webhook verification
34
+ - [x] Error handling
35
+ - [x] Idempotency support
36
+
37
+ ## What's Included in v0.1.0
38
+
39
+ ### Core Infrastructure
40
+ - Configuration management (sandbox/production)
41
+ - HTTP client with Faraday
42
+ - Bearer token authentication with automatic refresh
43
+ - Thread-safe token management
44
+ - 10 exception classes with proper hierarchy
45
+ - Utility helpers (dates, money, UUIDs)
46
+
47
+ ### Resources
48
+ 1. **PaymentIntent**
49
+ - create, retrieve, list, update
50
+ - confirm, cancel, capture
51
+
52
+ 2. **Transfer**
53
+ - create, retrieve, list
54
+ - cancel
55
+
56
+ 3. **Beneficiary**
57
+ - create, retrieve, list, delete
58
+
59
+ ### API Operations
60
+ - Create mixin
61
+ - Retrieve mixin
62
+ - List mixin (with pagination)
63
+ - Update mixin (with dirty tracking)
64
+ - Delete mixin
65
+
66
+ ### Additional Features
67
+ - ListObject with Enumerable interface
68
+ - Cursor-based and offset-based pagination
69
+ - Auto-paging iteration
70
+ - HMAC-SHA256 webhook verification
71
+ - Automatic idempotency key injection
72
+ - Multi-environment support
73
+
74
+ ## What's NOT Included (Future Versions)
75
+
76
+ - Refunds and disputes
77
+ - Foreign exchange (rates, quotes, conversions)
78
+ - Payment methods management
79
+ - Global accounts
80
+ - Card issuing
81
+ - Batch operations
82
+ - Advanced retry logic
83
+ - OAuth support
84
+ - Connected accounts
85
+
86
+ ## Publication Steps
87
+
88
+ ### 1. Final Git Commit
89
+ ```bash
90
+ git add -A
91
+ git commit -m "Release v0.1.0 - MVP with payment acceptance and payouts"
92
+ git tag -a v0.1.0 -m "Version 0.1.0"
93
+ ```
94
+
95
+ ### 2. Push to GitHub
96
+ ```bash
97
+ git push origin sprint1
98
+ git push origin v0.1.0
99
+ ```
100
+
101
+ ### 3. Publish to RubyGems
102
+ ```bash
103
+ gem build airwallex.gemspec
104
+ gem push airwallex-0.1.0.gem
105
+ ```
106
+
107
+ ### 4. Post-Publication
108
+ - Create GitHub release with changelog
109
+ - Monitor for initial feedback
110
+ - Prepare Sprint 3 roadmap
111
+
112
+ ## Risk Assessment
113
+
114
+ ### Low Risk ✅
115
+ - Clean test suite (no flaky tests)
116
+ - No external dependencies on proprietary code
117
+ - MIT license (clear and permissive)
118
+ - Conservative API surface (easy to extend)
119
+
120
+ ### Mitigated Risks ✅
121
+ - Over-promising: README now accurately reflects v0.1.0
122
+ - Breaking changes: Clear MVP messaging sets expectations
123
+ - Support burden: Limited scope reduces support surface
124
+
125
+ ## Post-Release Monitoring
126
+
127
+ ### Week 1
128
+ - Monitor RubyGems download stats
129
+ - Watch for GitHub issues
130
+ - Respond to early adopter feedback
131
+
132
+ ### Week 2-4
133
+ - Gather feature requests
134
+ - Plan Sprint 3 priorities
135
+ - Document common usage patterns
136
+
137
+ ## Success Metrics
138
+
139
+ ### Technical
140
+ - Gem installs without errors
141
+ - No critical bugs reported
142
+ - Test suite remains green
143
+
144
+ ### Adoption
145
+ - RubyGems downloads > 10 in first week
146
+ - At least 1 star on GitHub
147
+ - No blocking issues reported
148
+
149
+ ## Next Version Roadmap (v0.2.0)
150
+
151
+ Potential features based on priority:
152
+ 1. Refunds resource
153
+ 2. PaymentMethod resource
154
+ 3. Enhanced error handling with retry logic
155
+ 4. More comprehensive documentation
156
+ 5. Foreign exchange resources
157
+
158
+ ---
159
+
160
+ **Approval:** ✅ Ready for publication
161
+ **Reviewer:** Development team
162
+ **Final Check:** All systems green
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Airwallex
4
- VERSION = "0.1.0"
4
+ VERSION = "0.2.0"
5
5
  end
data/lib/airwallex.rb CHANGED
@@ -24,6 +24,9 @@ require_relative "airwallex/api_resource"
24
24
  require_relative "airwallex/resources/payment_intent"
25
25
  require_relative "airwallex/resources/transfer"
26
26
  require_relative "airwallex/resources/beneficiary"
27
+ require_relative "airwallex/resources/refund"
28
+ require_relative "airwallex/resources/payment_method"
29
+ require_relative "airwallex/resources/customer"
27
30
 
28
31
  module Airwallex
29
32
  class << self
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: airwallex
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Chayut Orapinpatipat
@@ -73,6 +73,7 @@ files:
73
73
  - docs/internal/20251125_sprint_2_completed.md
74
74
  - docs/internal/20251125_sprint_2_plan.md
75
75
  - docs/internal/20251125_sprint_2_unit_tests_completed.md
76
+ - docs/internal/20251125_v0.1.0_publication_checklist.md
76
77
  - docs/research/Airwallex API Endpoint Research.md
77
78
  - docs/research/Airwallex API Research for Ruby Gem.md
78
79
  - lib/airwallex.rb
@@ -95,12 +96,12 @@ files:
95
96
  - lib/airwallex/version.rb
96
97
  - lib/airwallex/webhook.rb
97
98
  - sig/airwallex.rbs
98
- homepage: https://github.com/Sentia/airwallex
99
+ homepage: https://www.sentia.com.au
99
100
  licenses:
100
101
  - MIT
101
102
  metadata:
102
103
  allowed_push_host: https://rubygems.org
103
- homepage_uri: https://github.com/Sentia/airwallex
104
+ homepage_uri: https://www.sentia.com.au
104
105
  source_code_uri: https://github.com/Sentia/airwallex
105
106
  changelog_uri: https://github.com/Sentia/airwallex/blob/main/CHANGELOG.md
106
107
  documentation_uri: https://rubydoc.info/gems/airwallex