paymentrails 0.2.5 → 0.2.9

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: d8e68d127632642e2a6f5e589f9917f2097973f38d2359d4f4a30dadff376adb
4
- data.tar.gz: 0ad8869d5c77c0934a8e6a13a2d65a100aeaef98d6a50fb1dee8331b0a6e34e8
3
+ metadata.gz: 57b1a2026b6e8965b49501ac1742aece5914a1ed4b28c2dc10a1919df9f77523
4
+ data.tar.gz: '04910c8e5f5555c43e3af1866e6ca9365eed0dc5ba9184dd0ac6209466a8a6a2'
5
5
  SHA512:
6
- metadata.gz: f7084cb8f263e09821cd799238f05a0d8c21a6032b865cf437dbe52fc31b9672474713c484718023f698e9f456040e0d7b0598ff9d58c74eb9dacb7aff394029
7
- data.tar.gz: 68ea9490dd727eebf0b70d19af963d2c21ed736f957741a620b83de22de3607f16bb00a16f189ccb50c4210070830ee057e7112fb07956ca45eeb3bc085f6c89
6
+ metadata.gz: c36e9ea9b5a1ecb4e8e2aeeaa0795267349a310b502c63cb5fd3acd7eb62ac67fa776520244fe15a6f3327c600126f7e22becd15b03e7267aae24a58057cc87c
7
+ data.tar.gz: 41b91895e01d72f475f503b62ae834d7c979749dd1ccc53825fab01bd2d186324e0090a096673faaf488bc8a17b2c221ec8a745bba3d9e40d663b722b084f457
@@ -14,7 +14,8 @@ module PaymentRails
14
14
  :methods,
15
15
  :detail,
16
16
  :total,
17
- :balances
17
+ :balances,
18
+ :accounts
18
19
  )
19
20
  end
20
21
  end
@@ -79,11 +79,11 @@ module PaymentRails
79
79
  when '401'
80
80
  raise AuthenticationError, message
81
81
  when '403'
82
- raise AuthorizationErrormessage
82
+ raise AuthorizationError, message
83
83
  when '404'
84
84
  raise NotFoundError, message
85
85
  when '429'
86
- raise TooManyRequestsError message
86
+ raise TooManyRequestsError, message
87
87
  when '500'
88
88
  raise ServerError, message
89
89
  when '503'
@@ -24,6 +24,8 @@ module PaymentRails
24
24
  attr_reader :offline_payment
25
25
  attr_writer :offline_payment
26
26
 
27
+ attr_accessor :invoice
28
+
27
29
  def initialize(config)
28
30
  @config = config
29
31
  @client = Client.new(config)
@@ -33,6 +35,7 @@ module PaymentRails
33
35
  @payment = PaymentGateway.new(client)
34
36
  @balance = BalanceGateway.new(client)
35
37
  @offline_payment = OfflinePaymentGateway.new(client)
38
+ @invoice = InvoiceGateway.new(client)
36
39
  end
37
40
  end
38
41
  end
@@ -0,0 +1,22 @@
1
+ module PaymentRails
2
+ class Invoice
3
+ attr_accessor(
4
+ :id,
5
+ :description,
6
+ :externalId,
7
+ :invoiceDate,
8
+ :dueDate,
9
+ :invoiceNumber,
10
+ :status,
11
+ :releaseAfter,
12
+ :createdAt,
13
+ :updatedAt,
14
+ :totalAmount,
15
+ :paidAmount,
16
+ :dueAmount,
17
+ :tags,
18
+ :recipientId,
19
+ :lines
20
+ )
21
+ end
22
+ end
@@ -45,7 +45,8 @@ module PaymentRails
45
45
  :returnedReason,
46
46
  :failureMessage,
47
47
  :merchantId,
48
- :checkNumber
48
+ :checkNumber,
49
+ :forceUsTaxActivity
49
50
  )
50
51
  end
51
52
  end
@@ -35,7 +35,8 @@ module PaymentRails
35
35
  :placeOfBirth,
36
36
  :tags,
37
37
  :taxDeliveryType,
38
- :riskScore
38
+ :riskScore,
39
+ :isPortalUser
39
40
  )
40
41
  end
41
42
  end
@@ -0,0 +1,77 @@
1
+ require_relative '../Client.rb'
2
+ require_relative 'GatewayHelper'
3
+
4
+ module PaymentRails
5
+ class InvoiceGateway
6
+ include GatewayHelper
7
+
8
+ def initialize(client)
9
+ @client = client
10
+ end
11
+
12
+ def find(body)
13
+ response = @client.post('/v1/invoices/get', body)
14
+ invoice_builder(response)
15
+ end
16
+
17
+ def create(body)
18
+ response = @client.post('/v1/invoices/create', body)
19
+ invoice_builder(response)
20
+ end
21
+
22
+ def create_line(body)
23
+ response = @client.post('/v1/invoices/create-lines', body)
24
+ invoice_builder(response)
25
+ end
26
+
27
+ def search(body)
28
+ response = @client.post('/v1/invoices/search', body)
29
+ invoice_list_builder(response)
30
+ end
31
+
32
+ def update(body)
33
+ @client.post('/v1/invoices/update', body)
34
+ true
35
+ end
36
+
37
+ def update_line(body)
38
+ @client.post('/v1/invoices/update-lines', body)
39
+ true
40
+ end
41
+
42
+ def delete(body)
43
+ @client.post('/v1/invoices/delete', body)
44
+ true
45
+ end
46
+
47
+ def delete_line(body)
48
+ @client.post('/v1/invoices/delete-lines', body)
49
+ true
50
+ end
51
+
52
+ def invoice_builder(response)
53
+ invoice = Invoice.new
54
+ data = JSON.parse(response)
55
+ data.each do |key, value|
56
+ next unless key === 'invoice'
57
+ loosely_hydrate_model(invoice, value)
58
+ end
59
+ invoice
60
+ end
61
+
62
+ def invoice_list_builder(response)
63
+ invoices = []
64
+ data = JSON.parse(response)
65
+
66
+ data.each do |key, value|
67
+ next unless key === 'invoices'
68
+ value.each do |newKey, _newValue|
69
+ invoices.push(
70
+ loosely_hydrate_model(Invoice.new, newKey)
71
+ )
72
+ end
73
+ end
74
+ invoices
75
+ end
76
+ end
77
+ end
@@ -29,8 +29,15 @@ module PaymentRails
29
29
  true
30
30
  end
31
31
 
32
- def search(page = 1, page_size = 10, term = '')
33
- response = @client.get('/v1/recipients?page=' + page.to_s + '&pageSize=' + page_size.to_s + '&search=' + term)
32
+ # TODO: if we can afford a breaking change ideally these should be kwargs
33
+ def search(page = 1, page_size = 10, prefix_search = '', filters = {})
34
+ query_string = URI.encode_www_form(
35
+ page: page.to_s,
36
+ pageSize: page_size.to_s,
37
+ search: prefix_search,
38
+ **filters
39
+ )
40
+ response = @client.get("/v1/recipients?#{query_string}")
34
41
  recipient_list_builder(response)
35
42
  end
36
43
 
data/lib/paymentrails.rb CHANGED
@@ -7,6 +7,7 @@ require 'paymentrails/gateways/PaymentGateway'
7
7
  require 'paymentrails/gateways/RecipientGateway'
8
8
  require 'paymentrails/gateways/RecipientAccountGateway'
9
9
  require 'paymentrails/gateways/OfflinePaymentGateway'
10
+ require 'paymentrails/gateways/InvoiceGateway'
10
11
 
11
12
  require 'paymentrails/Balance'
12
13
  require 'paymentrails/Batch'
@@ -16,6 +17,7 @@ require 'paymentrails/Payment'
16
17
  require 'paymentrails/Recipient'
17
18
  require 'paymentrails/RecipientAccount'
18
19
  require 'paymentrails/OfflinePayment'
20
+ require 'paymentrails/Invoice'
19
21
 
20
22
  module PaymentRails
21
23
  def self.client(key, secret, environment = 'production', **optionals)
data/paymentrails.gemspec CHANGED
@@ -4,7 +4,7 @@ Gem::Specification.new do |s|
4
4
  s.name = "paymentrails"
5
5
  s.summary = "PaymentRails Ruby SDK"
6
6
  s.description = "Ruby SDK for interacting with the PaymentRails API"
7
- s.version = '0.2.5'
7
+ s.version = '0.2.9'
8
8
  s.homepage = 'https://www.paymentrails.com/'
9
9
  s.email = ['joshua@paymentrails.com']
10
10
  s.license = "MIT"
@@ -0,0 +1,124 @@
1
+ require_relative 'helper'
2
+
3
+ class InvoiceTest < Test::Unit::TestCase
4
+ def setup
5
+ @client = PaymentRails.client(
6
+ ENV.fetch('SANDBOX_API_KEY'),
7
+ ENV.fetch('SANDBOX_SECRET_KEY'),
8
+ 'production',
9
+ proxy_uri: ENV['PROXY_URI']
10
+ )
11
+ end
12
+
13
+ def create_recipient
14
+ uuid = SecureRandom.uuid.to_s
15
+ recipient = @client.recipient.create(
16
+ type: 'individual',
17
+ firstName: 'Tom',
18
+ lastName: 'Jones',
19
+ email: 'test.batch' + uuid + '@example.com',
20
+ address: {
21
+ street1: '123 Wolfstrasse',
22
+ city: 'Berlin',
23
+ country: 'DE',
24
+ postalCode: '123123'
25
+ }
26
+ )
27
+ @client.recipient_account.create(recipient.id, type: 'bank-transfer', currency: 'EUR', country: 'DE', iban: 'DE89 3704 0044 0532 0130 00')
28
+ recipient
29
+ end
30
+
31
+ def test_create
32
+ recipient = create_recipient
33
+ invoice = @client.invoice.create(recipientId: recipient.id, description: 'Integration Test Invoice Create')
34
+ assert_not_nil(invoice)
35
+ assert_not_nil(invoice.id)
36
+
37
+ invoice = @client.invoice.search({})
38
+ assert_true(invoice.count > 0)
39
+ end
40
+
41
+ def test_create_line
42
+ recipient = create_recipient
43
+ invoice = @client.invoice.create(recipientId: recipient.id, description: 'Integration Test Invoice Create')
44
+ assert_not_nil(invoice)
45
+ assert_not_nil(invoice.id)
46
+ assert_equal([], invoice.lines)
47
+
48
+ invoice_line = @client.invoice.create_line(invoiceId: invoice.id, lines: [{ unitAmount: { value: '2000', currency: 'USD' } }])
49
+ assert_not_nil(invoice_line.lines)
50
+ assert_not_nil(invoice_line.lines.first['id'])
51
+
52
+ findInvoice = @client.invoice.find(invoiceId: invoice.id)
53
+ assert_true(findInvoice.lines.count > 0)
54
+ end
55
+
56
+ def test_update
57
+ recipient = create_recipient
58
+ invoice = @client.invoice.create(recipientId: recipient.id, description: 'Integration Test Invoice Create')
59
+ assert_not_nil(invoice)
60
+ assert_not_nil(invoice.id)
61
+
62
+ invoices = @client.invoice.search({})
63
+ assert_true(invoices.count > 0)
64
+
65
+ response = @client.invoice.update(invoiceId: invoice.id, description: 'Integration Test Invoice Update')
66
+ assert_true(response)
67
+ findInvoice = @client.invoice.find(invoiceId: invoice.id)
68
+ assert_equal('Integration Test Invoice Update', findInvoice.description)
69
+ assert_equal('open', findInvoice.status)
70
+ end
71
+
72
+ def test_update_line
73
+ recipient = create_recipient
74
+ invoice = @client.invoice.create(recipientId: recipient.id, description: 'Integration Test Invoice Create')
75
+ assert_not_nil(invoice)
76
+ assert_not_nil(invoice.id)
77
+ assert_equal([], invoice.lines)
78
+
79
+ invoice_line = @client.invoice.create_line(invoiceId: invoice.id, lines: [{ unitAmount: { value: '2000', currency: 'USD' } }])
80
+ assert_not_nil(invoice_line.lines)
81
+ assert_not_nil(invoice_line.lines.first['id'])
82
+
83
+ response = @client.invoice.update_line(
84
+ invoiceId: invoice.id,
85
+ lines: [{
86
+ invoiceLineId: invoice_line.lines.first['id'],
87
+ unitAmount: { value: '3000', currency: 'USD' }
88
+ }]
89
+ )
90
+ assert_true(response)
91
+
92
+ findInvoice = @client.invoice.find(invoiceId: invoice.id)
93
+ assert_equal('3000.00', findInvoice.lines.first['unitAmount']['value'])
94
+ end
95
+
96
+ def test_delete
97
+ recipient = create_recipient
98
+ invoice = @client.invoice.create(recipientId: recipient.id, description: 'Integration Test Invoice Create')
99
+ assert_not_nil(invoice)
100
+ assert_not_nil(invoice.id)
101
+
102
+ invoices = @client.invoice.search({})
103
+ assert_true(invoices.count > 0)
104
+
105
+ response = @client.invoice.delete(invoiceIds: invoices.map(&:id))
106
+ assert_true(response)
107
+
108
+ final_invoices = @client.invoice.search({})
109
+ assert_true(final_invoices.count == 0)
110
+ end
111
+
112
+ def test_delete_line
113
+ recipient = create_recipient
114
+ invoice = @client.invoice.create(recipientId: recipient.id, description: 'Integration Test Invoice Create')
115
+ assert_not_nil(invoice)
116
+ assert_not_nil(invoice.id)
117
+ assert_equal([], invoice.lines)
118
+
119
+ invoice_line = @client.invoice.create_line(invoiceId: invoice.id, lines: [{ unitAmount: { value: '2000', currency: 'USD' } }])
120
+
121
+ response = @client.invoice.delete_line(invoiceId: invoice.id, invoiceLineIds: [invoice_line.lines.first['id']])
122
+ assert_true(response)
123
+ end
124
+ end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: paymentrails
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.5
4
+ version: 0.2.9
5
5
  platform: ruby
6
6
  authors:
7
7
  - PaymentRails
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-05-04 00:00:00.000000000 Z
11
+ date: 2022-02-03 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: dotenv
@@ -82,6 +82,7 @@ files:
82
82
  - lib/paymentrails/Configuration.rb
83
83
  - lib/paymentrails/Exceptions.rb
84
84
  - lib/paymentrails/Gateway.rb
85
+ - lib/paymentrails/Invoice.rb
85
86
  - lib/paymentrails/OfflinePayment.rb
86
87
  - lib/paymentrails/Payment.rb
87
88
  - lib/paymentrails/Recipient.rb
@@ -89,12 +90,14 @@ files:
89
90
  - lib/paymentrails/gateways/BalanceGateway.rb
90
91
  - lib/paymentrails/gateways/BatchGateway.rb
91
92
  - lib/paymentrails/gateways/GatewayHelper.rb
93
+ - lib/paymentrails/gateways/InvoiceGateway.rb
92
94
  - lib/paymentrails/gateways/OfflinePaymentGateway.rb
93
95
  - lib/paymentrails/gateways/PaymentGateway.rb
94
96
  - lib/paymentrails/gateways/RecipientAccountGateway.rb
95
97
  - lib/paymentrails/gateways/RecipientGateway.rb
96
98
  - paymentrails.gemspec
97
99
  - spec/integration/BatchTest.rb
100
+ - spec/integration/InvoiceTest.rb
98
101
  - spec/integration/RecipientTest.rb
99
102
  - spec/integration/helper.rb
100
103
  - spec/unit/ConfigurationTest.rb
@@ -118,7 +121,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
118
121
  - !ruby/object:Gem::Version
119
122
  version: '0'
120
123
  requirements: []
121
- rubygems_version: 3.0.3
124
+ rubygems_version: 3.1.2
122
125
  signing_key:
123
126
  specification_version: 4
124
127
  summary: PaymentRails Ruby SDK