conekta 2.4.2 → 2.6.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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 0bc6e32370b0435e72cb70ee5cd415f41d4a0f0bea6188ba7f49cd802ae537ed
4
- data.tar.gz: 16d7b7ed8f40ef09b7f3406bc2c8e37fda121faaef7894de0e789ccd61485ed9
3
+ metadata.gz: 31713f94324383d6c460c26a4d948ab1684c86286a4181d94a1bcf448b906ce9
4
+ data.tar.gz: 8ffa91279cf24f52d6367903a469763bd77458cfaed1cb22728adc655ac296e3
5
5
  SHA512:
6
- metadata.gz: e4bc49bebc82e298e7e064d8912d340754e43ed1ccdfc72434ea1607318e3bd5974cceefc6adee633a92c8933439802f998c7e240d9d12ca4b0ba0410833e632
7
- data.tar.gz: 941ce39a04b6d3e22d82c862d0718b0a3f7e1191bb53b776d43fe72fbfa6d9a9e26a2d1f22315e960080e856ba7949fdc4cd3febca8a9cb446239e2d70c4ef5c
6
+ metadata.gz: c90d1fa11514c232911156531a8794571ecc0800ef8276f8071df12a5e8b428458d7c8bfb8c808818d6ca56f2d73ca38f1224e9d8c1ac121d55b1f055c81e61d
7
+ data.tar.gz: 03ba2731ac8b69c7967baff8cd56df145ba62b34c021c12e68b8a91b5e5a79b5b3f9f15785d2a6728a7da6f87f61b9ac7f693a5c7a9381354e5cd79d214a1bfe
data/CHANGELOG.md CHANGED
@@ -1,3 +1,12 @@
1
+ ## [2.6.0](https://github.com/conekta/conekta-ruby/releases/tag/2.5.0) - 2020-06-08
2
+ ### Deprecate List Total attribute
3
+ - Remove total attribute logic for lists as it is deprecated and will be removed.
4
+ Going forward use the has_more attribute of lists to determine whether you
5
+ should keep paginating.
6
+ ## [2.5.0](https://github.com/conekta/conekta-ruby/releases/tag/2.5.0) - 2020-11-22
7
+ ### Payment link
8
+ - Add models to support payment link (aka checkout).
9
+
1
10
  ## [2.4.2](https://github.com/conekta/conekta-ruby/releases/tag/2.4.2) - 2020-01-22
2
11
  ### Ruby 2.7 Cleanup
3
12
  - Corrects warnings related to translate in Ruby 2.7
data/README.md CHANGED
@@ -35,7 +35,6 @@ Or install it yourself as:
35
35
 
36
36
  # This changes the Accept-Language Header to the locale specified
37
37
  Conekta.locale = :es
38
-
39
38
  Conekta.api_key = '1tv5yJp3xnVZ7eK67m4h'
40
39
 
41
40
  # Or via an initializer in config/initializers/conekta.rb
@@ -45,71 +44,45 @@ Conekta.config do |c|
45
44
  c.api_version = '2.0.0'
46
45
  end
47
46
 
47
+ YOUR_DOMAIN = 'localhost:9292'.freeze
48
+
49
+ # Order creation example
48
50
  begin
49
- order = Conekta::Order.create(order_data_with_charges.
50
- merge(customer_info: customer_info))
51
+ customer = Conekta::Customer.create(
52
+ {
53
+ name: 'Matz',
54
+ email: 'matz@rules.com'
55
+ }
56
+ )
57
+
58
+ order_params =
59
+ {
60
+ currency: 'MXN',
61
+ customer_info: {
62
+ customer_id: customer.id
63
+ },
64
+ line_items: [
65
+ {
66
+ name: 'T-Rex',
67
+ unit_price: 10000,
68
+ quantity: 1
69
+ }
70
+ ],
71
+ checkout: {
72
+ type: 'HostedPayment',
73
+ name: 'Checkout Dummy',
74
+ allowed_payment_methods: %w[cash card bank_transfer],
75
+ success_url: YOUR_DOMAIN + '/success.html',
76
+ failure_url: YOUR_DOMAIN + '/cancel.html',
77
+ }
78
+ }
79
+
80
+ order = Conekta::Order.create(order_params)
51
81
  rescue Conekta::Error => error
52
- for error_detail in error.details do
82
+ error.details.each do |error_details|
53
83
  puts error_detail.message
54
84
  end
55
85
  end
56
-
57
- {
58
- "livemode": false,
59
- "amount": 35000,
60
- "payment_status": "pending_payment",
61
- "currency": "MXN",
62
- "customer_info": {
63
- "email": "hola@hola.com",
64
- "phone": "+5213353319758",
65
- "name": "John Constantine",
66
- "first_paid_at": 0
67
- },
68
- "object": "order",
69
- "id": "ord_2ftyJuymR9FZczvPg",
70
- "metadata": {
71
- "test": true
72
- },
73
- "created_at": 1485272874,
74
- "updated_at": 1485272874,
75
- "line_items": {
76
- "0": {
77
- "name": "Box of Cohiba S1s",
78
- "description": "Imported From Mex.",
79
- "unit_price": 35000,
80
- "quantity": 1,
81
- "tags": ["food", "mexican food"],
82
- "type": "physical",
83
- "object": "line_item",
84
- "id": "line_item_2ftyJuymR9FZczvPe",
85
- "parent_id": "ord_2ftyJuymR9FZczvPg",
86
- "metadata": {}
87
- }
88
- },
89
- "charges": {
90
- "0": {
91
- "id": "5887772aedbb6ea3a30056c5",
92
- "livemode": false,
93
- "created_at": 1485272874,
94
- "currency": "MXN",
95
- "payment_method": {
96
- "barcode_url": "https://s3.amazonaws.com/cash_payment_barcodes/sandbox_reference.png",
97
- "service_name": "OxxoPay",
98
- "object": "cash_payment",
99
- "type": "oxxo",
100
- "expires_at": 1485276473,
101
- "store_name": "OXXO",
102
- "reference": "93345678901234"
103
- },
104
- "object": "charge",
105
- "status": "pending_payment",
106
- "amount": 35000,
107
- "fee": 1421,
108
- "customer_id": "",
109
- "order_id": "ord_2ftyJuymR9FZczvPg"
110
- }
111
- }
112
- }
113
86
  ```
114
87
 
115
88
  ## Documentation
data/conekta.gemspec CHANGED
@@ -23,7 +23,8 @@ Gem::Specification.new do |spec|
23
23
  spec.add_dependency "faraday"
24
24
  spec.add_dependency "json"
25
25
  spec.add_dependency "sys-uname"
26
+ spec.add_dependency "i18n"
26
27
 
27
28
  spec.add_development_dependency "rspec", ">= 3.0"
28
- spec.add_development_dependency "pry"
29
+ spec.add_development_dependency "pry"
29
30
  end
@@ -0,0 +1,35 @@
1
+ module Conekta
2
+ class Checkout < Resource
3
+ include Conekta::Operations::Create
4
+ include Conekta::Operations::Where
5
+ include Conekta::Operations::Find
6
+ include Conekta::Operations::CustomAction
7
+
8
+ attr_accessor :_id, :livemode, :company_id, :entity_id, :emails_sent,
9
+ :sms_sent, :name, :slug, :status, :url,
10
+ :type, :recurrent, :is_redirect_on_failure,
11
+ :payments_limit_count, :paid_payments_count,
12
+ :expires_at, :allowed_payment_methods,
13
+ :needs_shipping_contact, :monthly_installments_options,
14
+ :monthly_installments_enabled,
15
+ :returns_control_on, :on_demand_enabled
16
+
17
+ def _url
18
+ ensure_id
19
+
20
+ "/checkouts/#{id}"
21
+ end
22
+
23
+ def send_sms(params = {})
24
+ custom_action(:post, "sms", params)
25
+ end
26
+
27
+ def send_email(params = {})
28
+ custom_action(:post, "email", params)
29
+ end
30
+
31
+ def cancel(params = {})
32
+ custom_action(:put, "cancel", params)
33
+ end
34
+ end
35
+ end
data/lib/conekta/list.rb CHANGED
@@ -42,7 +42,6 @@ module Conekta
42
42
 
43
43
  def load_from(response)
44
44
  @has_more = response["has_more"]
45
- @total = response["total"]
46
45
  self.map{|key, _| self.unset_key(key) }
47
46
  super(response["data"])
48
47
  end
data/lib/conekta/order.rb CHANGED
@@ -9,9 +9,10 @@ module Conekta
9
9
 
10
10
  attr_accessor :livemode, :amount, :payment_status, :customer_id, :currency,
11
11
  :metadata, :created_at, :updated_at, :tax_lines, :line_items,
12
- :shipping_lines, :discount_lines, :shipping_contact, :charges
12
+ :shipping_lines, :discount_lines, :shipping_contact, :charges,
13
+ :checkout
13
14
 
14
- def initialize(id=nil)
15
+ def initialize(id = nil)
15
16
  @id = id
16
17
  @line_items ||= List.new("LineItem", {})
17
18
  @tax_lines ||= List.new("TaxLine", {})
@@ -26,7 +27,7 @@ module Conekta
26
27
  super
27
28
  end
28
29
 
29
- order = self
30
+ order = self
30
31
  submodels = [:line_items, :tax_lines, :shipping_lines, :discount_lines,
31
32
  :charges]
32
33
  create_submodels_lists(order, submodels)
@@ -34,40 +35,40 @@ module Conekta
34
35
 
35
36
  #Attribute accessors
36
37
  def create_line_item(params)
37
- self.create_member_with_relation('line_items', params, self)
38
+ self.create_member_with_relation("line_items", params, self)
38
39
  end
39
40
 
40
41
  def create_tax_line(params)
41
- self.create_member_with_relation('tax_lines', params, self)
42
+ self.create_member_with_relation("tax_lines", params, self)
42
43
  end
43
44
 
44
45
  def create_shipping_line(params)
45
- self.create_member_with_relation('shipping_lines', params, self)
46
+ self.create_member_with_relation("shipping_lines", params, self)
46
47
  end
47
48
 
48
49
  def create_discount_line(params)
49
- self.create_member_with_relation('discount_lines', params, self)
50
+ self.create_member_with_relation("discount_lines", params, self)
50
51
  end
51
52
 
52
53
  def create_charge(params)
53
- self.create_member('charges', params)
54
+ self.create_member("charges", params)
54
55
  end
55
56
 
56
57
  def create_shipping_contact(params)
57
58
  self.update(shipping_contact: params).shipping_contact
58
59
  end
59
60
 
60
- #State transitions
61
- def authorize_capture(params={})
62
- custom_action(:post, 'capture', params)
61
+ #State transitions
62
+ def authorize_capture(params = {})
63
+ custom_action(:post, "capture", params)
63
64
  end
64
65
 
65
- def void(params={})
66
- custom_action(:post, 'void', params)
66
+ def void(params = {})
67
+ custom_action(:post, "void", params)
67
68
  end
68
69
 
69
- def refund(params={})
70
- custom_action(:post, 'refund', params)
70
+ def refund(params = {})
71
+ custom_action(:post, "refund", params)
71
72
  end
72
73
 
73
74
  private
@@ -75,12 +76,11 @@ module Conekta
75
76
  def create_submodels_lists(order, submodels)
76
77
  submodels.each do |submodel|
77
78
  self.send(submodel).each do |k, v|
78
- v.create_attr('order', order)
79
+ v.create_attr("order", order)
79
80
 
80
- self.send(submodel).set_val(k,v)
81
+ self.send(submodel).set_val(k, v)
81
82
  end if self.respond_to?(submodel) && !self.send(submodel).nil?
82
83
  end
83
84
  end
84
-
85
85
  end
86
86
  end
data/lib/conekta/util.rb CHANGED
@@ -11,6 +11,7 @@ module Conekta
11
11
  'card_payment' => ::Conekta::PaymentMethod,
12
12
  'cash_payment' => ::Conekta::PaymentMethod,
13
13
  'charge' => ::Conekta::Charge,
14
+ 'checkout' => ::Conekta::Checkout,
14
15
  'customer' => ::Conekta::Customer,
15
16
  'event' => ::Conekta::Event,
16
17
  'log' => ::Conekta::Log,
@@ -1,3 +1,3 @@
1
1
  module Conekta
2
- VERSION = '2.4.2'.freeze
2
+ VERSION = '2.6.0'.freeze
3
3
  end
data/lib/conekta.rb CHANGED
@@ -23,6 +23,7 @@ require "conekta/customer_info"
23
23
  require "conekta/details"
24
24
  require "conekta/event"
25
25
  require "conekta/charge"
26
+ require "conekta/checkout"
26
27
  require "conekta/customer"
27
28
  require "conekta/card"
28
29
  require "conekta/discount_line"
@@ -0,0 +1,224 @@
1
+ require "spec_helper"
2
+
3
+ describe Conekta::Checkout do
4
+ include_context "API 2.0.0"
5
+
6
+ before(:each) do
7
+ if Conekta.api_base == "https://api.conekta.io"
8
+ skip("This test should be run in staging.")
9
+ end
10
+ end
11
+
12
+ let(:customer_info) do
13
+ {
14
+ name: "John Constantine",
15
+ phone: "4493424352",
16
+ email: "hola@hola.com",
17
+ }
18
+ end
19
+
20
+ let(:line_items) do
21
+ [{
22
+ name: "Box of Cohiba S1s",
23
+ unit_price: 35000,
24
+ quantity: 1,
25
+ }]
26
+ end
27
+
28
+ let(:msi_enabled) do
29
+ {
30
+ monthly_installments_enabled: true,
31
+ monthly_installments_options: [3, 6, 12],
32
+ }
33
+ end
34
+
35
+ let(:recurrent) do
36
+ {
37
+ recurrent: true,
38
+ payments_limit_count: 10,
39
+ }
40
+ end
41
+
42
+ let(:order_template) do
43
+ {
44
+ currency: "MXN",
45
+ line_items: line_items,
46
+ customer_info: customer_info,
47
+ metadata: {
48
+ "mycustomkey": "12345",
49
+ "othercustomkey": "abcde",
50
+ },
51
+ }
52
+ end
53
+
54
+ let(:order_template_no_customer) do
55
+ {
56
+ currency: "MXN",
57
+ line_items: line_items,
58
+ metadata: {
59
+ "mycustomkey": "12345",
60
+ "othercustomkey": "abcde",
61
+ },
62
+ }
63
+ end
64
+
65
+ let(:checkout_data) do
66
+ {
67
+ name: "Payment Link Name",
68
+ type: "PaymentLink",
69
+ recurrent: false,
70
+ expired_at: (Time.now + 259200).to_i,
71
+ allowed_payment_methods: ["cash", "card", "bank_transfer"],
72
+ needs_shipping_contact: false,
73
+ order_template: order_template,
74
+ }
75
+ end
76
+
77
+ let(:checkout_data_no_customer) do
78
+ {
79
+ name: "Payment Link Name",
80
+ type: "PaymentLink",
81
+ recurrent: false,
82
+ expired_at: (Time.now + 259200).to_i,
83
+ allowed_payment_methods: ["cash", "card", "bank_transfer"],
84
+ needs_shipping_contact: false,
85
+ order_template: order_template_no_customer,
86
+ }
87
+ end
88
+
89
+ let(:checkout_invalid_expired_at) do
90
+ {
91
+ name: "Payment Link Name",
92
+ type: "PaymentLink",
93
+ recurrent: false,
94
+ expired_at: (Time.now + 3600).to_i,
95
+ allowed_payment_methods: ["cash", "card", "bank_transfer"],
96
+ needs_shipping_contact: false,
97
+ order_template: order_template,
98
+ }
99
+ end
100
+
101
+ let(:checkout_data_with_msi) do
102
+ checkout_data.merge(msi_enabled)
103
+ end
104
+
105
+ let(:checkout_data_recurrent) do
106
+ checkout_data_no_customer.merge(recurrent)
107
+ end
108
+
109
+ context "creating payment link" do
110
+ it "successful checkout create" do
111
+ checkout = Conekta::Checkout.create(checkout_data)
112
+
113
+ expect(checkout).to be_a(Conekta::Checkout)
114
+ expect(checkout.id).not_to eq("")
115
+ expect(checkout.id.length).to eq(36)
116
+ expect(checkout.type).to eq("PaymentLink")
117
+ expect(checkout.livemode).to eq(false)
118
+ expect(checkout.needs_shipping_contact).to eq(false)
119
+ expect(checkout.monthly_installments_enabled).to eq(false)
120
+ expect(checkout.slug).not_to eq("")
121
+ expect(checkout.url).not_to eq("")
122
+ end
123
+
124
+ it "unsuccessful checkout create" do
125
+ expect {
126
+ Conekta::Checkout.create({})
127
+ }.to raise_error(Conekta::ParameterValidationError)
128
+ end
129
+
130
+ it "unsuccessful checkout expired at create" do
131
+ expect {
132
+ Conekta::Checkout.create(checkout_invalid_expired_at)
133
+ }.to raise_error(Conekta::ParameterValidationError)
134
+ end
135
+
136
+ it "successful with monthly installments enabled" do
137
+ checkout = Conekta::Checkout.create(checkout_data_with_msi)
138
+
139
+ expect(checkout).to be_a(Conekta::Checkout)
140
+ expect(checkout.id).not_to eq("")
141
+ expect(checkout.id.length).to eq(36)
142
+ expect(checkout.type).to eq("PaymentLink")
143
+ expect(checkout.livemode).to eq(false)
144
+ expect(checkout.needs_shipping_contact).to eq(false)
145
+ expect(checkout.monthly_installments_enabled).to eq(true)
146
+ expect(checkout.monthly_installments_options.length).to eq(3)
147
+ expect(checkout.slug).not_to eq("")
148
+ expect(checkout.url).not_to eq("")
149
+ end
150
+
151
+ it "successful with recurrent" do
152
+ checkout = Conekta::Checkout.create(checkout_data_recurrent)
153
+
154
+ expect(checkout).to be_a(Conekta::Checkout)
155
+ expect(checkout.id).not_to eq("")
156
+ expect(checkout.id.length).to eq(36)
157
+ expect(checkout.type).to eq("PaymentLink")
158
+ expect(checkout.livemode).to eq(false)
159
+ expect(checkout.needs_shipping_contact).to eq(false)
160
+ expect(checkout.recurrent).to eq(true)
161
+ expect(checkout.payments_limit_count).to eq(10)
162
+ expect(checkout.slug).not_to eq("")
163
+ expect(checkout.url).not_to eq("")
164
+ end
165
+ end
166
+
167
+ context "get" do
168
+ it "successfully gets checkout" do
169
+ id = Conekta::Checkout.create(checkout_data).id
170
+
171
+ checkout = Conekta::Checkout.find(id)
172
+
173
+ expect(checkout).to be_a(Conekta::Checkout)
174
+ end
175
+
176
+ it "test successful checkout where" do
177
+ checkouts = Conekta::Checkout.where
178
+
179
+ expect(checkouts).to be_a(Conekta::List)
180
+ expect(checkouts.elements_type).to eq("Checkout")
181
+ expect(checkouts.first).to be_a(Conekta::Checkout)
182
+ end
183
+ end
184
+
185
+ context "notifications with payment link" do
186
+ it "unsuccessful send a checkout sms" do
187
+ expect {
188
+ checkout = Conekta::Checkout.create(checkout_data)
189
+ expect(checkout.sms_sent).to eq(0)
190
+
191
+ checkout.send_sms({
192
+ "phone": "5555555555",
193
+ })
194
+ }.to raise_error(Conekta::ProcessingError)
195
+ end
196
+
197
+ it "successfully send a checkout email" do
198
+ checkout = Conekta::Checkout.create(checkout_data)
199
+ expect(checkout.emails_sent).to eq(0)
200
+
201
+ checkout.send_email({
202
+ "email": "test@mail.com",
203
+ })
204
+
205
+ checkoutFound = Conekta::Checkout.find(checkout.id)
206
+ expect(checkoutFound.emails_sent).to eq(1)
207
+ end
208
+ end
209
+
210
+ context "cancel checkout request" do
211
+ it "successful cancel a checkout" do
212
+ checkout = Conekta::Checkout.create(checkout_data)
213
+ id = checkout.id
214
+ expect(checkout.status).to eq("Issued")
215
+
216
+ checkout.cancel({
217
+ "id": id,
218
+ })
219
+
220
+ checkoutFound = Conekta::Checkout.find(id)
221
+ expect(checkoutFound.status).to eq("Cancelled")
222
+ end
223
+ end
224
+ end
@@ -1,4 +1,4 @@
1
- require 'spec_helper'
1
+ require "spec_helper"
2
2
 
3
3
  describe Conekta::Order do
4
4
  include_context "API 2.0.0"
@@ -6,8 +6,8 @@ describe Conekta::Order do
6
6
  let(:customer_info) do
7
7
  {
8
8
  name: "John Constantine",
9
- phone: "+5213353319758",
10
- email: "hola@hola.com"
9
+ phone: "3353319758",
10
+ email: "hola@hola.com",
11
11
  }
12
12
  end
13
13
 
@@ -15,7 +15,7 @@ describe Conekta::Order do
15
15
  {
16
16
  email: "hola@hola.com",
17
17
  name: "John Constantine",
18
- cards: ["tok_test_visa_4242"]
18
+ cards: ["tok_test_visa_4242"],
19
19
  }
20
20
  end
21
21
 
@@ -23,9 +23,9 @@ describe Conekta::Order do
23
23
  [{
24
24
  payment_method: {
25
25
  type: "oxxo_cash",
26
- expires_at: (Time.now + 3600).to_i
26
+ expires_at: (Time.now + 3600).to_i,
27
27
  },
28
- amount: 35000
28
+ amount: 35000,
29
29
  }]
30
30
  end
31
31
 
@@ -35,7 +35,7 @@ describe Conekta::Order do
35
35
  type: "card",
36
36
  token_id: "tok_test_visa_4242",
37
37
  },
38
- amount: 35000
38
+ amount: 35000,
39
39
  }]
40
40
  end
41
41
 
@@ -45,17 +45,45 @@ describe Conekta::Order do
45
45
  description: "Imported From Mex.",
46
46
  unit_price: 35000,
47
47
  quantity: 1,
48
- tags: ["food", "mexican food"]
48
+ tags: ["food", "mexican food"],
49
49
  }]
50
50
  end
51
51
 
52
+ let(:msi_enabled) do
53
+ {
54
+ monthly_installments_enabled: true,
55
+ monthly_installments_options: [3, 6, 12],
56
+ }
57
+ end
58
+
59
+ let(:save_card_in_checkout) do
60
+ {
61
+ on_demand_enabled: true,
62
+ }
63
+ end
64
+
65
+ let(:checkout_data) do
66
+ {
67
+ expired_at: (Time.now + 259200).to_i,
68
+ allowed_payment_methods: ["cash", "card", "bank_transfer"],
69
+ }
70
+ end
71
+
72
+ let(:checkout_msi) do
73
+ checkout_data.merge(msi_enabled)
74
+ end
75
+
76
+ let(:checkout_save_card) do
77
+ checkout_data.merge(save_card_in_checkout)
78
+ end
79
+
52
80
  let(:order_data) do
53
81
  {
54
- currency: 'mxn',
82
+ currency: "mxn",
55
83
  line_items: line_items,
56
84
  metadata: {
57
- test: true
58
- }
85
+ test: true,
86
+ },
59
87
  }
60
88
  end
61
89
 
@@ -67,6 +95,18 @@ describe Conekta::Order do
67
95
  order_data.merge(charges: card_charges)
68
96
  end
69
97
 
98
+ let(:order_data_with_checkout) do
99
+ order_data.merge(checkout: checkout_data)
100
+ end
101
+
102
+ let(:order_data_with_checkout_msi) do
103
+ order_data.merge(checkout: checkout_msi)
104
+ end
105
+
106
+ let(:order_data_with_checkout_save_card) do
107
+ order_data.merge(checkout: checkout_save_card)
108
+ end
109
+
70
110
  context "creating orders" do
71
111
  it "successful order create" do
72
112
  order = Conekta::Order.create(order_data)
@@ -76,7 +116,7 @@ describe Conekta::Order do
76
116
  end
77
117
 
78
118
  it "unsuccessful order create" do
79
- expect{
119
+ expect {
80
120
  Conekta::Order.create({})
81
121
  }.to raise_error(Conekta::ParameterValidationError)
82
122
  end
@@ -84,19 +124,64 @@ describe Conekta::Order do
84
124
  context "with charges" do
85
125
  it "successful order create" do
86
126
  order = Conekta::Order.create(order_data_with_charges.
87
- merge(customer_info: customer_info))
127
+ merge(customer_info: customer_info))
88
128
 
89
129
  expect(order).to be_a(Conekta::Order)
90
130
  end
91
131
 
92
132
  context "unsuccessful order create" do
93
133
  it "with missing customer_info and customer_id" do
94
- expect{
134
+ expect {
95
135
  Conekta::Order.create(order_data_with_charges)
96
136
  }.to raise_error(Conekta::ParameterValidationError)
97
137
  end
98
138
  end
99
139
  end
140
+
141
+ context "with checkout components" do
142
+ before(:each) do
143
+ if Conekta.api_base == "https://api.conekta.io"
144
+ skip("This test should be run in staging.")
145
+ end
146
+ end
147
+
148
+ it "successful order create" do
149
+ order = Conekta::Order.create(order_data_with_checkout.
150
+ merge(customer_info: customer_info))
151
+
152
+ expect(order).to be_a(Conekta::Order)
153
+ expect(order.checkout.class.to_s).to eq("Conekta::Checkout")
154
+ expect(order.checkout.id).not_to eq("")
155
+ expect(order.checkout.type).to eq("Integration")
156
+ expect(order.checkout.monthly_installments_enabled).to eq(false)
157
+ end
158
+
159
+ context "with checkout components monthly installments create" do
160
+ it "with missing customer_info and customer_id" do
161
+ order = Conekta::Order.create(order_data_with_checkout_msi.
162
+ merge(customer_info: customer_info))
163
+
164
+ expect(order).to be_a(Conekta::Order)
165
+ expect(order.checkout.class.to_s).to eq("Conekta::Checkout")
166
+ expect(order.checkout.id).not_to eq("")
167
+ expect(order.checkout.type).to eq("Integration")
168
+ expect(order.checkout.monthly_installments_enabled).to eq(true)
169
+ end
170
+ end
171
+
172
+ context "with checkout components save card create" do
173
+ it "with missing customer_info and customer_id" do
174
+ order = Conekta::Order.create(order_data_with_checkout_save_card.
175
+ merge(customer_info: customer_info))
176
+
177
+ expect(order).to be_a(Conekta::Order)
178
+ expect(order.checkout.class.to_s).to eq("Conekta::Checkout")
179
+ expect(order.checkout.id).not_to eq("")
180
+ expect(order.checkout.type).to eq("Integration")
181
+ expect(order.checkout.on_demand_enabled).to eq(true)
182
+ end
183
+ end
184
+ end
100
185
  end
101
186
 
102
187
  context "updating orders" do
@@ -109,7 +194,7 @@ describe Conekta::Order do
109
194
  end
110
195
 
111
196
  it "unsuccessful order update" do
112
- expect{
197
+ expect {
113
198
  order.update(charges: charges)
114
199
  }.to raise_error(Conekta::ParameterValidationError)
115
200
  end
@@ -122,32 +207,32 @@ describe Conekta::Order do
122
207
  description: "Imported From Mex.",
123
208
  unit_price: 35000,
124
209
  quantity: 1,
125
- tags: ["food", "mexican food"]
210
+ tags: ["food", "mexican food"],
126
211
  }
127
212
  end
128
213
 
129
214
  let(:tax_line_params) do
130
215
  {
131
216
  description: "IVA",
132
- amount: 600
217
+ amount: 600,
133
218
  }
134
219
  end
135
220
 
136
221
  let(:shipping_line_params) do
137
222
  {
138
- description: "Otro Shipping",
139
- amount: 40,
223
+ description: "Otro Shipping",
224
+ amount: 40,
140
225
  tracking_number: "TRACK124",
141
- carrier: "USPS",
142
- method: "Train",
226
+ carrier: "USPS",
227
+ method: "Train",
143
228
  }
144
229
  end
145
230
 
146
231
  let(:discount_line_params) do
147
232
  {
148
233
  code: "Cupon de descuento",
149
- type: "loyalty",
150
- amount: 10
234
+ type: "loyalty",
235
+ amount: 10,
151
236
  }
152
237
  end
153
238
 
@@ -155,9 +240,9 @@ describe Conekta::Order do
155
240
  {
156
241
  payment_method: {
157
242
  type: "oxxo_cash",
158
- expires_at: (Time.now + 3600).to_i
243
+ expires_at: (Time.now + 3600).to_i,
159
244
  },
160
- amount: 35000
245
+ amount: 35000,
161
246
  }
162
247
  end
163
248
 
@@ -174,8 +259,8 @@ describe Conekta::Order do
174
259
  state: "Alberta",
175
260
  country: "MX",
176
261
  postal_code: "78219",
177
- residential: true
178
- }
262
+ residential: true,
263
+ },
179
264
  }
180
265
  end
181
266
 
@@ -183,15 +268,15 @@ describe Conekta::Order do
183
268
 
184
269
  it "successfully creates charge for order" do
185
270
  other_params = {
186
- currency: 'mxn',
271
+ currency: "mxn",
187
272
  customer_info: {
188
- name: 'John Constantine',
189
- phone: '+5213353319758',
190
- email: 'hola@hola.com'
191
- }
273
+ name: "John Constantine",
274
+ phone: "+5213353319758",
275
+ email: "hola@hola.com",
276
+ },
192
277
  }
193
278
 
194
- order = Conekta::Order.create(order_data.merge(other_params))
279
+ order = Conekta::Order.create(order_data.merge(other_params))
195
280
  charge = order.create_charge(charge_params)
196
281
 
197
282
  expect(charge.class.to_s).to eq("Conekta::Charge")
@@ -206,7 +291,7 @@ describe Conekta::Order do
206
291
  end
207
292
 
208
293
  it "successfully creates tax line for order" do
209
- tax_line = order.create_tax_line(tax_line_params)
294
+ tax_line = order.create_tax_line(tax_line_params)
210
295
  new_tax_line = order.create_tax_line(description: "ISR", amount: 2)
211
296
 
212
297
  expect(tax_line.class.to_s).to eq("Conekta::TaxLine")
@@ -224,7 +309,7 @@ describe Conekta::Order do
224
309
  it "successfully creates discount line for order" do
225
310
  discount_line = order.create_discount_line(discount_line_params)
226
311
 
227
- discount_line.update({amount: 1000})
312
+ discount_line.update({ amount: 1000 })
228
313
 
229
314
  expect(discount_line.class.to_s).to eq("Conekta::DiscountLine")
230
315
  expect(order.discount_lines.class.to_s).to eq("Conekta::List")
@@ -257,7 +342,7 @@ describe Conekta::Order do
257
342
 
258
343
  it "successfully captures an order" do
259
344
  order = Conekta::Order.create(order_data_with_card_charges.
260
- merge(customer_info: customer_info, pre_authorize: true))
345
+ merge(customer_info: customer_info, pre_authorize: true))
261
346
  expect(order.payment_status).to eq("pre_authorized")
262
347
 
263
348
  order.authorize_capture
@@ -269,18 +354,18 @@ describe Conekta::Order do
269
354
  let(:order_refund) do
270
355
  {
271
356
  amount: 35000,
272
- reason: "requested_by_client"
357
+ reason: "requested_by_client",
273
358
  }
274
359
  end
275
360
 
276
361
  it "test successful refund" do
277
362
  order = Conekta::Order.create(order_data_with_card_charges.
278
- merge(customer_info: customer_info).
279
- merge(line_items: line_items))
363
+ merge(customer_info: customer_info).
364
+ merge(line_items: line_items))
280
365
  begin
281
- order.refund(order_refund)
366
+ order.refund(order_refund)
282
367
  rescue Exception => e
283
- puts e.details.map{|d| d.message}
368
+ puts e.details.map { |d| d.message }
284
369
  end
285
370
 
286
371
  refunded_order = Conekta::Order.find(order.id)
data/spec/spec_helper.rb CHANGED
@@ -3,7 +3,6 @@ $LOAD_PATH.unshift(File.dirname(__FILE__))
3
3
  require 'rspec'
4
4
  require 'pry'
5
5
  require 'conekta'
6
- require 'byebug'
7
6
 
8
7
  # Requires supporting files with custom matchers and macros, etc,
9
8
  # in ./support/ and its subdirectories.
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: conekta
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.4.2
4
+ version: 2.6.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Conekta
8
- autorequire:
8
+ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-01-22 00:00:00.000000000 Z
11
+ date: 2022-11-30 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -80,6 +80,20 @@ dependencies:
80
80
  - - ">="
81
81
  - !ruby/object:Gem::Version
82
82
  version: '0'
83
+ - !ruby/object:Gem::Dependency
84
+ name: i18n
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - ">="
88
+ - !ruby/object:Gem::Version
89
+ version: '0'
90
+ type: :runtime
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - ">="
95
+ - !ruby/object:Gem::Version
96
+ version: '0'
83
97
  - !ruby/object:Gem::Dependency
84
98
  name: rspec
85
99
  requirement: !ruby/object:Gem::Requirement
@@ -128,6 +142,7 @@ files:
128
142
  - lib/conekta/address.rb
129
143
  - lib/conekta/card.rb
130
144
  - lib/conekta/charge.rb
145
+ - lib/conekta/checkout.rb
131
146
  - lib/conekta/conekta_object.rb
132
147
  - lib/conekta/customer.rb
133
148
  - lib/conekta/customer_info.rb
@@ -186,6 +201,7 @@ files:
186
201
  - spec/conekta/1.0.0/plan_spec.rb
187
202
  - spec/conekta/1.0.0/token_spec.rb
188
203
  - spec/conekta/1.0.0/webhook_spec.rb
204
+ - spec/conekta/2.0.0/checkout_spec.rb
189
205
  - spec/conekta/2.0.0/customer_spec.rb
190
206
  - spec/conekta/2.0.0/discount_line_spec.rb
191
207
  - spec/conekta/2.0.0/error_spec.rb
@@ -206,7 +222,7 @@ homepage: https://www.conekta.com
206
222
  licenses:
207
223
  - MIT
208
224
  metadata: {}
209
- post_install_message:
225
+ post_install_message:
210
226
  rdoc_options: []
211
227
  require_paths:
212
228
  - lib
@@ -221,8 +237,36 @@ required_rubygems_version: !ruby/object:Gem::Requirement
221
237
  - !ruby/object:Gem::Version
222
238
  version: '0'
223
239
  requirements: []
224
- rubygems_version: 3.0.1
225
- signing_key:
240
+ rubygems_version: 3.3.26
241
+ signing_key:
226
242
  specification_version: 4
227
243
  summary: This library provides https://api.conekta.io operations
228
- test_files: []
244
+ test_files:
245
+ - spec/conekta/1.0.0/.DS_Store
246
+ - spec/conekta/1.0.0/card_spec.rb
247
+ - spec/conekta/1.0.0/charge_spec.rb
248
+ - spec/conekta/1.0.0/customer_spec.rb
249
+ - spec/conekta/1.0.0/error_spec.rb
250
+ - spec/conekta/1.0.0/event_spec.rb
251
+ - spec/conekta/1.0.0/log_spec.rb
252
+ - spec/conekta/1.0.0/payout_spec.rb
253
+ - spec/conekta/1.0.0/plan_spec.rb
254
+ - spec/conekta/1.0.0/token_spec.rb
255
+ - spec/conekta/1.0.0/webhook_spec.rb
256
+ - spec/conekta/2.0.0/checkout_spec.rb
257
+ - spec/conekta/2.0.0/customer_spec.rb
258
+ - spec/conekta/2.0.0/discount_line_spec.rb
259
+ - spec/conekta/2.0.0/error_spec.rb
260
+ - spec/conekta/2.0.0/line_item_spec.rb
261
+ - spec/conekta/2.0.0/list_spec.rb
262
+ - spec/conekta/2.0.0/order_spec.rb
263
+ - spec/conekta/2.0.0/payee_spec.rb
264
+ - spec/conekta/2.0.0/shipping_contact_spec.rb
265
+ - spec/conekta/2.0.0/shipping_line_spec.rb
266
+ - spec/conekta/2.0.0/source_spec.rb
267
+ - spec/conekta/2.0.0/tax_line_spec.rb
268
+ - spec/conekta/2.0.0/transfer_spec.rb
269
+ - spec/conekta_spec.rb
270
+ - spec/spec_helper.rb
271
+ - spec/support/fixtures/orders.json
272
+ - spec/support/shared_context.rb