iyzipay-subscriptions 1.0.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.
Files changed (114) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +12 -0
  3. data/.rspec +2 -0
  4. data/.ruby-gemset +1 -0
  5. data/.travis.yml +17 -0
  6. data/Gemfile +6 -0
  7. data/LICENSE +21 -0
  8. data/README.md +183 -0
  9. data/Rakefile +5 -0
  10. data/VERSION +1 -0
  11. data/contributors +2 -0
  12. data/examples/options.rb +4 -0
  13. data/examples/plan.rb +36 -0
  14. data/examples/product.rb +32 -0
  15. data/examples/subscription.rb +33 -0
  16. data/examples/subscription_checkout_form_initialize.rb +39 -0
  17. data/examples/subscription_initialize.rb +47 -0
  18. data/gemfiles/Gemfile.nokogiri-1.6.8.1 +7 -0
  19. data/iyzipay.gemspec +24 -0
  20. data/lib/iyzipay.rb +16 -0
  21. data/lib/iyzipay/http_client.rb +39 -0
  22. data/lib/iyzipay/iyzipay_resource.rb +60 -0
  23. data/lib/iyzipay/iyzipay_resource_v2.rb +39 -0
  24. data/lib/iyzipay/model.rb +63 -0
  25. data/lib/iyzipay/model/address.rb +17 -0
  26. data/lib/iyzipay/model/api_test.rb +10 -0
  27. data/lib/iyzipay/model/approval.rb +17 -0
  28. data/lib/iyzipay/model/basic_bkm.rb +17 -0
  29. data/lib/iyzipay/model/basic_bkm_initialize.rb +24 -0
  30. data/lib/iyzipay/model/basic_payment.rb +27 -0
  31. data/lib/iyzipay/model/basic_payment_post_auth.rb +20 -0
  32. data/lib/iyzipay/model/basic_payment_pre_auth.rb +27 -0
  33. data/lib/iyzipay/model/basic_threeds_initialize.rb +27 -0
  34. data/lib/iyzipay/model/basic_threeds_initialize_pre_auth.rb +27 -0
  35. data/lib/iyzipay/model/basic_threeds_payment.rb +18 -0
  36. data/lib/iyzipay/model/basket.rb +26 -0
  37. data/lib/iyzipay/model/basket_item_type.rb +8 -0
  38. data/lib/iyzipay/model/bin_number.rb +17 -0
  39. data/lib/iyzipay/model/bkm.rb +17 -0
  40. data/lib/iyzipay/model/bkm_initialize.rb +26 -0
  41. data/lib/iyzipay/model/bounced_bank_transfer_list.rb +17 -0
  42. data/lib/iyzipay/model/buyer.rb +25 -0
  43. data/lib/iyzipay/model/cancel.rb +20 -0
  44. data/lib/iyzipay/model/card.rb +36 -0
  45. data/lib/iyzipay/model/card_information.rb +17 -0
  46. data/lib/iyzipay/model/card_list.rb +17 -0
  47. data/lib/iyzipay/model/checkout_form.rb +17 -0
  48. data/lib/iyzipay/model/checkout_form_initialize.rb +31 -0
  49. data/lib/iyzipay/model/checkout_form_initialize_pre_auth.rb +30 -0
  50. data/lib/iyzipay/model/cross_booking_from_sub_merchant.rb +20 -0
  51. data/lib/iyzipay/model/cross_booking_to_sub_merchant.rb +20 -0
  52. data/lib/iyzipay/model/currency.rb +11 -0
  53. data/lib/iyzipay/model/disapproval.rb +17 -0
  54. data/lib/iyzipay/model/installment_details.rb +19 -0
  55. data/lib/iyzipay/model/installment_info.rb +18 -0
  56. data/lib/iyzipay/model/installment_prices.rb +19 -0
  57. data/lib/iyzipay/model/locale.rb +8 -0
  58. data/lib/iyzipay/model/pay_with_iyzico_initialize.rb +31 -0
  59. data/lib/iyzipay/model/pay_with_iyzico_retrieve.rb +17 -0
  60. data/lib/iyzipay/model/payment.rb +47 -0
  61. data/lib/iyzipay/model/payment_card.rb +22 -0
  62. data/lib/iyzipay/model/payment_channel.rb +14 -0
  63. data/lib/iyzipay/model/payment_group.rb +9 -0
  64. data/lib/iyzipay/model/payment_post_auth.rb +20 -0
  65. data/lib/iyzipay/model/payment_pre_auth.rb +47 -0
  66. data/lib/iyzipay/model/payout_completed_transaction_list.rb +17 -0
  67. data/lib/iyzipay/model/pecco_initialize.rb +27 -0
  68. data/lib/iyzipay/model/pecco_payment.rb +17 -0
  69. data/lib/iyzipay/model/refund.rb +22 -0
  70. data/lib/iyzipay/model/refund_charged_from_merchant.rb +20 -0
  71. data/lib/iyzipay/model/refund_reason.rb +10 -0
  72. data/lib/iyzipay/model/refund_to_balance.rb +18 -0
  73. data/lib/iyzipay/model/settlement_to_balance.rb +19 -0
  74. data/lib/iyzipay/model/sub_merchant.rb +72 -0
  75. data/lib/iyzipay/model/sub_merchant_type.rb +9 -0
  76. data/lib/iyzipay/model/threeds_initialize.rb +32 -0
  77. data/lib/iyzipay/model/threeds_initialize_pre_auth.rb +32 -0
  78. data/lib/iyzipay/model/threeds_payment.rb +34 -0
  79. data/lib/iyzipay/model/v2/checkout_form.rb +20 -0
  80. data/lib/iyzipay/model/v2/checkout_form_initialize.rb +21 -0
  81. data/lib/iyzipay/model/v2/plan.rb +33 -0
  82. data/lib/iyzipay/model/v2/product.rb +39 -0
  83. data/lib/iyzipay/model/v2/subscription.rb +60 -0
  84. data/lib/iyzipay/model/v2/subscription_initialize.rb +21 -0
  85. data/lib/iyzipay/options.rb +7 -0
  86. data/lib/iyzipay/pki_builder.rb +101 -0
  87. data/spec/api_test_spec.rb +28 -0
  88. data/spec/approval_spec.rb +41 -0
  89. data/spec/bin_number_spec.rb +42 -0
  90. data/spec/bkm_spec.rb +91 -0
  91. data/spec/builder.rb +9 -0
  92. data/spec/builder/approval_builder.rb +18 -0
  93. data/spec/builder/card_builder.rb +27 -0
  94. data/spec/builder/checkout_form_builder.rb +75 -0
  95. data/spec/builder/payment_builder.rb +167 -0
  96. data/spec/builder/pecco_initialize_builder.rb +74 -0
  97. data/spec/builder/sub_merchant_builder.rb +91 -0
  98. data/spec/cancel_spec.rb +72 -0
  99. data/spec/card_storage_spec.rb +153 -0
  100. data/spec/checkout_form_spec.rb +113 -0
  101. data/spec/disapproval_spec.rb +47 -0
  102. data/spec/installment_spec.rb +46 -0
  103. data/spec/pay_with_iyzico_spec.rb +109 -0
  104. data/spec/payment_spec.rb +320 -0
  105. data/spec/pecco_spec.rb +116 -0
  106. data/spec/refund_spec.rb +76 -0
  107. data/spec/refund_to_balance_spec.rb +37 -0
  108. data/spec/retrieve_transactions_spec.rb +55 -0
  109. data/spec/settlement_to_balance_spec.rb +40 -0
  110. data/spec/spec_helper.rb +81 -0
  111. data/spec/spec_options.rb +5 -0
  112. data/spec/sub_merchant_spec.rb +227 -0
  113. data/spec/threeds_payment_spec.rb +229 -0
  114. metadata +226 -0
@@ -0,0 +1,47 @@
1
+ # coding: utf-8
2
+
3
+ require_relative 'spec_helper'
4
+ require_relative 'builder'
5
+
6
+ RSpec.describe 'Iyzipay' do
7
+ before :all do
8
+ @options = Iyzipay::Options.new
9
+ @options.api_key = SpecOptions::API_KEY
10
+ @options.secret_key = SpecOptions::SECRET_KEY
11
+ @options.base_url = SpecOptions::BASE_URL
12
+ end
13
+
14
+ it 'should disapprove payment item' do
15
+ # create sub merchant
16
+ sub_merchant = Builder::SubMerchantBuilder.new.create_personal_sub_merchant(@options)
17
+
18
+ # create payment
19
+ payment = Builder::PaymentBuilder.new.create_marketplace_payment(@options, sub_merchant['subMerchantKey'])
20
+
21
+ # approve payment
22
+ Builder::ApprovalBuilder.new.create_approval(@options, payment['itemTransactions'][0]['paymentTransactionId'])
23
+
24
+ # disapprove payment
25
+ request = {
26
+ locale: Iyzipay::Model::Locale::TR,
27
+ conversationId: '123456789',
28
+ paymentTransactionId: payment['itemTransactions'][0]['paymentTransactionId']
29
+ }
30
+ disapproval = Iyzipay::Model::Disapproval.new.create(request, @options)
31
+ begin
32
+ $stdout.puts disapproval.inspect
33
+ disapproval = JSON.parse(disapproval)
34
+ expect(disapproval['status']).to eq('success')
35
+ expect(disapproval['locale']).to eq('tr')
36
+ expect(disapproval['systemTime']).not_to be_nil
37
+ expect(disapproval['conversationId']).to eq('123456789')
38
+ expect(disapproval['paymentTransactionId']).to eq(payment['itemTransactions'][0]['paymentTransactionId'])
39
+ rescue
40
+ $stderr.puts 'oops'
41
+ raise
42
+ end
43
+ end
44
+
45
+ after :each do
46
+ end
47
+ end
@@ -0,0 +1,46 @@
1
+ # coding: utf-8
2
+
3
+ require_relative 'spec_helper'
4
+
5
+ RSpec.describe 'Iyzipay' do
6
+ before :all do
7
+ @options = Iyzipay::Options.new
8
+ @options.api_key = SpecOptions::API_KEY
9
+ @options.secret_key = SpecOptions::SECRET_KEY
10
+ @options.base_url = SpecOptions::BASE_URL
11
+ end
12
+
13
+ it 'should retrieve installment' do
14
+ request = {
15
+ locale: Iyzipay::Model::Locale::TR,
16
+ conversationId: '123456789',
17
+ binNumber: '554960',
18
+ price: '100'
19
+ }
20
+ installment_info = Iyzipay::Model::InstallmentInfo.new.retrieve(request, @options)
21
+ installment_info = JSON.parse(installment_info)
22
+ expect(installment_info['status']).to eq('success')
23
+ expect(installment_info['locale']).to eq('tr')
24
+ expect(installment_info['systemTime']).not_to be_nil
25
+ expect(installment_info['conversationId']).to eq('123456789')
26
+ expect(installment_info['installmentDetails']).not_to be_nil
27
+ expect(installment_info['installmentDetails'][0]['binNumber']).to eq('554960')
28
+ expect(installment_info['installmentDetails'][0]['price']).to eq(100)
29
+ expect(installment_info['installmentDetails'][0]['cardType']).to eq('CREDIT_CARD')
30
+ expect(installment_info['installmentDetails'][0]['cardAssociation']).to eq('MASTER_CARD')
31
+ expect(installment_info['installmentDetails'][0]['cardFamilyName']).to eq('Bonus')
32
+ expect(installment_info['installmentDetails'][0]['installmentPrices']).not_to be_nil
33
+ expect(installment_info['installmentDetails'][0]['installmentPrices'][0]['installmentPrice']).not_to be_nil
34
+ expect(installment_info['installmentDetails'][0]['installmentPrices'][0]['totalPrice']).not_to be_nil
35
+ expect(installment_info['installmentDetails'][0]['installmentPrices'][0]['installmentNumber']).not_to be_nil
36
+ begin
37
+ $stdout.puts installment_info.inspect
38
+ rescue
39
+ $stderr.puts 'oops'
40
+ raise
41
+ end
42
+ end
43
+
44
+ after :each do
45
+ end
46
+ end
@@ -0,0 +1,109 @@
1
+ # coding: utf-8
2
+ require_relative 'spec_helper'
3
+
4
+ RSpec.describe 'Iyzipay' do
5
+ before :all do
6
+ @options = Iyzipay::Options.new
7
+ @options.api_key = SpecOptions::API_KEY
8
+ @options.secret_key = SpecOptions::SECRET_KEY
9
+ @options.base_url = SpecOptions::BASE_URL
10
+ end
11
+
12
+ it 'should initialize pay-with-iyzico link' do
13
+ buyer = {
14
+ id: 'BY789',
15
+ name: 'John',
16
+ surname: 'Doe',
17
+ gsmNumber: '+905350000000',
18
+ email: 'email@email.com',
19
+ identityNumber: '74300864791',
20
+ lastLoginDate: '2015-10-05 12:43:35',
21
+ registrationDate: '2013-04-21 15:12:09',
22
+ registrationAddress: 'Nidakule Göztepe, Merdivenköy Mah. Bora Sok. No:1',
23
+ ip: '85.34.78.112',
24
+ city: 'Istanbul',
25
+ country: 'Turkey',
26
+ zipCode: '34732'
27
+ }
28
+ address = {
29
+ contactName: 'Jane Doe',
30
+ city: 'Istanbul',
31
+ country: 'Turkey',
32
+ address: 'Nidakule Göztepe, Merdivenköy Mah. Bora Sok. No:1',
33
+ zipCode: '34732'
34
+ }
35
+
36
+ item1 = {
37
+ id: 'BI101',
38
+ name: 'Binocular',
39
+ category1: 'Collectibles',
40
+ category2: 'Accessories',
41
+ itemType: Iyzipay::Model::BasketItemType::PHYSICAL,
42
+ price: '0.3'
43
+ }
44
+ item2 = {
45
+ id: 'BI102',
46
+ name: 'Game code',
47
+ category1: 'Game',
48
+ category2: 'Online Game Items',
49
+ itemType: Iyzipay::Model::BasketItemType::VIRTUAL,
50
+ price: '0.5'
51
+ }
52
+ item3 = {
53
+ id: 'BI103',
54
+ name: 'Usb',
55
+ category1: 'Electronics',
56
+ category2: 'Usb / Cable',
57
+ itemType: Iyzipay::Model::BasketItemType::PHYSICAL,
58
+ price: '0.2'
59
+ }
60
+ request = {
61
+ locale: Iyzipay::Model::Locale::TR,
62
+ conversationId: '123456789',
63
+ price: '1',
64
+ paidPrice: '1.2',
65
+ currency: Iyzipay::Model::Currency::TRY,
66
+ basketId: 'B67832',
67
+ paymentGroup: Iyzipay::Model::PaymentGroup::LISTING,
68
+ callbackUrl: 'https://www.merchant.com/callback',
69
+ enabledInstallments: [2, 3, 6, 9],
70
+ buyer: buyer,
71
+ billingAddress: address,
72
+ shippingAddress: address,
73
+ basketItems: [item1, item2, item3]
74
+ }
75
+ pay_with_iyzico_initialize = Iyzipay::Model::PayWithIyzicoInitialize.new.create(request, @options)
76
+
77
+ begin
78
+ $stdout.puts pay_with_iyzico_initialize.inspect
79
+ pay_with_iyzico_initialize = JSON.parse(pay_with_iyzico_initialize)
80
+ expect(pay_with_iyzico_initialize['status']).not_to be_nil
81
+ expect(pay_with_iyzico_initialize['locale']).not_to be_nil
82
+ expect(pay_with_iyzico_initialize['systemTime']).not_to be_nil
83
+ expect(pay_with_iyzico_initialize['token']).not_to be_nil
84
+ expect(pay_with_iyzico_initialize['payWithIyzicoPageUrl']).not_to be_nil
85
+ rescue
86
+ $stderr.puts 'oops'
87
+ raise
88
+ end
89
+ end
90
+
91
+ it 'should retrieve checkout form result' do
92
+ # This test needs manual on sandbox environment. So it does not contain any assertions.
93
+ request = {
94
+ locale: Iyzipay::Model::Locale::TR,
95
+ conversationId: '123456789',
96
+ token: '408c1036-1f89-41cd-8e87-4c4d8e83501c'
97
+ }
98
+ pay_with_iyzico_retrieve_result = Iyzipay::Model::PayWithIyzicoRetrieve.new.retrieve(request, @options)
99
+ begin
100
+ $stdout.puts pay_with_iyzico_retrieve_result.inspect
101
+ rescue
102
+ $stderr.puts 'oops'
103
+ raise
104
+ end
105
+ end
106
+
107
+ after :each do
108
+ end
109
+ end
@@ -0,0 +1,320 @@
1
+ # coding: utf-8
2
+
3
+ require_relative 'spec_helper'
4
+ require_relative 'builder'
5
+
6
+ RSpec.describe 'Iyzipay' do
7
+ before :all do
8
+ @options = Iyzipay::Options.new
9
+ @options.api_key = SpecOptions::API_KEY
10
+ @options.secret_key = SpecOptions::SECRET_KEY
11
+ @options.base_url = SpecOptions::BASE_URL
12
+ end
13
+
14
+ it 'should create listing payment' do
15
+ payment_card = {
16
+ cardHolderName: 'John Doe',
17
+ cardNumber: '5528790000000008',
18
+ expireYear: '2030',
19
+ expireMonth: '12',
20
+ cvc: '123',
21
+ registerCard: 0
22
+ }
23
+ buyer = {
24
+ id: 'BY789',
25
+ name: 'John',
26
+ surname: 'Doe',
27
+ gsmNumber: '+905350000000',
28
+ email: 'email@email.com',
29
+ identityNumber: '74300864791',
30
+ lastLoginDate: '2015-10-05 12:43:35',
31
+ registrationDate: '2013-04-21 15:12:09',
32
+ registrationAddress: 'Nidakule Göztepe, Merdivenköy Mah. Bora Sok. No:1',
33
+ ip: '85.34.78.112',
34
+ city: 'Istanbul',
35
+ country: 'Turkey',
36
+ zipCode: '34732'
37
+ }
38
+ address = {
39
+ contactName: 'Jane Doe',
40
+ city: 'Istanbul',
41
+ country: 'Turkey',
42
+ address: 'Nidakule Göztepe, Merdivenköy Mah. Bora Sok. No:1',
43
+ zipCode: '34732'
44
+ }
45
+
46
+ item1 = {
47
+ id: 'BI101',
48
+ name: 'Binocular',
49
+ category1: 'Collectibles',
50
+ category2: 'Accessories',
51
+ itemType: Iyzipay::Model::BasketItemType::PHYSICAL,
52
+ price: '0.3'
53
+ }
54
+ item2 = {
55
+ id: 'BI102',
56
+ name: 'Game code',
57
+ category1: 'Game',
58
+ category2: 'Online Game Items',
59
+ itemType: Iyzipay::Model::BasketItemType::VIRTUAL,
60
+ price: '0.5'
61
+ }
62
+ item3 = {
63
+ id: 'BI103',
64
+ name: 'Usb',
65
+ category1: 'Electronics',
66
+ category2: 'Usb / Cable',
67
+ itemType: Iyzipay::Model::BasketItemType::PHYSICAL,
68
+ price: '0.2'
69
+ }
70
+ request = {
71
+ locale: Iyzipay::Model::Locale::TR,
72
+ conversationId: '123456789',
73
+ price: '1',
74
+ paidPrice: '1.1',
75
+ currency: Iyzipay::Model::Currency::TRY,
76
+ installment: 1,
77
+ basketId: 'B67832',
78
+ paymentChannel: Iyzipay::Model::PaymentChannel::WEB,
79
+ paymentGroup: Iyzipay::Model::PaymentGroup::LISTING,
80
+ paymentCard: payment_card,
81
+ buyer: buyer,
82
+ billingAddress: address,
83
+ shippingAddress: address,
84
+ basketItems: [item1, item2, item3]
85
+ }
86
+ payment = Iyzipay::Model::Payment.new.create(request, @options)
87
+ begin
88
+ $stdout.puts payment.inspect
89
+ payment = JSON.parse(payment)
90
+ expect(payment['status']).to eq('success')
91
+ expect(payment['locale']).to eq('tr')
92
+ expect(payment['systemTime']).not_to be_nil
93
+ expect(payment['conversationId']).to eq('123456789')
94
+ expect(payment['price']).to eq(1)
95
+ expect(payment['paidPrice']).to eq(1.1)
96
+ expect(payment['installment']).to eq(1)
97
+ rescue
98
+ $stderr.puts 'oops'
99
+ raise
100
+ end
101
+ end
102
+
103
+ it 'should create marketplace payment' do
104
+ # create sub merchant
105
+ sub_merchant = Builder::SubMerchantBuilder.new.create_personal_sub_merchant(@options)
106
+
107
+ payment_card = {
108
+ cardHolderName: 'John Doe',
109
+ cardNumber: '5528790000000008',
110
+ expireYear: '2030',
111
+ expireMonth: '12',
112
+ cvc: '123',
113
+ registerCard: 0
114
+ }
115
+ buyer = {
116
+ id: 'BY789',
117
+ name: 'John',
118
+ surname: 'Doe',
119
+ gsmNumber: '+905350000000',
120
+ email: 'email@email.com',
121
+ identityNumber: '74300864791',
122
+ lastLoginDate: '2015-10-05 12:43:35',
123
+ registrationDate: '2013-04-21 15:12:09',
124
+ registrationAddress: 'Nidakule Göztepe, Merdivenköy Mah. Bora Sok. No:1',
125
+ ip: '85.34.78.112',
126
+ city: 'Istanbul',
127
+ country: 'Turkey',
128
+ zipCode: '34732'
129
+ }
130
+ address = {
131
+ contactName: 'Jane Doe',
132
+ city: 'Istanbul',
133
+ country: 'Turkey',
134
+ address: 'Nidakule Göztepe, Merdivenköy Mah. Bora Sok. No:1',
135
+ zipCode: '34732'
136
+ }
137
+
138
+ item1 = {
139
+ id: 'BI101',
140
+ name: 'Binocular',
141
+ category1: 'Collectibles',
142
+ category2: 'Accessories',
143
+ itemType: Iyzipay::Model::BasketItemType::PHYSICAL,
144
+ price: '0.3',
145
+ subMerchantKey: sub_merchant['subMerchantKey'],
146
+ subMerchantPrice: '0.27'
147
+ }
148
+ item2 = {
149
+ id: 'BI102',
150
+ name: 'Game code',
151
+ category1: 'Game',
152
+ category2: 'Online Game Items',
153
+ itemType: Iyzipay::Model::BasketItemType::VIRTUAL,
154
+ price: '0.5',
155
+ subMerchantKey: sub_merchant['subMerchantKey'],
156
+ subMerchantPrice: '0.42'
157
+ }
158
+ item3 = {
159
+ id: 'BI103',
160
+ name: 'Usb',
161
+ category1: 'Electronics',
162
+ category2: 'Usb / Cable',
163
+ itemType: Iyzipay::Model::BasketItemType::PHYSICAL,
164
+ price: '0.2',
165
+ subMerchantKey: sub_merchant['subMerchantKey'],
166
+ subMerchantPrice: '0.18'
167
+ }
168
+ request = {
169
+ locale: Iyzipay::Model::Locale::TR,
170
+ conversationId: '123456789',
171
+ price: '1',
172
+ paidPrice: '1.1',
173
+ currency: Iyzipay::Model::Currency::TRY,
174
+ installment: 1,
175
+ basketId: 'B67832',
176
+ paymentChannel: Iyzipay::Model::PaymentChannel::WEB,
177
+ paymentGroup: Iyzipay::Model::PaymentGroup::PRODUCT,
178
+ paymentCard: payment_card,
179
+ buyer: buyer,
180
+ billingAddress: address,
181
+ shippingAddress: address,
182
+ basketItems: [item1, item2, item3]
183
+ }
184
+ payment = Iyzipay::Model::Payment.new.create(request, @options)
185
+ begin
186
+ $stdout.puts payment.inspect
187
+ payment = JSON.parse(payment)
188
+ expect(payment['status']).to eq('success')
189
+ expect(payment['locale']).to eq('tr')
190
+ expect(payment['systemTime']).not_to be_nil
191
+ expect(payment['conversationId']).to eq('123456789')
192
+ expect(payment['price']).to eq(1)
193
+ expect(payment['paidPrice']).to eq(1.1)
194
+ expect(payment['installment']).to eq(1)
195
+ rescue
196
+ $stderr.puts 'oops'
197
+ raise
198
+ end
199
+ end
200
+
201
+ it 'should create payment with registered card' do
202
+ # create card
203
+ card = Builder::CardBuilder.new.create_card(@options)
204
+
205
+ payment_card = {
206
+ cardUserKey: card['cardUserKey'],
207
+ cardToken: card['cardToken']
208
+ }
209
+ buyer = {
210
+ id: 'BY789',
211
+ name: 'John',
212
+ surname: 'Doe',
213
+ gsmNumber: '+905350000000',
214
+ email: 'email@email.com',
215
+ identityNumber: '74300864791',
216
+ lastLoginDate: '2015-10-05 12:43:35',
217
+ registrationDate: '2013-04-21 15:12:09',
218
+ registrationAddress: 'Nidakule Göztepe, Merdivenköy Mah. Bora Sok. No:1',
219
+ ip: '85.34.78.112',
220
+ city: 'Istanbul',
221
+ country: 'Turkey',
222
+ zipCode: '34732'
223
+ }
224
+ address = {
225
+ contactName: 'Jane Doe',
226
+ city: 'Istanbul',
227
+ country: 'Turkey',
228
+ address: 'Nidakule Göztepe, Merdivenköy Mah. Bora Sok. No:1',
229
+ zipCode: '34732'
230
+ }
231
+
232
+ item1 = {
233
+ id: 'BI101',
234
+ name: 'Binocular',
235
+ category1: 'Collectibles',
236
+ category2: 'Accessories',
237
+ itemType: Iyzipay::Model::BasketItemType::PHYSICAL,
238
+ price: '0.3'
239
+ }
240
+ item2 = {
241
+ id: 'BI102',
242
+ name: 'Game code',
243
+ category1: 'Game',
244
+ category2: 'Online Game Items',
245
+ itemType: Iyzipay::Model::BasketItemType::VIRTUAL,
246
+ price: '0.5'
247
+ }
248
+ item3 = {
249
+ id: 'BI103',
250
+ name: 'Usb',
251
+ category1: 'Electronics',
252
+ category2: 'Usb / Cable',
253
+ itemType: Iyzipay::Model::BasketItemType::PHYSICAL,
254
+ price: '0.2'
255
+ }
256
+ request = {
257
+ locale: Iyzipay::Model::Locale::TR,
258
+ conversationId: '123456789',
259
+ price: '1',
260
+ paidPrice: '1.1',
261
+ currency: Iyzipay::Model::Currency::TRY,
262
+ installment: 1,
263
+ basketId: 'B67832',
264
+ paymentChannel: Iyzipay::Model::PaymentChannel::WEB,
265
+ paymentGroup: Iyzipay::Model::PaymentGroup::LISTING,
266
+ paymentCard: payment_card,
267
+ buyer: buyer,
268
+ billingAddress: address,
269
+ shippingAddress: address,
270
+ basketItems: [item1, item2, item3]
271
+ }
272
+ payment = Iyzipay::Model::Payment.new.create(request, @options)
273
+ begin
274
+ $stdout.puts payment.inspect
275
+ payment = JSON.parse(payment)
276
+ expect(payment['status']).to eq('success')
277
+ expect(payment['locale']).to eq('tr')
278
+ expect(payment['systemTime']).not_to be_nil
279
+ expect(payment['conversationId']).to eq('123456789')
280
+ expect(payment['price']).to eq(1)
281
+ expect(payment['paidPrice']).to eq(1.1)
282
+ expect(payment['installment']).to eq(1)
283
+ rescue
284
+ $stderr.puts 'oops'
285
+ raise
286
+ end
287
+ end
288
+
289
+ it 'should retrieve payment' do
290
+ # create payment
291
+ payment = Builder::PaymentBuilder.new.create_standard_listing_payment(@options)
292
+
293
+ request = {
294
+ locale: Iyzipay::Model::Locale::TR,
295
+ conversationId: '123456789',
296
+ paymentId: payment['paymentId'],
297
+ paymentConversationId: '123456789'
298
+ }
299
+
300
+ retrieved_payment = Iyzipay::Model::Payment.new.retrieve(request, @options)
301
+ begin
302
+ $stdout.puts retrieved_payment.inspect
303
+ retrieved_payment = JSON.parse(retrieved_payment)
304
+ expect(retrieved_payment['status']).to eq('success')
305
+ expect(retrieved_payment['locale']).to eq('tr')
306
+ expect(retrieved_payment['systemTime']).not_to be_nil
307
+ expect(retrieved_payment['conversationId']).to eq('123456789')
308
+ expect(retrieved_payment['price']).to eq(1)
309
+ expect(retrieved_payment['paidPrice']).to eq(1.1)
310
+ expect(retrieved_payment['installment']).to eq(1)
311
+ expect(retrieved_payment['paymentId']).to eq(payment['paymentId'])
312
+ rescue
313
+ $stderr.puts 'oops'
314
+ raise
315
+ end
316
+ end
317
+
318
+ after :each do
319
+ end
320
+ end