iyzipay 1.0.34 → 1.0.35

Sign up to get free protection for your applications and to get access to all the features.
Files changed (44) hide show
  1. checksums.yaml +5 -13
  2. data/{LICENSE.txt → LICENSE} +0 -0
  3. data/README.md +64 -7
  4. data/VERSION +1 -1
  5. data/iyzipay.gemspec +1 -2
  6. data/lib/Iyzipay.rb +1 -2
  7. data/lib/iyzipay/http_client.rb +1 -1
  8. data/lib/iyzipay/iyzipay_resource.rb +1 -0
  9. data/lib/iyzipay/model.rb +8 -1
  10. data/lib/iyzipay/model/api_test.rb +10 -0
  11. data/lib/iyzipay/model/bkm_initialize.rb +1 -0
  12. data/lib/iyzipay/model/card.rb +36 -0
  13. data/lib/iyzipay/model/card_information.rb +17 -0
  14. data/lib/iyzipay/model/card_list.rb +17 -0
  15. data/lib/iyzipay/model/currency.rb +1 -0
  16. data/lib/iyzipay/model/locale.rb +8 -0
  17. data/lib/iyzipay/model/pecco_initialize.rb +27 -0
  18. data/lib/iyzipay/model/pecco_payment.rb +17 -0
  19. data/spec/{basic_payment_post_auth_spec.rb → api_test_spec.rb} +3 -11
  20. data/spec/approval_spec.rb +2 -17
  21. data/spec/bin_number_spec.rb +2 -2
  22. data/spec/bkm_spec.rb +19 -24
  23. data/spec/cancel_spec.rb +2 -2
  24. data/spec/card_storage_spec.rb +94 -0
  25. data/spec/checkout_form_spec.rb +20 -26
  26. data/spec/{payment_post_auth_spec.rb → disapproval_spec.rb} +5 -8
  27. data/spec/installment_spec.rb +5 -5
  28. data/spec/payment_spec.rb +54 -58
  29. data/spec/{checkout_form_pre_auth_spec.rb → pecco_spec.rb} +30 -18
  30. data/spec/refund_spec.rb +5 -23
  31. data/spec/retrieve_transactions_spec.rb +2 -2
  32. data/spec/spec_helper.rb +2 -2
  33. data/spec/sub_merchant_spec.rb +7 -8
  34. data/spec/threeds_payment_spec.rb +9 -9
  35. metadata +33 -34
  36. data/lib/iyzipay/version.rb +0 -3
  37. data/spec/basic_bkm_spec.rb +0 -261
  38. data/spec/basic_payment_pre_auth_spec.rb +0 -73
  39. data/spec/basic_payment_spec.rb +0 -73
  40. data/spec/basic_threeds_pre_auth_spec.rb +0 -103
  41. data/spec/basic_threeds_spec.rb +0 -103
  42. data/spec/cross_booking_spec.rb +0 -51
  43. data/spec/payment_pre_auth_spec.rb +0 -280
  44. data/spec/threeds_pre_auth_spec.rb +0 -226
checksums.yaml CHANGED
@@ -1,15 +1,7 @@
1
1
  ---
2
- !binary "U0hBMQ==":
3
- metadata.gz: !binary |-
4
- NDk5ODMwZDQ5ZTM1MzAwZDg4MGQzZTBhYTIzMGRlZTE0ODdhYzFhZA==
5
- data.tar.gz: !binary |-
6
- MmI1NTg0MGQ3OWY2OWI1Nzc1ZGU3NjNjZmI4NmMzODE3ZWJkMTVjNw==
2
+ SHA1:
3
+ metadata.gz: 69f646d88d5856aa760d5583c2485a1c856228fb
4
+ data.tar.gz: c347d212be224b3eba9e4312f7e49a75d7dd0995
7
5
  SHA512:
8
- metadata.gz: !binary |-
9
- MDVkNGIyMzZiYjQzMmMxNDljYTAzMWQ4NGE0M2YyYzE5ODdhMTFhZDg1OGEw
10
- MWYxODJkMDBiMmE3MjgyYWU4MTA5YzcyOTIyNjdkMjcyNTc5MjZjZTg1YWM4
11
- NmFkZDUxNzEwYWUyN2I4MzMyNmQ2YjE3YTQ5ODI4MmUxN2ViODc=
12
- data.tar.gz: !binary |-
13
- NzExZTk1MmEzNWJlOGJiYzA5ZWVhNDIzZjFlYzZjM2YxNjY5OGFkOTk3YTU4
14
- NmY4MTk1ODk1YjBmZWQxM2YyNGJlZWEzYzE5MGFjODQ0ZDRjYWZjOTVhMDU4
15
- OTM1MzE1OWFlODllNGFmMmU1Y2QxODU2NzVlNDZkZjcwMGRhNzQ=
6
+ metadata.gz: 8f12e3df7375c39ff59c473ee3b627562b1278f2d248ce9e427b46266d4fc22c5fa30b41d0ef2be0df875dd11dfc9edba0c9bc9c3ccfa2aaf4cfa47ece2c7a5a
7
+ data.tar.gz: 31aa5f35cf533e639cf3eae7fe8c15ea5f1770a9fba02e4ee23414d91e4fe9e8956a39dd3ef2c0f695d31e0a529707301372c5c3a8db968937a2b3586f616cbe
File without changes
data/README.md CHANGED
@@ -18,7 +18,6 @@ You can sign up for an iyzico account at https://iyzico.com
18
18
  ``` ruby
19
19
  source 'https://rubygems.org'
20
20
 
21
- gem 'rails'
22
21
  gem 'iyzipay'
23
22
 
24
23
  ```
@@ -34,7 +33,7 @@ before :all do
34
33
  @options.base_url = 'https://sandbox-api.iyzipay.com'
35
34
  end
36
35
 
37
- it 'should create payment with physical and virtual item for listing or subscription' do
36
+ it 'should create payment' do
38
37
  payment_card = {
39
38
  cardHolderName: 'John Doe',
40
39
  cardNumber: '5528790000000008',
@@ -72,7 +71,7 @@ it 'should create payment with physical and virtual item for listing or subscrip
72
71
  category1: 'Collectibles',
73
72
  category2: 'Accessories',
74
73
  itemType: Iyzipay::Model::BasketItemType::PHYSICAL,
75
- price: '0.3',
74
+ price: '0.3'
76
75
  }
77
76
  item2 = {
78
77
  id: 'BI102',
@@ -80,7 +79,7 @@ it 'should create payment with physical and virtual item for listing or subscrip
80
79
  category1: 'Game',
81
80
  category2: 'Online Game Items',
82
81
  itemType: Iyzipay::Model::BasketItemType::VIRTUAL,
83
- price: '0.5',
82
+ price: '0.5'
84
83
  }
85
84
  item3 = {
86
85
  id: 'BI103',
@@ -88,10 +87,10 @@ it 'should create payment with physical and virtual item for listing or subscrip
88
87
  category1: 'Electronics',
89
88
  category2: 'Usb / Cable',
90
89
  itemType: Iyzipay::Model::BasketItemType::PHYSICAL,
91
- price: '0.2',
90
+ price: '0.2'
92
91
  }
93
92
  request = {
94
- locale: 'tr',
93
+ locale: Iyzipay::Model::Locale::TR,
95
94
  conversationId: '123456789',
96
95
  price: '1.0',
97
96
  paidPrice: '1.1',
@@ -120,4 +119,62 @@ See other samples under iyzipay-ruby/spec module.
120
119
  Testing
121
120
  =======
122
121
 
123
- You can run specs with RSpec under spec module.
122
+ You can run specs with RSpec under spec module.
123
+
124
+ ### Mock test cards
125
+
126
+ Test cards that can be used to simulate a *successful* payment:
127
+
128
+ Card Number | Bank | Card Type
129
+ ----------- | ---- | ---------
130
+ 5890040000000016 | Akbank | Master Card (Debit)
131
+ 5526080000000006 | Akbank | Master Card (Credit)
132
+ 4766620000000001 | Denizbank | Visa (Debit)
133
+ 4603450000000000 | Denizbank | Visa (Credit)
134
+ 4729150000000005 | Denizbank Bonus | Visa (Credit)
135
+ 4987490000000002 | Finansbank | Visa (Debit)
136
+ 5311570000000005 | Finansbank | Master Card (Credit)
137
+ 9792020000000001 | Finansbank | Troy (Debit)
138
+ 9792030000000000 | Finansbank | Troy (Credit)
139
+ 5170410000000004 | Garanti Bankası | Master Card (Debit)
140
+ 5400360000000003 | Garanti Bankası | Master Card (Credit)
141
+ 374427000000003 | Garanti Bankası | American Express
142
+ 4475050000000003 | Halkbank | Visa (Debit)
143
+ 5528790000000008 | Halkbank | Master Card (Credit)
144
+ 4059030000000009 | HSBC Bank | Visa (Debit)
145
+ 5504720000000003 | HSBC Bank | Master Card (Credit)
146
+ 5892830000000000 | Türkiye İş Bankası | Master Card (Debit)
147
+ 4543590000000006 | Türkiye İş Bankası | Visa (Credit)
148
+ 4910050000000006 | Vakıfbank | Visa (Debit)
149
+ 4157920000000002 | Vakıfbank | Visa (Credit)
150
+ 5168880000000002 | Yapı ve Kredi Bankası | Master Card (Debit)
151
+ 5451030000000000 | Yapı ve Kredi Bankası | Master Card (Credit)
152
+
153
+ *Cross border* test cards:
154
+
155
+ Card Number | Country
156
+ ----------- | -------
157
+ 4054180000000007 | Non-Turkish (Debit)
158
+ 5400010000000004 | Non-Turkish (Credit)
159
+ 6221060000000004 | Iran
160
+
161
+ Test cards to get specific *error* codes:
162
+
163
+ Card Number | Description
164
+ ----------- | -----------
165
+ 5406670000000009 | Success but cannot be cancelled, refund or post auth
166
+ 4111111111111129 | Not sufficient funds
167
+ 4129111111111111 | Do not honour
168
+ 4128111111111112 | Invalid transaction
169
+ 4127111111111113 | Lost card
170
+ 4126111111111114 | Stolen card
171
+ 4125111111111115 | Expired card
172
+ 4124111111111116 | Invalid cvc2
173
+ 4123111111111117 | Not permitted to card holder
174
+ 4122111111111118 | Not permitted to terminal
175
+ 4121111111111119 | Fraud suspect
176
+ 4120111111111110 | Pickup card
177
+ 4130111111111118 | General error
178
+ 4131111111111117 | Success but mdStatus is 0
179
+ 4141111111111115 | Success but mdStatus is 4
180
+ 4151111111111112 | 3dsecure initialize failed
data/VERSION CHANGED
@@ -1 +1 @@
1
- 1.0.34
1
+ 1.0.35
data/iyzipay.gemspec CHANGED
@@ -1,10 +1,9 @@
1
1
  lib = File.expand_path('../lib', __FILE__)
2
2
  $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
3
- require 'iyzipay/version'
4
3
 
5
4
  Gem::Specification.new do |s|
6
5
  s.name = 'iyzipay'
7
- s.version = Iyzipay::VERSION
6
+ s.version = '1.0.35'
8
7
  s.platform = Gem::Platform::RUBY
9
8
  s.required_ruby_version = '>= 1.9.3'
10
9
  s.summary = %q{iyzipay api ruby client}
data/lib/Iyzipay.rb CHANGED
@@ -12,5 +12,4 @@ require_relative 'iyzipay/http_client'
12
12
  require_relative 'iyzipay/pki_builder'
13
13
  require_relative 'iyzipay/iyzipay_resource'
14
14
  require_relative 'iyzipay/model'
15
- require_relative 'iyzipay/options'
16
- require_relative 'iyzipay/version'
15
+ require_relative 'iyzipay/options'
@@ -1,6 +1,6 @@
1
1
  module Iyzipay
2
2
  class HttpClient
3
- def self.get(url, header)
3
+ def self.get(url, header={})
4
4
  RestClient.get(url, header)
5
5
  end
6
6
 
@@ -15,6 +15,7 @@ module Iyzipay
15
15
  random_header_value = random_string(RANDOM_STRING_SIZE)
16
16
  header[:'Authorization'] = "#{prepare_authorization_string(pki_string, random_header_value, options)}"
17
17
  header[:'x-iyzi-rnd'] = "#{random_header_value}"
18
+ header[:'x-iyzi-client-version'] = 'iyzipay-ruby-1.0.35'
18
19
  end
19
20
 
20
21
  header
data/lib/iyzipay/model.rb CHANGED
@@ -2,6 +2,7 @@ module Model
2
2
  end
3
3
 
4
4
  require_relative 'model/address'
5
+ require_relative 'model/api_test'
5
6
  require_relative 'model/approval'
6
7
  require_relative 'model/basic_bkm'
7
8
  require_relative 'model/basic_bkm_initialize'
@@ -18,6 +19,9 @@ require_relative 'model/bkm'
18
19
  require_relative 'model/bkm_initialize'
19
20
  require_relative 'model/bounced_bank_transfer_list'
20
21
  require_relative 'model/buyer'
22
+ require_relative 'model/card'
23
+ require_relative 'model/card_information'
24
+ require_relative 'model/card_list'
21
25
  require_relative 'model/cancel'
22
26
  require_relative 'model/checkout_form'
23
27
  require_relative 'model/checkout_form_initialize'
@@ -28,6 +32,7 @@ require_relative 'model/disapproval'
28
32
  require_relative 'model/installment_details'
29
33
  require_relative 'model/installment_info'
30
34
  require_relative 'model/installment_prices'
35
+ require_relative 'model/locale'
31
36
  require_relative 'model/payment'
32
37
  require_relative 'model/payment_card'
33
38
  require_relative 'model/payment_channel'
@@ -35,6 +40,8 @@ require_relative 'model/payment_group'
35
40
  require_relative 'model/payment_post_auth'
36
41
  require_relative 'model/payment_pre_auth'
37
42
  require_relative 'model/payout_completed_transaction_list'
43
+ require_relative 'model/pecco_initialize'
44
+ require_relative 'model/pecco_payment'
38
45
  require_relative 'model/refund'
39
46
  require_relative 'model/refund_charged_from_merchant'
40
47
  require_relative 'model/sub_merchant'
@@ -42,4 +49,4 @@ require_relative 'model/sub_merchant_type'
42
49
  require_relative 'model/threeds_initialize'
43
50
  require_relative 'model/threeds_initialize_pre_auth'
44
51
  require_relative 'model/threeds_payment'
45
- require_relative 'model/currency'
52
+ require_relative 'model/currency'
@@ -0,0 +1,10 @@
1
+ module Iyzipay
2
+ module Model
3
+ class ApiTest < IyzipayResource
4
+
5
+ def retrieve(options)
6
+ HttpClient.get("#{options.base_url}/payment/test")
7
+ end
8
+ end
9
+ end
10
+ end
@@ -17,6 +17,7 @@ module Iyzipay
17
17
  append(:billingAddress, Address.to_pki_string(request[:billingAddress])).
18
18
  append_array(:basketItems, Basket.to_pki_string(request[:basketItems])).
19
19
  append(:callbackUrl, request[:callbackUrl]).
20
+ append_array(:enabledInstallments, request[:enabledInstallments]).
20
21
  get_request_string
21
22
  end
22
23
  end
@@ -0,0 +1,36 @@
1
+ module Iyzipay
2
+ module Model
3
+ class Card < IyzipayResource
4
+
5
+ def create(request = {}, options)
6
+ pki_string = to_pki_string_create(request)
7
+ HttpClient.post("#{options.base_url}/cardstorage/card", get_http_header(pki_string, options), request.to_json)
8
+ end
9
+
10
+ def delete(request = {}, options)
11
+ pki_string = to_pki_string_delete(request)
12
+ HttpClient.delete("#{options.base_url}/cardstorage/card", get_http_header(pki_string, options), request.to_json)
13
+ end
14
+
15
+ def to_pki_string_create(request)
16
+ PkiBuilder.new.
17
+ append(:locale, request[:locale]).
18
+ append(:conversationId, request[:conversationId]).
19
+ append(:externalId, request[:externalId]).
20
+ append(:email, request[:email]).
21
+ append(:cardUserKey, request[:cardUserKey]).
22
+ append(:card, CardInformation.to_pki_string(request[:card])).
23
+ get_request_string
24
+ end
25
+
26
+ def to_pki_string_delete(request)
27
+ PkiBuilder.new.
28
+ append(:locale, request[:locale]).
29
+ append(:conversationId, request[:conversationId]).
30
+ append(:cardUserKey, request[:cardUserKey]).
31
+ append(:cardToken, request[:cardToken]).
32
+ get_request_string
33
+ end
34
+ end
35
+ end
36
+ end
@@ -0,0 +1,17 @@
1
+ module Iyzipay
2
+ module Model
3
+ class CardInformation
4
+ def self.to_pki_string(request)
5
+ unless request.nil?
6
+ PkiBuilder.new.
7
+ append(:cardAlias, request[:cardAlias]).
8
+ append(:cardNumber, request[:cardNumber]).
9
+ append(:expireYear, request[:expireYear]).
10
+ append(:expireMonth, request[:expireMonth]).
11
+ append(:cardHolderName, request[:cardHolderName]).
12
+ get_request_string
13
+ end
14
+ end
15
+ end
16
+ end
17
+ end
@@ -0,0 +1,17 @@
1
+ module Iyzipay
2
+ module Model
3
+ class CardList < IyzipayResource
4
+
5
+ def retrieve(request = {}, options)
6
+ pki_string = to_pki_string(request)
7
+ HttpClient.post("#{options.base_url}/cardstorage/cards", get_http_header(pki_string, options), request.to_json)
8
+ end
9
+
10
+ def to_pki_string(request)
11
+ PkiBuilder.new.append_super(super).
12
+ append(:cardUserKey, request[:cardUserKey]).
13
+ get_request_string
14
+ end
15
+ end
16
+ end
17
+ end
@@ -5,6 +5,7 @@ module Iyzipay
5
5
  EUR = 'EUR'
6
6
  USD = 'USD'
7
7
  GBP = 'GBP'
8
+ IRR = 'IRR'
8
9
  end
9
10
  end
10
11
  end
@@ -0,0 +1,8 @@
1
+ module Iyzipay
2
+ module Model
3
+ module Locale
4
+ TR = 'tr'
5
+ EN = 'en'
6
+ end
7
+ end
8
+ end
@@ -0,0 +1,27 @@
1
+ module Iyzipay
2
+ module Model
3
+ class PeccoInitialize < IyzipayResource
4
+
5
+ def create(request = {}, options)
6
+ pki_string = to_pki_string(request)
7
+ HttpClient.post("#{options.base_url}/payment/pecco/initialize", get_http_header(pki_string, options), request.to_json)
8
+ end
9
+
10
+ def to_pki_string(request)
11
+ PkiBuilder.new.append_super(super).
12
+ append_price(:price, request[:price]).
13
+ append(:basketId, request[:basketId]).
14
+ append(:paymentGroup, request[:paymentGroup]).
15
+ append(:buyer, Buyer.to_pki_string(request[:buyer])).
16
+ append(:shippingAddress, Address.to_pki_string(request[:shippingAddress])).
17
+ append(:billingAddress, Address.to_pki_string(request[:billingAddress])).
18
+ append_array(:basketItems, Basket.to_pki_string(request[:basketItems])).
19
+ append(:callbackUrl, request[:callbackUrl]).
20
+ append(:paymentSource, request[:paymentSource]).
21
+ append(:currency, request[:currency]).
22
+ append_price(:paidPrice, request[:paidPrice]).
23
+ get_request_string
24
+ end
25
+ end
26
+ end
27
+ end
@@ -0,0 +1,17 @@
1
+ module Iyzipay
2
+ module Model
3
+ class PeccoPayment < IyzipayResource
4
+
5
+ def create(request = {}, options)
6
+ pki_string = to_pki_string(request)
7
+ HttpClient.post("#{options.base_url}/payment/pecco/auth", get_http_header(pki_string, options), request.to_json)
8
+ end
9
+
10
+ def to_pki_string(request)
11
+ PkiBuilder.new.append_super(super).
12
+ append(:token, request[:token]).
13
+ get_request_string
14
+ end
15
+ end
16
+ end
17
+ end
@@ -10,18 +10,10 @@ RSpec.describe 'Iyzipay' do
10
10
  @options.base_url = 'https://sandbox-api.iyzipay.com'
11
11
  end
12
12
 
13
- it 'should post auth' do
14
- request = {
15
- locale: 'tr',
16
- conversationId: '123456789',
17
- paymentId: '252',
18
- paidPrice: '1',
19
- ip: '85.34.78.112',
20
- currency: Iyzipay::Model::Currency::TRY
21
- }
22
- payment = Iyzipay::Model::BasicPaymentPostAuth.new.create(request, @options)
13
+ it 'should test api' do
14
+ api_test = Iyzipay::Model::ApiTest.new.retrieve(@options)
23
15
  begin
24
- $stderr.puts payment.inspect
16
+ $stderr.puts api_test.inspect
25
17
  rescue
26
18
  $stderr.puts 'oops'
27
19
  raise
@@ -12,9 +12,9 @@ RSpec.describe 'Iyzipay' do
12
12
 
13
13
  it 'should approve payment item' do
14
14
  request = {
15
- locale: 'tr',
15
+ locale: Iyzipay::Model::Locale::TR,
16
16
  conversationId: '123456789',
17
- paymentTransactionId: '699'
17
+ paymentTransactionId: '1'
18
18
  }
19
19
  approval = Iyzipay::Model::Approval.new.create(request, @options)
20
20
  begin
@@ -25,21 +25,6 @@ RSpec.describe 'Iyzipay' do
25
25
  end
26
26
  end
27
27
 
28
- it 'should disapprove payment item' do
29
- request = {
30
- locale: 'tr',
31
- conversationId: '123456789',
32
- paymentTransactionId: '699'
33
- }
34
- disapproval = Iyzipay::Model::Disapproval.new.create(request, @options)
35
- begin
36
- $stderr.puts disapproval.inspect
37
- rescue
38
- $stderr.puts 'oops'
39
- raise
40
- end
41
- end
42
-
43
28
  after :each do
44
29
  end
45
30
  end
@@ -12,9 +12,9 @@ RSpec.describe 'Iyzipay' do
12
12
 
13
13
  it 'should retrieve bin number' do
14
14
  request = {
15
- locale: 'tr',
15
+ locale: Iyzipay::Model::Locale::TR,
16
16
  conversationId: '123456789',
17
- binNumber: '454671'
17
+ binNumber: '554960'
18
18
  }
19
19
  bin_number = Iyzipay::Model::BinNumber.new.retrieve(request, @options)
20
20
  begin