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,7 @@
1
+ source 'https://rubygems.org'
2
+
3
+ gemspec path: '..'
4
+
5
+ group :development do
6
+ gem 'nokogiri', '1.6.8.1'
7
+ end
@@ -0,0 +1,24 @@
1
+ lib = File.expand_path('../lib', __FILE__)
2
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
3
+
4
+ Gem::Specification.new do |s|
5
+ s.name = 'iyzipay-subscriptions'
6
+ s.version = '1.0.0'
7
+ s.platform = Gem::Platform::RUBY
8
+ s.required_ruby_version = '>= 1.9.3'
9
+ s.summary = %q{iyzipay api ruby client for subscriptions feature}
10
+ s.description = %q{iyzipay api ruby client for subscriptions feature. You can sign up for an iyzico account at https://iyzico.com}
11
+ s.authors = ['Iyzico', 'Mehmet Celik']
12
+ s.email = 'mehmetcelik4@gmail.com'
13
+ s.files = `git ls-files`.split("\n")
14
+ s.test_files = `git ls-files -- {spec}/*`.split("\n")
15
+ s.homepage = 'http://rubygems.org/gems/iyzipay-subscriptions'
16
+ s.license = 'MIT'
17
+
18
+ s.add_runtime_dependency 'rack', '~> 2.0'
19
+ s.add_runtime_dependency 'rest-client', '~> 1.8'
20
+ s.add_development_dependency 'rspec', '~>3.5.0'
21
+ s.add_development_dependency 'rspec-rails', '~>3.5.0'
22
+ s.add_development_dependency 'nokogiri', '~>1.8.2'
23
+ s.require_paths = ['lib']
24
+ end
@@ -0,0 +1,16 @@
1
+ #!/usr/bin/env ruby
2
+ # coding: utf-8
3
+
4
+ require 'json'
5
+ require 'rest-client'
6
+ require 'base64'
7
+
8
+ module Iyzipay
9
+ end
10
+
11
+ require_relative 'iyzipay/http_client'
12
+ require_relative 'iyzipay/pki_builder'
13
+ require_relative 'iyzipay/iyzipay_resource'
14
+ require_relative 'iyzipay/iyzipay_resource_v2'
15
+ require_relative 'iyzipay/model'
16
+ require_relative 'iyzipay/options'
@@ -0,0 +1,39 @@
1
+ module Iyzipay
2
+ class HttpClient
3
+ def self.get(url, header={})
4
+ RestClient.get(url, header)
5
+ end
6
+
7
+ def self.post(url, header, content)
8
+ RestClient.post(url, content, header)
9
+ end
10
+
11
+ def self.put(url, header, content)
12
+ RestClient.put(url, content, header)
13
+ end
14
+
15
+ def self.delete(url, headers={}, content, &block)
16
+ RestClient::Request.execute(:method => :delete, :url => url, :payload => content, :headers => headers, &block)
17
+ end
18
+
19
+ # Those methods to get failed status requests' responses
20
+ def self.get_even_on_error(url, header={})
21
+ RestClient.get(url, header) do |response, request, result|
22
+ {response: response, request: request, result: result}
23
+ end
24
+ end
25
+
26
+ def self.post_even_on_error(url, header, content)
27
+ RestClient.post(url, content, header) do |response, request, result|
28
+ {response: response, request: request, result: result}
29
+ end
30
+ end
31
+
32
+ def self.put_even_on_error(url, header, content)
33
+ RestClient.put(url, content, header) do |response, request, result|
34
+ {response: response, request: request, result: result}
35
+ end
36
+ end
37
+
38
+ end
39
+ end
@@ -0,0 +1,60 @@
1
+ module Iyzipay
2
+ class IyzipayResource
3
+
4
+ AUTHORIZATION_HEADER_NAME = 'Authorization'
5
+ RANDOM_HEADER_NAME = 'x-iyzi-rnd';
6
+ AUTHORIZATION_HEADER_STRING = 'IYZWS %s:%s'
7
+ RANDOM_STRING_SIZE = 8
8
+ RANDOM_CHARS = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789'
9
+
10
+ def get_http_header(pki_string = nil, options = nil, authorize_request = true)
11
+ header = {:accept => 'application/json',
12
+ :'content-type' => 'application/json'}
13
+
14
+ if authorize_request
15
+ random_header_value = random_string(RANDOM_STRING_SIZE)
16
+ header[:'Authorization'] = "#{prepare_authorization_string(pki_string, random_header_value, options)}"
17
+ header[:'x-iyzi-rnd'] = "#{random_header_value}"
18
+ header[:'x-iyzi-client-version'] = 'iyzipay-ruby-1.0.45'
19
+ end
20
+
21
+ header
22
+ end
23
+
24
+ def get_plain_http_header
25
+ get_http_header(nil, false)
26
+ end
27
+
28
+ def prepare_authorization_string(pki_string, random_header_value, options)
29
+ hash_digest = calculate_hash(pki_string, random_header_value, options)
30
+ format_header_string(options.api_key, hash_digest)
31
+ end
32
+
33
+ def json_decode(response, raw_result)
34
+ json_result = JSON::parse(raw_result)
35
+ response.from_json(json_result)
36
+ end
37
+
38
+ def calculate_hash(pki_string, random_header_value, options)
39
+ Digest::SHA1.base64digest("#{options.api_key}#{random_header_value}#{options.secret_key}#{pki_string}")
40
+ end
41
+
42
+ def format_header_string(*args)
43
+ sprintf(AUTHORIZATION_HEADER_STRING, *args)
44
+ end
45
+
46
+ def random_string(string_length)
47
+ random_string = ''
48
+ string_length.times do
49
+ random_string << RANDOM_CHARS.split('').sample
50
+ end
51
+ random_string
52
+ end
53
+
54
+ def to_pki_string(request)
55
+ PkiBuilder.new.append(:locale, request[:locale]).
56
+ append(:conversationId, request[:conversationId]).
57
+ get_request_string
58
+ end
59
+ end
60
+ end
@@ -0,0 +1,39 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Iyzipay
4
+ class IyzipayResourceV2 < IyzipayResource
5
+ AUTHORIZATION_HEADER_STRING = 'IYZWSv2'
6
+
7
+ def get_http_header(options, uri, pki_string = nil, authorize_request = true)
8
+ header = {
9
+ accept: 'application/json',
10
+ 'content-type': 'application/json'
11
+ }
12
+ if authorize_request
13
+ random_header_value = random_string(RANDOM_STRING_SIZE)
14
+ authorization = prepare_authorization_string(pki_string, random_header_value, options, uri).to_s
15
+ header[:Authorization] = authorization
16
+ header[:'x-iyzi-rnd'] = random_header_value.to_s
17
+ header[:'x-iyzi-client-version'] = 'iyzipay-ruby-1.0.45'
18
+ end
19
+
20
+ header
21
+ end
22
+
23
+ def prepare_authorization_string(pki_string, random_header_value, options, uri)
24
+ hash_digest = calculate_hash(pki_string, random_header_value, options, uri)
25
+ "#{AUTHORIZATION_HEADER_STRING} #{hash_digest}"
26
+ end
27
+
28
+ def calculate_hash(pki_string, random_header_value, options, uri)
29
+ data = "#{random_header_value}#{uri}#{pki_string}"
30
+ signature = OpenSSL::HMAC.hexdigest('SHA256', options.secret_key, data)
31
+ authorization_params = [
32
+ 'apiKey:' + options.api_key,
33
+ 'randomKey:' + random_header_value,
34
+ 'signature:' + signature
35
+ ]
36
+ Base64.strict_encode64(authorization_params.join('&'))
37
+ end
38
+ end
39
+ end
@@ -0,0 +1,63 @@
1
+ module Model
2
+ end
3
+
4
+ require_relative 'model/address'
5
+ require_relative 'model/api_test'
6
+ require_relative 'model/approval'
7
+ require_relative 'model/basic_bkm'
8
+ require_relative 'model/basic_bkm_initialize'
9
+ require_relative 'model/basic_payment'
10
+ require_relative 'model/basic_payment_post_auth'
11
+ require_relative 'model/basic_payment_pre_auth'
12
+ require_relative 'model/basic_threeds_initialize'
13
+ require_relative 'model/basic_threeds_initialize_pre_auth'
14
+ require_relative 'model/basic_threeds_payment'
15
+ require_relative 'model/basket'
16
+ require_relative 'model/basket_item_type'
17
+ require_relative 'model/bin_number'
18
+ require_relative 'model/bkm'
19
+ require_relative 'model/bkm_initialize'
20
+ require_relative 'model/bounced_bank_transfer_list'
21
+ require_relative 'model/buyer'
22
+ require_relative 'model/card'
23
+ require_relative 'model/card_information'
24
+ require_relative 'model/card_list'
25
+ require_relative 'model/cancel'
26
+ require_relative 'model/checkout_form'
27
+ require_relative 'model/checkout_form_initialize'
28
+ require_relative 'model/checkout_form_initialize_pre_auth'
29
+ require_relative 'model/cross_booking_from_sub_merchant'
30
+ require_relative 'model/cross_booking_to_sub_merchant'
31
+ require_relative 'model/disapproval'
32
+ require_relative 'model/installment_details'
33
+ require_relative 'model/installment_info'
34
+ require_relative 'model/installment_prices'
35
+ require_relative 'model/locale'
36
+ require_relative 'model/payment'
37
+ require_relative 'model/payment_card'
38
+ require_relative 'model/payment_channel'
39
+ require_relative 'model/payment_group'
40
+ require_relative 'model/payment_post_auth'
41
+ require_relative 'model/payment_pre_auth'
42
+ require_relative 'model/payout_completed_transaction_list'
43
+ require_relative 'model/pecco_initialize'
44
+ require_relative 'model/pecco_payment'
45
+ require_relative 'model/refund'
46
+ require_relative 'model/refund_charged_from_merchant'
47
+ require_relative 'model/sub_merchant'
48
+ require_relative 'model/sub_merchant_type'
49
+ require_relative 'model/threeds_initialize'
50
+ require_relative 'model/threeds_initialize_pre_auth'
51
+ require_relative 'model/threeds_payment'
52
+ require_relative 'model/currency'
53
+ require_relative 'model/refund_reason'
54
+ require_relative 'model/settlement_to_balance'
55
+ require_relative 'model/refund_to_balance'
56
+ require_relative 'model/pay_with_iyzico_initialize'
57
+ require_relative 'model/pay_with_iyzico_retrieve'
58
+ require_relative 'model/v2/checkout_form'
59
+ require_relative 'model/v2/checkout_form_initialize'
60
+ require_relative 'model/v2/plan'
61
+ require_relative 'model/v2/product'
62
+ require_relative 'model/v2/subscription'
63
+ require_relative 'model/v2/subscription_initialize'
@@ -0,0 +1,17 @@
1
+ module Iyzipay
2
+ module Model
3
+ class Address
4
+ def self.to_pki_string(request)
5
+ unless request.nil?
6
+ PkiBuilder.new.
7
+ append(:address, request[:address]).
8
+ append(:zipCode, request[:zipCode]).
9
+ append(:contactName, request[:contactName]).
10
+ append(:city, request[:city]).
11
+ append(:country, request[:country]).
12
+ get_request_string
13
+ end
14
+ end
15
+ end
16
+ end
17
+ end
@@ -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
@@ -0,0 +1,17 @@
1
+ module Iyzipay
2
+ module Model
3
+ class Approval < IyzipayResource
4
+
5
+ def create(request = {}, options)
6
+ pki_string = to_pki_string(request)
7
+ HttpClient.post("#{options.base_url}/payment/iyzipos/item/approve", 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(:paymentTransactionId, request[:paymentTransactionId]).
13
+ get_request_string
14
+ end
15
+ end
16
+ end
17
+ end
@@ -0,0 +1,17 @@
1
+ module Iyzipay
2
+ module Model
3
+ class BasicBkm < IyzipayResource
4
+
5
+ def retrieve(request = {}, options)
6
+ pki_string = to_pki_string(request)
7
+ HttpClient.post("#{options.base_url}/payment/iyziconnect/bkm/auth/detail", 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
@@ -0,0 +1,24 @@
1
+ module Iyzipay
2
+ module Model
3
+ class BasicBkmInitialize < IyzipayResource
4
+
5
+ def create(request = {}, options)
6
+ pki_string = to_pki_string(request)
7
+ HttpClient.post("#{options.base_url}/payment/iyziconnect/bkm/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(:connectorName, request[:connectorName]).
13
+ append_price(:price, request[:price]).
14
+ append(:callbackUrl, request[:callbackUrl]).
15
+ append(:buyerEmail, request[:buyerEmail]).
16
+ append(:buyerId, request[:buyerId]).
17
+ append(:buyerIp, request[:buyerIp]).
18
+ append(:posOrderId, request[:posOrderId]).
19
+ append_array(:installmentDetails, InstallmentDetails.to_pki_string(request[:installmentDetails])).
20
+ get_request_string
21
+ end
22
+ end
23
+ end
24
+ end
@@ -0,0 +1,27 @@
1
+ module Iyzipay
2
+ module Model
3
+ class BasicPayment < IyzipayResource
4
+
5
+ def create(request = {}, options)
6
+ pki_string = to_pki_string(request)
7
+ HttpClient.post("#{options.base_url}/payment/iyziconnect/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_price(:price, request[:price]).
13
+ append_price(:paidPrice, request[:paidPrice]).
14
+ append(:installment, request[:installment]).
15
+ append(:buyerEmail, request[:buyerEmail]).
16
+ append(:buyerId, request[:buyerId]).
17
+ append(:buyerIp, request[:buyerIp]).
18
+ append(:posOrderId, request[:posOrderId]).
19
+ append(:paymentCard, PaymentCard.to_pki_string(request[:paymentCard])).
20
+ append(:currency, request[:currency]).
21
+ append(:connectorName, request[:connectorName]).
22
+ append(:callbackUrl, request[:callbackUrl]).
23
+ get_request_string
24
+ end
25
+ end
26
+ end
27
+ end
@@ -0,0 +1,20 @@
1
+ module Iyzipay
2
+ module Model
3
+ class BasicPaymentPostAuth < IyzipayResource
4
+
5
+ def create(request = {}, options)
6
+ pki_string = to_pki_string(request)
7
+ HttpClient.post("#{options.base_url}/payment/iyziconnect/postauth", 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(:paymentId, request[:paymentId]).
13
+ append(:ip, request[:ip]).
14
+ append_price(:paidPrice, request[:paidPrice]).
15
+ append(:currency, request[:currency]).
16
+ get_request_string
17
+ end
18
+ end
19
+ end
20
+ end
@@ -0,0 +1,27 @@
1
+ module Iyzipay
2
+ module Model
3
+ class BasicPaymentPreAuth < IyzipayResource
4
+
5
+ def create(request = {}, options)
6
+ pki_string = to_pki_string(request)
7
+ HttpClient.post("#{options.base_url}/payment/iyziconnect/preauth", 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_price(:paidPrice, request[:paidPrice]).
14
+ append(:installment, request[:installment]).
15
+ append(:buyerEmail, request[:buyerEmail]).
16
+ append(:buyerId, request[:buyerId]).
17
+ append(:buyerIp, request[:buyerIp]).
18
+ append(:posOrderId, request[:posOrderId]).
19
+ append(:paymentCard, PaymentCard.to_pki_string(request[:paymentCard])).
20
+ append(:currency, request[:currency]).
21
+ append(:connectorName, request[:connectorName]).
22
+ append(:callbackUrl, request[:callbackUrl]).
23
+ get_request_string
24
+ end
25
+ end
26
+ end
27
+ end
@@ -0,0 +1,27 @@
1
+ module Iyzipay
2
+ module Model
3
+ class BasicThreedsInitialize < IyzipayResource
4
+
5
+ def create(request = {}, options)
6
+ pki_string = to_pki_string(request)
7
+ HttpClient.post("#{options.base_url}/payment/iyziconnect/initialize3ds", 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_price(:paidPrice, request[:paidPrice]).
14
+ append(:installment, request[:installment]).
15
+ append(:buyerEmail, request[:buyerEmail]).
16
+ append(:buyerId, request[:buyerId]).
17
+ append(:buyerIp, request[:buyerIp]).
18
+ append(:posOrderId, request[:posOrderId]).
19
+ append(:paymentCard, PaymentCard.to_pki_string(request[:paymentCard])).
20
+ append(:currency, request[:currency]).
21
+ append(:connectorName, request[:connectorName]).
22
+ append(:callbackUrl, request[:callbackUrl]).
23
+ get_request_string
24
+ end
25
+ end
26
+ end
27
+ end