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,74 @@
1
+ # coding: utf-8
2
+
3
+ require_relative '../spec_helper'
4
+
5
+ module Builder
6
+ class PeccoInitializeBuilder
7
+
8
+ def create_pecco_initialize(options)
9
+ buyer = {
10
+ id: 'BY789',
11
+ name: 'John',
12
+ surname: 'Doe',
13
+ identityNumber: '74300864791',
14
+ email: 'email@email.com',
15
+ gsmNumber: '+905350000000',
16
+ registrationDate: '2013-04-21 15:12:09',
17
+ lastLoginDate: '2015-10-05 12:43:35',
18
+ registrationAddress: 'Nidakule Göztepe, Merdivenköy Mah. Bora Sok. No:1',
19
+ city: 'Istanbul',
20
+ country: 'Turkey',
21
+ zipCode: '34732',
22
+ ip: '85.34.78.112'
23
+ }
24
+ address = {
25
+ address: 'Nidakule Göztepe, Merdivenköy Mah. Bora Sok. No:1',
26
+ zipCode: '34732',
27
+ contactName: 'John Doe',
28
+ city: 'Istanbul',
29
+ country: 'Turkey'
30
+ }
31
+
32
+ item1 = {
33
+ id: 'BI101',
34
+ name: 'Binocular',
35
+ category1: 'Collectibles',
36
+ category2: 'Accessories',
37
+ itemType: Iyzipay::Model::BasketItemType::PHYSICAL,
38
+ price: '30000'
39
+ }
40
+ item2 = {
41
+ id: 'BI102',
42
+ name: 'Game code',
43
+ category1: 'Game',
44
+ category2: 'Online Game Items',
45
+ itemType: Iyzipay::Model::BasketItemType::VIRTUAL,
46
+ price: '50000'
47
+ }
48
+ item3 = {
49
+ id: 'BI103',
50
+ name: 'Usb',
51
+ category1: 'Electronics',
52
+ category2: 'Usb / Cable',
53
+ itemType: Iyzipay::Model::BasketItemType::PHYSICAL,
54
+ price: '20000'
55
+ }
56
+ request = {
57
+ locale: Iyzipay::Model::Locale::TR,
58
+ conversationId: '123456789',
59
+ price: '100000',
60
+ paidPrice: '120000',
61
+ basketId: 'B67832',
62
+ paymentGroup: Iyzipay::Model::PaymentGroup::LISTING,
63
+ callbackUrl: 'https://www.merchant.com/callback',
64
+ currency: Iyzipay::Model::Currency::IRR,
65
+ buyer: buyer,
66
+ billingAddress: address,
67
+ shippingAddress: address,
68
+ basketItems: [item1, item2, item3]
69
+ }
70
+ pecco_initialize = Iyzipay::Model::PeccoInitialize.new.create(request, options)
71
+ JSON.parse(pecco_initialize)
72
+ end
73
+ end
74
+ end
@@ -0,0 +1,91 @@
1
+ # coding: utf-8
2
+
3
+ require_relative '../spec_helper'
4
+
5
+ module Builder
6
+ class SubMerchantBuilder
7
+
8
+ def create_personal_sub_merchant(options)
9
+ random_number = Random.rand(11**11).to_s
10
+ request = {
11
+ locale: Iyzipay::Model::Locale::TR,
12
+ conversationId: '123456789',
13
+ subMerchantExternalId: 'B' + random_number,
14
+ subMerchantType: Iyzipay::Model::SubMerchantType::PERSONAL,
15
+ address: 'Nidakule Göztepe, Merdivenköy Mah. Bora Sok. No:1',
16
+ contactName: 'John',
17
+ contactSurname: 'Doe',
18
+ email: random_number + '@email.com',
19
+ gsmNumber: '+905350000000',
20
+ name: 'John\'s market',
21
+ iban: 'TR180006200119000006672315',
22
+ identityNumber: random_number,
23
+ currency: Iyzipay::Model::Currency::TRY
24
+ }
25
+ sub_merchant = Iyzipay::Model::SubMerchant.new.create(request, options)
26
+ JSON.parse(sub_merchant)
27
+ end
28
+
29
+ def create_private_sub_merchant(options)
30
+ random_number = Random.rand(11**11).to_s
31
+ request = {
32
+ locale: Iyzipay::Model::Locale::TR,
33
+ conversationId: '123456789',
34
+ subMerchantExternalId: 'B' + random_number,
35
+ subMerchantType: Iyzipay::Model::SubMerchantType::PRIVATE_COMPANY,
36
+ address: 'Nidakule Göztepe, Merdivenköy Mah. Bora Sok. No:1',
37
+ taxOffice: 'Tax office',
38
+ legalCompanyTitle: 'John Doe inc',
39
+ email: random_number + '@email.com',
40
+ gsmNumber: '+905350000000',
41
+ name: 'John\'s market',
42
+ iban: 'TR180006200119000006672315',
43
+ identityNumber: '31300864726',
44
+ currency: Iyzipay::Model::Currency::TRY
45
+ }
46
+ sub_merchant = Iyzipay::Model::SubMerchant.new.create(request, options)
47
+ JSON.parse(sub_merchant)
48
+ end
49
+
50
+ def create_limited_sub_merchant(options)
51
+ random_number = Random.rand(11**11).to_s
52
+ request = {
53
+ locale: Iyzipay::Model::Locale::TR,
54
+ conversationId: '123456789',
55
+ subMerchantExternalId: 'B' + random_number,
56
+ subMerchantType: Iyzipay::Model::SubMerchantType::LIMITED_OR_JOINT_STOCK_COMPANY,
57
+ address: 'Nidakule Göztepe, Merdivenköy Mah. Bora Sok. No:1',
58
+ taxOffice: 'Tax office',
59
+ taxNumber: '9261877',
60
+ legalCompanyTitle: 'XYZ inc',
61
+ email: 'email@submerchantemail.com',
62
+ gsmNumber: '+905350000000',
63
+ name: 'John\'s market',
64
+ iban: 'TR180006200119000006672315',
65
+ currency: Iyzipay::Model::Currency::TRY
66
+ }
67
+ sub_merchant = Iyzipay::Model::SubMerchant.new.create(request, options)
68
+ JSON.parse(sub_merchant)
69
+ end
70
+
71
+ def create_limited_sub_merchant_with_external_key(external_key, options)
72
+ request = {
73
+ locale: Iyzipay::Model::Locale::TR,
74
+ conversationId: '123456789',
75
+ subMerchantExternalId: external_key,
76
+ subMerchantType: Iyzipay::Model::SubMerchantType::LIMITED_OR_JOINT_STOCK_COMPANY,
77
+ address: 'Nidakule Göztepe, Merdivenköy Mah. Bora Sok. No:1',
78
+ taxOffice: 'Tax office',
79
+ taxNumber: '9261877',
80
+ legalCompanyTitle: 'XYZ inc',
81
+ email: 'email@submerchantemail.com',
82
+ gsmNumber: '+905350000000',
83
+ name: 'John\'s market',
84
+ iban: 'TR180006200119000006672315',
85
+ currency: Iyzipay::Model::Currency::TRY
86
+ }
87
+ sub_merchant = Iyzipay::Model::SubMerchant.new.create(request, options)
88
+ JSON.parse(sub_merchant)
89
+ end
90
+ end
91
+ end
@@ -0,0 +1,72 @@
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 cancel payment' do
15
+ payment = Builder::PaymentBuilder.new.create_standard_listing_payment(@options)
16
+
17
+ request = {
18
+ locale: Iyzipay::Model::Locale::TR,
19
+ conversationId: '123456789',
20
+ paymentId: payment['paymentId'],
21
+ ip: '85.34.78.112'
22
+ }
23
+ cancel = Iyzipay::Model::Cancel.new.create(request, @options)
24
+ begin
25
+ $stdout.puts cancel.inspect
26
+ cancel = JSON.parse(cancel)
27
+ expect(cancel['status']).to eq('success')
28
+ expect(cancel['locale']).to eq('tr')
29
+ expect(cancel['systemTime']).not_to be_nil
30
+ expect(cancel['conversationId']).to eq('123456789')
31
+ expect(cancel['paymentId']).to eq(payment['paymentId'])
32
+ expect(cancel['price']).to eq(1.10000000)
33
+ expect(cancel['currency']).to eq('TRY')
34
+ expect(cancel['authCode']).not_to be_nil
35
+ rescue
36
+ $stderr.puts 'oops'
37
+ raise
38
+ end
39
+ end
40
+
41
+ it 'should cancel payment with reason and description' do
42
+ payment = Builder::PaymentBuilder.new.create_standard_listing_payment(@options)
43
+
44
+ request = {
45
+ locale: Iyzipay::Model::Locale::TR,
46
+ conversationId: '123456789',
47
+ paymentId: payment['paymentId'],
48
+ ip: '85.34.78.112',
49
+ reason: Iyzipay::Model::RefundReason::OTHER,
50
+ description: 'customer requested for default sample'
51
+ }
52
+ cancel = Iyzipay::Model::Cancel.new.create(request, @options)
53
+ begin
54
+ $stdout.puts cancel.inspect
55
+ cancel = JSON.parse(cancel)
56
+ expect(cancel['status']).to eq('success')
57
+ expect(cancel['locale']).to eq('tr')
58
+ expect(cancel['systemTime']).not_to be_nil
59
+ expect(cancel['conversationId']).to eq('123456789')
60
+ expect(cancel['paymentId']).to eq(payment['paymentId'])
61
+ expect(cancel['price']).to eq(1.10000000)
62
+ expect(cancel['currency']).to eq('TRY')
63
+ expect(cancel['authCode']).not_to be_nil
64
+ rescue
65
+ $stderr.puts 'oops'
66
+ raise
67
+ end
68
+ end
69
+
70
+ after :each do
71
+ end
72
+ end
@@ -0,0 +1,153 @@
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 user and add card' do
15
+ card_information = {
16
+ cardAlias: 'card alias',
17
+ cardHolderName: 'John Doe',
18
+ cardNumber: '5528790000000008',
19
+ expireYear: '2030',
20
+ expireMonth: '12'
21
+ }
22
+ request = {
23
+ locale: Iyzipay::Model::Locale::TR,
24
+ conversationId: '123456789',
25
+ email: 'email@email.com',
26
+ externalId: 'external id',
27
+ card: card_information
28
+ }
29
+ card = Iyzipay::Model::Card.new.create(request, @options)
30
+ begin
31
+ $stdout.puts card.inspect
32
+ card = JSON.parse(card)
33
+ expect(card['status']).to eq('success')
34
+ expect(card['locale']).to eq('tr')
35
+ expect(card['systemTime']).not_to be_nil
36
+ expect(card['conversationId']).to eq('123456789')
37
+ expect(card['externalId']).to eq('external id')
38
+ expect(card['email']).to eq('email@email.com')
39
+ expect(card['cardUserKey']).to eq(card['cardUserKey'])
40
+ expect(card['cardToken']).to eq(card['cardToken'])
41
+ expect(card['cardAlias']).to eq('card alias')
42
+ expect(card['binNumber']).to eq('552879')
43
+ expect(card['cardType']).to eq('CREDIT_CARD')
44
+ expect(card['cardAssociation']).to eq('MASTER_CARD')
45
+ expect(card['cardFamily']).to eq('Paraf')
46
+ expect(card['cardBankCode']).to eq(12)
47
+ expect(card['cardBankName']).to eq('Halk Bankası')
48
+ rescue
49
+ $stderr.puts 'oops'
50
+ raise
51
+ end
52
+ end
53
+
54
+ it 'should create card and add card to existing user' do
55
+ # create card user
56
+ card = Builder::CardBuilder.new.create_card(@options)
57
+
58
+ card_information = {
59
+ cardAlias: 'card alias',
60
+ cardHolderName: 'John Doe',
61
+ cardNumber: '5528790000000008',
62
+ expireYear: '2030',
63
+ expireMonth: '12'
64
+ }
65
+ request = {
66
+ locale: Iyzipay::Model::Locale::TR,
67
+ conversationId: '123456789',
68
+ email: 'email@email.com',
69
+ cardUserKey: card['cardUserKey'],
70
+ card: card_information
71
+ }
72
+ card = Iyzipay::Model::Card.new.create(request, @options)
73
+ begin
74
+ $stdout.puts card.inspect
75
+ card = JSON.parse(card)
76
+ expect(card['status']).to eq('success')
77
+ expect(card['locale']).to eq('tr')
78
+ expect(card['systemTime']).not_to be_nil
79
+ expect(card['conversationId']).to eq('123456789')
80
+ expect(card['email']).to eq('email@email.com')
81
+ expect(card['cardUserKey']).to eq(card['cardUserKey'])
82
+ expect(card['cardToken']).to eq(card['cardToken'])
83
+ expect(card['cardAlias']).to eq('card alias')
84
+ expect(card['binNumber']).to eq('552879')
85
+ expect(card['cardType']).to eq('CREDIT_CARD')
86
+ expect(card['cardAssociation']).to eq('MASTER_CARD')
87
+ expect(card['cardFamily']).to eq('Paraf')
88
+ expect(card['cardBankCode']).to eq(12)
89
+ expect(card['cardBankName']).to eq('Halk Bankası')
90
+ rescue
91
+ $stderr.puts 'oops'
92
+ raise
93
+ end
94
+ end
95
+
96
+ it 'should delete card' do
97
+ # create card
98
+ card = Builder::CardBuilder.new.create_card(@options)
99
+
100
+ request = {
101
+ locale: Iyzipay::Model::Locale::TR,
102
+ conversationId: '123456789',
103
+ cardToken: card['cardToken'],
104
+ cardUserKey: card['cardUserKey']
105
+ }
106
+ card = Iyzipay::Model::Card.new.delete(request, @options)
107
+ begin
108
+ $stdout.puts card.inspect
109
+ card = JSON.parse(card)
110
+ expect(card['status']).to eq('success')
111
+ expect(card['locale']).to eq('tr')
112
+ expect(card['systemTime']).not_to be_nil
113
+ expect(card['conversationId']).to eq('123456789')
114
+ rescue
115
+ $stderr.puts 'oops'
116
+ raise
117
+ end
118
+ end
119
+
120
+ it 'should retrieve card' do
121
+ card = Builder::CardBuilder.new.create_card(@options)
122
+
123
+ request = {
124
+ locale: Iyzipay::Model::Locale::TR,
125
+ conversationId: '123456789',
126
+ cardUserKey: card['cardUserKey']
127
+ }
128
+ card_list = Iyzipay::Model::CardList.new.retrieve(request, @options)
129
+ begin
130
+ $stdout.puts card_list.inspect
131
+ card_list = JSON.parse(card_list)
132
+ expect(card_list['status']).to eq('success')
133
+ expect(card_list['locale']).to eq('tr')
134
+ expect(card_list['systemTime']).not_to be_nil
135
+ expect(card_list['conversationId']).to eq('123456789')
136
+ expect(card_list['cardUserKey']).to eq(card['cardUserKey'])
137
+ expect(card_list['cardDetails'][0]['cardToken']).to eq(card['cardToken'])
138
+ expect(card_list['cardDetails'][0]['cardAlias']).to eq('card alias')
139
+ expect(card_list['cardDetails'][0]['binNumber']).to eq('552879')
140
+ expect(card_list['cardDetails'][0]['cardType']).to eq('CREDIT_CARD')
141
+ expect(card_list['cardDetails'][0]['cardAssociation']).to eq('MASTER_CARD')
142
+ expect(card_list['cardDetails'][0]['cardFamily']).to eq('Paraf')
143
+ expect(card_list['cardDetails'][0]['cardBankCode']).to eq(12)
144
+ expect(card_list['cardDetails'][0]['cardBankName']).to eq('Halk Bankası')
145
+ rescue
146
+ $stderr.puts 'oops'
147
+ raise
148
+ end
149
+ end
150
+
151
+ after :each do
152
+ end
153
+ end
@@ -0,0 +1,113 @@
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 initialize checkout form for standard merchant' do
15
+ buyer = {
16
+ id: 'BY789',
17
+ name: 'John',
18
+ surname: 'Doe',
19
+ gsmNumber: '+905350000000',
20
+ email: 'email@email.com',
21
+ identityNumber: '74300864791',
22
+ lastLoginDate: '2015-10-05 12:43:35',
23
+ registrationDate: '2013-04-21 15:12:09',
24
+ registrationAddress: 'Nidakule Göztepe, Merdivenköy Mah. Bora Sok. No:1',
25
+ ip: '85.34.78.112',
26
+ city: 'Istanbul',
27
+ country: 'Turkey',
28
+ zipCode: '34732'
29
+ }
30
+ address = {
31
+ contactName: 'Jane Doe',
32
+ city: 'Istanbul',
33
+ country: 'Turkey',
34
+ address: 'Nidakule Göztepe, Merdivenköy Mah. Bora Sok. No:1',
35
+ zipCode: '34732'
36
+ }
37
+
38
+ item1 = {
39
+ id: 'BI101',
40
+ name: 'Binocular',
41
+ category1: 'Collectibles',
42
+ category2: 'Accessories',
43
+ itemType: Iyzipay::Model::BasketItemType::PHYSICAL,
44
+ price: '0.3'
45
+ }
46
+ item2 = {
47
+ id: 'BI102',
48
+ name: 'Game code',
49
+ category1: 'Game',
50
+ category2: 'Online Game Items',
51
+ itemType: Iyzipay::Model::BasketItemType::VIRTUAL,
52
+ price: '0.5'
53
+ }
54
+ item3 = {
55
+ id: 'BI103',
56
+ name: 'Usb',
57
+ category1: 'Electronics',
58
+ category2: 'Usb / Cable',
59
+ itemType: Iyzipay::Model::BasketItemType::PHYSICAL,
60
+ price: '0.2'
61
+ }
62
+ request = {
63
+ locale: Iyzipay::Model::Locale::TR,
64
+ conversationId: '123456789',
65
+ price: '1',
66
+ paidPrice: '1.2',
67
+ currency: Iyzipay::Model::Currency::TRY,
68
+ basketId: 'B67832',
69
+ paymentGroup: Iyzipay::Model::PaymentGroup::LISTING,
70
+ callbackUrl: 'https://www.merchant.com/callback',
71
+ enabledInstallments: [2, 3, 6, 9],
72
+ buyer: buyer,
73
+ billingAddress: address,
74
+ shippingAddress: address,
75
+ basketItems: [item1, item2, item3]
76
+ }
77
+ checkout_form_initialize = Iyzipay::Model::CheckoutFormInitialize.new.create(request, @options)
78
+
79
+ begin
80
+ $stdout.puts checkout_form_initialize.inspect
81
+ checkout_form_initialize = JSON.parse(checkout_form_initialize)
82
+ expect(checkout_form_initialize['status']).to eq('success')
83
+ expect(checkout_form_initialize['locale']).to eq('tr')
84
+ expect(checkout_form_initialize['systemTime']).not_to be_nil
85
+ expect(checkout_form_initialize['token']).not_to be_nil
86
+ expect(checkout_form_initialize['checkoutFormContent']).not_to be_nil
87
+ rescue
88
+ $stderr.puts 'oops'
89
+ raise
90
+ end
91
+ end
92
+
93
+ it 'should retrieve checkout form result' do
94
+ # This test needs manual on sandbox environment. So it does not contain any assertions.
95
+ checkout_form_initialize = Builder::CheckoutFormBuilder.new.create_checkout_form_initialize(@options)
96
+
97
+ request = {
98
+ locale: Iyzipay::Model::Locale::TR,
99
+ conversationId: '123456789',
100
+ token: checkout_form_initialize['token']
101
+ }
102
+ checkout_form_payment = Iyzipay::Model::CheckoutForm.new.retrieve(request, @options)
103
+ begin
104
+ $stdout.puts checkout_form_payment.inspect
105
+ rescue
106
+ $stderr.puts 'oops'
107
+ raise
108
+ end
109
+ end
110
+
111
+ after :each do
112
+ end
113
+ end