iyzipay-subscriptions 1.0.0

Sign up to get free protection for your applications and to get access to all the features.
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