iyzipay-zebramo 1.0.35

Sign up to get free protection for your applications and to get access to all the features.
Files changed (82) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +11 -0
  3. data/.rspec +2 -0
  4. data/.ruby-gemset +1 -0
  5. data/.ruby-version +1 -0
  6. data/.travis.yml +3 -0
  7. data/Gemfile +9 -0
  8. data/LICENSE.txt +21 -0
  9. data/README.md +123 -0
  10. data/Rakefile +5 -0
  11. data/contributors +2 -0
  12. data/iyzipay.gemspec +24 -0
  13. data/lib/Iyzipay.rb +16 -0
  14. data/lib/iyzipay/http_client.rb +19 -0
  15. data/lib/iyzipay/iyzipay_resource.rb +59 -0
  16. data/lib/iyzipay/model.rb +49 -0
  17. data/lib/iyzipay/model/address.rb +17 -0
  18. data/lib/iyzipay/model/api_test.rb +10 -0
  19. data/lib/iyzipay/model/approval.rb +17 -0
  20. data/lib/iyzipay/model/basic_bkm.rb +17 -0
  21. data/lib/iyzipay/model/basic_bkm_initialize.rb +24 -0
  22. data/lib/iyzipay/model/basic_payment.rb +27 -0
  23. data/lib/iyzipay/model/basic_payment_post_auth.rb +20 -0
  24. data/lib/iyzipay/model/basic_payment_pre_auth.rb +27 -0
  25. data/lib/iyzipay/model/basic_threeds_initialize.rb +27 -0
  26. data/lib/iyzipay/model/basic_threeds_initialize_pre_auth.rb +27 -0
  27. data/lib/iyzipay/model/basic_threeds_payment.rb +18 -0
  28. data/lib/iyzipay/model/basket.rb +26 -0
  29. data/lib/iyzipay/model/basket_item_type.rb +8 -0
  30. data/lib/iyzipay/model/bin_number.rb +17 -0
  31. data/lib/iyzipay/model/bkm.rb +17 -0
  32. data/lib/iyzipay/model/bkm_initialize.rb +24 -0
  33. data/lib/iyzipay/model/bounced_bank_transfer_list.rb +17 -0
  34. data/lib/iyzipay/model/buyer.rb +25 -0
  35. data/lib/iyzipay/model/cancel.rb +18 -0
  36. data/lib/iyzipay/model/checkout_form.rb +17 -0
  37. data/lib/iyzipay/model/checkout_form_initialize.rb +31 -0
  38. data/lib/iyzipay/model/checkout_form_initialize_pre_auth.rb +30 -0
  39. data/lib/iyzipay/model/cross_booking_from_sub_merchant.rb +20 -0
  40. data/lib/iyzipay/model/cross_booking_to_sub_merchant.rb +20 -0
  41. data/lib/iyzipay/model/currency.rb +11 -0
  42. data/lib/iyzipay/model/disapproval.rb +17 -0
  43. data/lib/iyzipay/model/installment_details.rb +19 -0
  44. data/lib/iyzipay/model/installment_info.rb +18 -0
  45. data/lib/iyzipay/model/installment_prices.rb +19 -0
  46. data/lib/iyzipay/model/locale.rb +8 -0
  47. data/lib/iyzipay/model/payment.rb +47 -0
  48. data/lib/iyzipay/model/payment_card.rb +22 -0
  49. data/lib/iyzipay/model/payment_channel.rb +14 -0
  50. data/lib/iyzipay/model/payment_group.rb +9 -0
  51. data/lib/iyzipay/model/payment_post_auth.rb +20 -0
  52. data/lib/iyzipay/model/payment_pre_auth.rb +47 -0
  53. data/lib/iyzipay/model/payout_completed_transaction_list.rb +17 -0
  54. data/lib/iyzipay/model/pecco_initialize.rb +27 -0
  55. data/lib/iyzipay/model/pecco_payment.rb +17 -0
  56. data/lib/iyzipay/model/refund.rb +20 -0
  57. data/lib/iyzipay/model/refund_charged_from_merchant.rb +20 -0
  58. data/lib/iyzipay/model/sub_merchant.rb +72 -0
  59. data/lib/iyzipay/model/sub_merchant_type.rb +9 -0
  60. data/lib/iyzipay/model/threeds_initialize.rb +32 -0
  61. data/lib/iyzipay/model/threeds_initialize_pre_auth.rb +32 -0
  62. data/lib/iyzipay/model/threeds_payment.rb +34 -0
  63. data/lib/iyzipay/options.rb +7 -0
  64. data/lib/iyzipay/pki_builder.rb +101 -0
  65. data/lib/iyzipay/version.rb +3 -0
  66. data/spec/api_test_spec.rb +25 -0
  67. data/spec/approval_spec.rb +30 -0
  68. data/spec/bin_number_spec.rb +30 -0
  69. data/spec/bkm_spec.rb +105 -0
  70. data/spec/cancel_spec.rb +31 -0
  71. data/spec/card_storage_spec.rb +0 -0
  72. data/spec/checkout_form_spec.rb +103 -0
  73. data/spec/disapproval_spec.rb +30 -0
  74. data/spec/installment_spec.rb +31 -0
  75. data/spec/payment_spec.rb +276 -0
  76. data/spec/pecco_spec.rb +105 -0
  77. data/spec/refund_spec.rb +33 -0
  78. data/spec/retrieve_transactions_spec.rb +45 -0
  79. data/spec/spec_helper.rb +80 -0
  80. data/spec/sub_merchant_spec.rb +179 -0
  81. data/spec/threeds_payment_spec.rb +226 -0
  82. metadata +178 -0
@@ -0,0 +1,9 @@
1
+ module Iyzipay
2
+ module Model
3
+ module SubMerchantType
4
+ PERSONAL = 'PERSONAL'
5
+ PRIVATE_COMPANY = 'PRIVATE_COMPANY'
6
+ LIMITED_OR_JOINT_STOCK_COMPANY = 'LIMITED_OR_JOINT_STOCK_COMPANY'
7
+ end
8
+ end
9
+ end
@@ -0,0 +1,32 @@
1
+ module Iyzipay
2
+ module Model
3
+ class ThreedsInitialize < IyzipayResource
4
+
5
+ def create(request = {}, options)
6
+ pki_string = to_pki_string(request)
7
+ HttpClient.post("#{options.base_url}/payment/iyzipos/initialize3ds/ecom", 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(:paymentChannel, request[:paymentChannel]).
16
+ append(:basketId, request[:basketId]).
17
+ append(:paymentGroup, request[:paymentGroup]).
18
+ append(:paymentCard, PaymentCard.to_pki_string(request[:paymentCard])).
19
+ append(:buyer, Buyer.to_pki_string(request[:buyer])).
20
+ append(:shippingAddress, Address.to_pki_string(request[:shippingAddress])).
21
+ append(:billingAddress, Address.to_pki_string(request[:billingAddress])).
22
+ append_array(:basketItems, Basket.to_pki_string(request[:basketItems])).
23
+ append(:paymentSource, request[:paymentSource]).
24
+ append(:currency, request[:currency]).
25
+ append(:posOrderId, request[:posOrderId]).
26
+ append(:connectorName, request[:connectorName]).
27
+ append(:callbackUrl, request[:callbackUrl]).
28
+ get_request_string
29
+ end
30
+ end
31
+ end
32
+ end
@@ -0,0 +1,32 @@
1
+ module Iyzipay
2
+ module Model
3
+ class ThreedsInitializePreAuth < IyzipayResource
4
+
5
+ def create(request = {}, options)
6
+ pki_string = to_pki_string(request)
7
+ HttpClient.post("#{options.base_url}/payment/iyzipos/initialize3ds/preauth/ecom", 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(:paymentChannel, request[:paymentChannel]).
16
+ append(:basketId, request[:basketId]).
17
+ append(:paymentGroup, request[:paymentGroup]).
18
+ append(:paymentCard, PaymentCard.to_pki_string(request[:paymentCard])).
19
+ append(:buyer, Buyer.to_pki_string(request[:buyer])).
20
+ append(:shippingAddress, Address.to_pki_string(request[:shippingAddress])).
21
+ append(:billingAddress, Address.to_pki_string(request[:billingAddress])).
22
+ append_array(:basketItems, Basket.to_pki_string(request[:basketItems])).
23
+ append(:paymentSource, request[:paymentSource]).
24
+ append(:currency, request[:currency]).
25
+ append(:posOrderId, request[:posOrderId]).
26
+ append(:connectorName, request[:connectorName]).
27
+ append(:callbackUrl, request[:callbackUrl]).
28
+ get_request_string
29
+ end
30
+ end
31
+ end
32
+ end
@@ -0,0 +1,34 @@
1
+ module Iyzipay
2
+ module Model
3
+ class ThreedsPayment < IyzipayResource
4
+
5
+ def create(request = {}, options)
6
+ pki_string = to_pki_string_create(request)
7
+ HttpClient.post("#{options.base_url}/payment/iyzipos/auth3ds/ecom", get_http_header(pki_string, options), request.to_json)
8
+ end
9
+
10
+ def retrieve(request = {}, options)
11
+ pki_string = to_pki_string_retrieve(request)
12
+ HttpClient.post("#{options.base_url}/payment/detail", 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(:paymentId, request[:paymentId]).
20
+ append(:conversationData, request[:conversationData]).
21
+ get_request_string
22
+ end
23
+
24
+ def to_pki_string_retrieve(request)
25
+ PkiBuilder.new.
26
+ append(:locale, request[:locale]).
27
+ append(:conversationId, request[:conversationId]).
28
+ append(:paymentId, request[:paymentId]).
29
+ append(:paymentConversationId, request[:paymentConversationId]).
30
+ get_request_string
31
+ end
32
+ end
33
+ end
34
+ end
@@ -0,0 +1,7 @@
1
+ module Iyzipay
2
+ class Options
3
+ attr_accessor :api_key
4
+ attr_accessor :secret_key
5
+ attr_accessor :base_url
6
+ end
7
+ end
@@ -0,0 +1,101 @@
1
+ module Iyzipay
2
+ class PkiBuilder
3
+ attr_accessor :request_string
4
+
5
+ def initialize(request_string = '')
6
+ @request_string = request_string
7
+ end
8
+
9
+ def append_super(super_request_string)
10
+ unless super_request_string.nil?
11
+
12
+ s = super_request_string[1..-2]
13
+ if s.length > 0
14
+ result = @request_string + s
15
+ result << ','
16
+ end
17
+ @request_string = result
18
+ end
19
+ self
20
+ end
21
+
22
+ def append(key, value = nil)
23
+ unless value.nil?
24
+ append_key_value(key, value)
25
+ end
26
+ self
27
+ end
28
+
29
+ def append_price(key, value = nil)
30
+ unless value.nil?
31
+ append_key_value(key, format_price(value))
32
+ end
33
+ self
34
+ end
35
+
36
+ def append_array(key, array = nil)
37
+ unless array.nil?
38
+ appended_value = ''
39
+ array.each do |value|
40
+ appended_value << value.to_s
41
+ appended_value << ', '
42
+ end
43
+ end
44
+ append_key_value_array(key, appended_value)
45
+
46
+ self
47
+ end
48
+
49
+ def append_key_value(key, value)
50
+ @request_string = "#{@request_string}#{key}=#{value}," unless value.nil?
51
+ end
52
+
53
+ def append_key_value_array(key, value)
54
+ unless value.nil?
55
+ sub = ', '
56
+ value = value.gsub(/[#{sub}]+$/, '')
57
+ @request_string = "#{@request_string}#{key}=[#{value}],"
58
+ end
59
+
60
+ self
61
+ end
62
+
63
+ def append_prefix
64
+ @request_string = "[#{@request_string}]"
65
+ end
66
+
67
+ def remove_trailing_comma
68
+ sub = ','
69
+ @request_string = @request_string.gsub(/[#{sub}]+$/, '')
70
+ end
71
+
72
+ def get_request_string
73
+ remove_trailing_comma
74
+ append_prefix
75
+
76
+ @request_string
77
+ end
78
+
79
+ def format_price(price)
80
+ unless price.include? '.'
81
+ price = price+'.0'
82
+ end
83
+ sub_str_index = 0
84
+ price_reversed = price.reverse
85
+ i=0
86
+ while i < price.size do
87
+ if price_reversed[i] == '0'
88
+ sub_str_index = i + 1
89
+ elsif price_reversed[i] == '.'
90
+ price_reversed = '0' + price_reversed
91
+ break
92
+ else
93
+ break
94
+ end
95
+ i+=1
96
+ end
97
+ (price_reversed[sub_str_index..-1]).reverse
98
+ end
99
+
100
+ end
101
+ end
@@ -0,0 +1,3 @@
1
+ module Iyzipay
2
+ VERSION = '1.0.35'
3
+ end
@@ -0,0 +1,25 @@
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 = 'your api key'
9
+ @options.secret_key = 'your secret key'
10
+ @options.base_url = 'https://sandbox-api.iyzipay.com'
11
+ end
12
+
13
+ it 'should test api' do
14
+ apiTest = Iyzipay::Model::ApiTest.new.retrieve(@options)
15
+ begin
16
+ $stderr.puts apiTest.inspect
17
+ rescue
18
+ $stderr.puts 'oops'
19
+ raise
20
+ end
21
+ end
22
+
23
+ after :each do
24
+ end
25
+ end
@@ -0,0 +1,30 @@
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 = 'your api key'
9
+ @options.secret_key = 'your secret key'
10
+ @options.base_url = 'https://sandbox-api.iyzipay.com'
11
+ end
12
+
13
+ it 'should approve payment item' do
14
+ request = {
15
+ locale: Iyzipay::Model::Locale::TR,
16
+ conversationId: '123456789',
17
+ paymentTransactionId: '1'
18
+ }
19
+ approval = Iyzipay::Model::Approval.new.create(request, @options)
20
+ begin
21
+ $stderr.puts approval.inspect
22
+ rescue
23
+ $stderr.puts 'oops'
24
+ raise
25
+ end
26
+ end
27
+
28
+ after :each do
29
+ end
30
+ end
@@ -0,0 +1,30 @@
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 = 'your api key'
9
+ @options.secret_key = 'your secret key'
10
+ @options.base_url = 'https://sandbox-api.iyzipay.com'
11
+ end
12
+
13
+ it 'should retrieve bin number' do
14
+ request = {
15
+ locale: Iyzipay::Model::Locale::TR,
16
+ conversationId: '123456789',
17
+ binNumber: '554960'
18
+ }
19
+ bin_number = Iyzipay::Model::BinNumber.new.retrieve(request, @options)
20
+ begin
21
+ $stderr.puts bin_number.inspect
22
+ rescue
23
+ $stderr.puts 'oops'
24
+ raise
25
+ end
26
+ end
27
+
28
+ after :each do
29
+ end
30
+ end
@@ -0,0 +1,105 @@
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 = 'your api key'
9
+ @options.secret_key = 'your secret key'
10
+ @options.base_url = 'https://sandbox-api.iyzipay.com'
11
+ end
12
+
13
+ it 'should initialize bkm' do
14
+ buyer = {
15
+ id: 'BY789',
16
+ name: 'John',
17
+ surname: 'Doe',
18
+ gsmNumber: '+905350000000',
19
+ email: 'email@email.com',
20
+ identityNumber: '74300864791',
21
+ lastLoginDate: '2015-10-05 12:43:35',
22
+ registrationDate: '2013-04-21 15:12:09',
23
+ registrationAddress: 'Nidakule Göztepe, Merdivenköy Mah. Bora Sok. No:1',
24
+ ip: '85.34.78.112',
25
+ city: 'Istanbul',
26
+ country: 'Turkey',
27
+ zipCode: '34732'
28
+ }
29
+ address = {
30
+ contactName: 'Jane Doe',
31
+ city: 'Istanbul',
32
+ country: 'Turkey',
33
+ address: 'Nidakule Göztepe, Merdivenköy Mah. Bora Sok. No:1',
34
+ zipCode: '34732'
35
+ }
36
+
37
+ item1 = {
38
+ id: 'BI101',
39
+ name: 'Binocular',
40
+ category1: 'Collectibles',
41
+ category2: 'Accessories',
42
+ itemType: Iyzipay::Model::BasketItemType::PHYSICAL,
43
+ price: '0.3'
44
+ }
45
+ item2 = {
46
+ id: 'BI102',
47
+ name: 'Game code',
48
+ category1: 'Game',
49
+ category2: 'Online Game Items',
50
+ itemType: Iyzipay::Model::BasketItemType::VIRTUAL,
51
+ price: '0.5'
52
+ }
53
+ item3 = {
54
+ id: 'BI103',
55
+ name: 'Usb',
56
+ category1: 'Electronics',
57
+ category2: 'Usb / Cable',
58
+ itemType: Iyzipay::Model::BasketItemType::PHYSICAL,
59
+ price: '0.2'
60
+ }
61
+ request = {
62
+ locale: Iyzipay::Model::Locale::TR,
63
+ conversationId: '123456789',
64
+ price: '1',
65
+ basketId: 'B67832',
66
+ paymentGroup: Iyzipay::Model::PaymentGroup::PRODUCT,
67
+ callbackUrl: 'https://www.merchant.com/callback',
68
+ buyer: buyer,
69
+ billingAddress: address,
70
+ shippingAddress: address,
71
+ basketItems: [item1, item2, item3]
72
+ }
73
+ bkm_initialize = Iyzipay::Model::BkmInitialize.new.create(request, @options)
74
+
75
+ begin
76
+ $stderr.puts bkm_initialize.inspect
77
+
78
+ bkm_initialize_dict = JSON.parse(bkm_initialize)
79
+ unless bkm_initialize_dict['htmlContent'].nil?
80
+ $stderr.puts Base64.decode64(bkm_initialize_dict['htmlContent']).inspect
81
+ end
82
+ rescue
83
+ $stderr.puts 'oops'
84
+ raise
85
+ end
86
+ end
87
+
88
+ it 'should retrieve bkm result' do
89
+ request = {
90
+ locale: Iyzipay::Model::Locale::TR,
91
+ conversationId: '123456789',
92
+ token: 'token'
93
+ }
94
+ bkm = Iyzipay::Model::Bkm.new.retrieve(request, @options)
95
+ begin
96
+ $stderr.puts bkm.inspect
97
+ rescue
98
+ $stderr.puts 'oops'
99
+ raise
100
+ end
101
+ end
102
+
103
+ after :each do
104
+ end
105
+ end
@@ -0,0 +1,31 @@
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 = 'your api key'
9
+ @options.secret_key = 'your secret key'
10
+ @options.base_url = 'https://sandbox-api.iyzipay.com'
11
+ end
12
+
13
+ it 'should cancel payment' do
14
+ request = {
15
+ locale: Iyzipay::Model::Locale::TR,
16
+ conversationId: '123456789',
17
+ paymentId: '1',
18
+ ip: '85.34.78.112'
19
+ }
20
+ cancel = Iyzipay::Model::Cancel.new.create(request, @options)
21
+ begin
22
+ $stderr.puts cancel.inspect
23
+ rescue
24
+ $stderr.puts 'oops'
25
+ raise
26
+ end
27
+ end
28
+
29
+ after :each do
30
+ end
31
+ end