tappay_ruby 0.15.7 → 0.16.1

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: a329206f8149dcee28160ef08fe91ff68105eb34a75a3d1c8472ed7f4cdc6a3e
4
- data.tar.gz: 130d3c8f4733f126fc8ca6f548757583c0727a20b9c868a24d64bba1190202fb
3
+ metadata.gz: 15c44ff4750b4c720db7deb88827b0472dd40ee4c98ca1651bd4b54b25d31566
4
+ data.tar.gz: 199a823aa6332a3d12769bdf9b0ef32d938aba6594f3365d1d8a3212d3475837
5
5
  SHA512:
6
- metadata.gz: 6a4a743872849f9d5963bc9a617a594677c47423bff870522f5a6dff650572bfc21cc7464c3ad8a39f3856a24fb04ab9650e2d320771e753f5ddf3f0c70dc14f
7
- data.tar.gz: 8abbe504384923079ac7d813e409314e746e0b21ae72cb50f008fee2b0c69ba269791654ed569e8584e24a8af5b0657e244bf3332b59a41cd1f51b2c91d6e470
6
+ metadata.gz: 3c8730263b0071ebdcee35dc634eb5abd7f863a37ff4c2132511579ae0988496d22236a3467215365157fea82fac33aca99fc4825606020787b4591b4463a33d
7
+ data.tar.gz: '095757caf7c639691c14269e86bb246a01f90083cf1115a725381061da3a7daf23021c3861c6d1ca4e189e2b5ea48f52592013d3daa6a2628e2bfd5e075b001e'
data/README.md CHANGED
@@ -186,6 +186,36 @@ payment = Tappay::JkoPay::Pay.new(payment_options)
186
186
  result = payment.execute
187
187
  ```
188
188
 
189
+ ### Transaction Query
190
+
191
+ Query transaction records with required time range:
192
+
193
+ ```ruby
194
+ # Query transactions within a specific time range
195
+ result = Tappay::Transaction::Query.new(
196
+ time: {
197
+ start_time: 1706198400, # Unix timestamp for start time
198
+ end_time: 1706284800 # Unix timestamp for end time
199
+ },
200
+ order_number: 'ORDER123', # Optional: filter by order number
201
+ records_per_page: 50, # Optional: default is 50
202
+ page: 0, # Optional: default is 0
203
+ order_by: { # Optional: sort results
204
+ attribute: 'time',
205
+ is_descending: true
206
+ }
207
+ ).execute
208
+
209
+ # Access the results
210
+ result[:trade_records].each do |record|
211
+ puts "Transaction ID: #{record[:rec_trade_id]}"
212
+ puts "Amount: #{record[:amount]}"
213
+ puts "Status: #{record[:record_status]}"
214
+ end
215
+ ```
216
+
217
+ Note: The `time` parameter with both `start_time` and `end_time` is required for querying transactions.
218
+
189
219
  ### Error Handling
190
220
 
191
221
  The gem provides comprehensive error handling:
data/lib/tappay/client.rb CHANGED
@@ -42,7 +42,9 @@ module Tappay
42
42
  case @response.code
43
43
  when 200
44
44
  data = parse_response
45
- unless data['status'].zero?
45
+ status = data['status']
46
+ # For transaction queries, status 2 means no records found, which is a valid response
47
+ unless status.zero? || (status == 2 && @response.request.uri.path.include?('/tpc/transaction/query'))
46
48
  raise APIError.new(data['status'], data['msg'])
47
49
  end
48
50
  when 400
@@ -3,11 +3,11 @@
3
3
  module Tappay
4
4
  module Transaction
5
5
  class Query
6
- def initialize(order_number:, records_per_page: 50, page: 0, time: nil, order_by: nil)
6
+ def initialize(time:, order_number: nil, records_per_page: 50, page: 0, order_by: nil)
7
+ @time = validate_time!(time)
7
8
  @order_number = order_number
8
9
  @records_per_page = records_per_page
9
10
  @page = page
10
- @time = time
11
11
  @order_by = order_by
12
12
  end
13
13
 
@@ -45,6 +45,22 @@ module Tappay
45
45
  }.compact
46
46
  end
47
47
 
48
+ def validate_time!(time)
49
+ unless time.is_a?(Hash) && time[:start_time] && time[:end_time]
50
+ raise Tappay::ValidationError, "time parameter must include start_time and end_time"
51
+ end
52
+
53
+ unless time[:start_time].is_a?(Integer) && time[:end_time].is_a?(Integer)
54
+ raise Tappay::ValidationError, "start_time and end_time must be Unix timestamps (integers)"
55
+ end
56
+
57
+ if time[:start_time] > time[:end_time]
58
+ raise Tappay::ValidationError, "start_time cannot be later than end_time"
59
+ end
60
+
61
+ time
62
+ end
63
+
48
64
  def parse_trade_records(records)
49
65
  return [] unless records&.any?
50
66
 
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Tappay
4
- VERSION = "0.15.7"
4
+ VERSION = "0.16.1"
5
5
  end
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: tappay_ruby
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.15.7
4
+ version: 0.16.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Zac
8
8
  bindir: exe
9
9
  cert_chain: []
10
- date: 2025-01-25 00:00:00.000000000 Z
10
+ date: 2025-01-26 00:00:00.000000000 Z
11
11
  dependencies:
12
12
  - !ruby/object:Gem::Dependency
13
13
  name: httparty