compropago_sdk 3.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.
- checksums.yaml +7 -0
- data/lib/compropago_sdk.rb +31 -0
- data/lib/compropago_sdk/client.rb +31 -0
- data/lib/compropago_sdk/cp_config_sdk.rb +9 -0
- data/lib/compropago_sdk/factory/factory.rb +56 -0
- data/lib/compropago_sdk/factory/models/cp_order_info.rb +29 -0
- data/lib/compropago_sdk/factory/models/customer.rb +7 -0
- data/lib/compropago_sdk/factory/models/eval_auth_info.rb +9 -0
- data/lib/compropago_sdk/factory/models/fee_details.rb +12 -0
- data/lib/compropago_sdk/factory/models/instruction_details.rb +16 -0
- data/lib/compropago_sdk/factory/models/instructions.rb +16 -0
- data/lib/compropago_sdk/factory/models/new_order_info.rb +20 -0
- data/lib/compropago_sdk/factory/models/order_info.rb +12 -0
- data/lib/compropago_sdk/factory/models/place_order_info.rb +38 -0
- data/lib/compropago_sdk/factory/models/provider.rb +13 -0
- data/lib/compropago_sdk/factory/models/sms_data.rb +9 -0
- data/lib/compropago_sdk/factory/models/sms_info.rb +11 -0
- data/lib/compropago_sdk/factory/models/sms_object.rb +7 -0
- data/lib/compropago_sdk/factory/models/webhook.rb +8 -0
- data/lib/compropago_sdk/factory/serialize.rb +261 -0
- data/lib/compropago_sdk/service.rb +131 -0
- data/lib/compropago_sdk/tools/http.rb +72 -0
- data/lib/compropago_sdk/tools/request.rb +72 -0
- data/lib/compropago_sdk/tools/validations.rb +36 -0
- metadata +109 -0
checksums.yaml
ADDED
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
---
|
|
2
|
+
SHA1:
|
|
3
|
+
metadata.gz: 7f76ff9703f043e408818d70c0ff1cf3f5b5e975
|
|
4
|
+
data.tar.gz: 9e9a05ddea2fd99e70c1db4bece1a437cc5da9b4
|
|
5
|
+
SHA512:
|
|
6
|
+
metadata.gz: a205853520d63483f431532d0ed0f89e955962c76b0f93ef627f39802fb9310d157a9151ca134042b6092a667caf71496c76953e8c16f65f0b1802279b0daeff
|
|
7
|
+
data.tar.gz: c087cbfa1e9b695cad042d522169585791399d22cc7b051c96a189264e4ff081066108bb3cd5564024d2405213d90d7093b520068a93f4499e782b35d07e8a72
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
require 'openssl'
|
|
2
|
+
|
|
3
|
+
require 'net/http'
|
|
4
|
+
require 'json'
|
|
5
|
+
require 'base64'
|
|
6
|
+
|
|
7
|
+
require 'compropago_sdk/cp_config_sdk'
|
|
8
|
+
require 'compropago_sdk/client'
|
|
9
|
+
require 'compropago_sdk/service'
|
|
10
|
+
|
|
11
|
+
require 'compropago_sdk/tools/http'
|
|
12
|
+
require 'compropago_sdk/tools/request'
|
|
13
|
+
require 'compropago_sdk/tools/validations'
|
|
14
|
+
|
|
15
|
+
require 'compropago_sdk/factory/factory'
|
|
16
|
+
require 'compropago_sdk/factory/serialize'
|
|
17
|
+
|
|
18
|
+
require 'compropago_sdk/factory/models/cp_order_info'
|
|
19
|
+
require 'compropago_sdk/factory/models/customer'
|
|
20
|
+
require 'compropago_sdk/factory/models/eval_auth_info'
|
|
21
|
+
require 'compropago_sdk/factory/models/fee_details'
|
|
22
|
+
require 'compropago_sdk/factory/models/instruction_details'
|
|
23
|
+
require 'compropago_sdk/factory/models/instructions'
|
|
24
|
+
require 'compropago_sdk/factory/models/new_order_info'
|
|
25
|
+
require 'compropago_sdk/factory/models/order_info'
|
|
26
|
+
require 'compropago_sdk/factory/models/place_order_info'
|
|
27
|
+
require 'compropago_sdk/factory/models/provider'
|
|
28
|
+
require 'compropago_sdk/factory/models/sms_data'
|
|
29
|
+
require 'compropago_sdk/factory/models/sms_info'
|
|
30
|
+
require 'compropago_sdk/factory/models/sms_object'
|
|
31
|
+
require 'compropago_sdk/factory/models/webhook'
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
class Client
|
|
2
|
+
|
|
3
|
+
attr_accessor :publickey, :privatekey, :live, :deploy_uri, :api
|
|
4
|
+
|
|
5
|
+
def initialize(publickey, privatekey, live)
|
|
6
|
+
@publickey = publickey
|
|
7
|
+
@privatekey = privatekey
|
|
8
|
+
@live = live
|
|
9
|
+
|
|
10
|
+
if live
|
|
11
|
+
@deploy_uri = CpConfigSdk::API_LIVE_URI
|
|
12
|
+
else
|
|
13
|
+
@deploy_uri = CpConfigSdk::API_SANDBOX_URI
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
@api = Service.new self
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
def get_user
|
|
20
|
+
@privatekey
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
def get_pass
|
|
24
|
+
@publickey
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
def get_full_auth
|
|
28
|
+
@privatekey+':'+@publickey
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
end
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
class Factory
|
|
2
|
+
|
|
3
|
+
def self.get_instance_of(name, data=nil)
|
|
4
|
+
if data && data.is_a?(String)
|
|
5
|
+
data = JSON.parse data
|
|
6
|
+
elsif data && data.is_a?(Hash)
|
|
7
|
+
data = data
|
|
8
|
+
end
|
|
9
|
+
|
|
10
|
+
case name
|
|
11
|
+
when 'CpOrderInfo'
|
|
12
|
+
return Serialize::cp_order_info data
|
|
13
|
+
when 'Customer'
|
|
14
|
+
return Serialize::customer data
|
|
15
|
+
when 'EvalAuthInfo'
|
|
16
|
+
return Serialize::eval_auth_info data
|
|
17
|
+
when 'FeeDetails'
|
|
18
|
+
return Serialize::fee_details data
|
|
19
|
+
when 'InstructionDetails'
|
|
20
|
+
return Serialize::instruction_details data
|
|
21
|
+
when 'Instructions'
|
|
22
|
+
return Serialize::instructions data
|
|
23
|
+
when 'NewOrderInfo'
|
|
24
|
+
return Serialize::new_order_info data
|
|
25
|
+
when 'OrderInfo'
|
|
26
|
+
return Serialize::order_info data
|
|
27
|
+
when 'PlaceOrderInfo'
|
|
28
|
+
return Serialize::place_order_info data
|
|
29
|
+
when 'Provider'
|
|
30
|
+
return Serialize::provider data
|
|
31
|
+
when 'ListProviders'
|
|
32
|
+
aux = []
|
|
33
|
+
data.each do |provider|
|
|
34
|
+
aux.push Serialize::provider(provider)
|
|
35
|
+
end
|
|
36
|
+
return aux
|
|
37
|
+
when 'SmsData'
|
|
38
|
+
return Serialize::sms_data data
|
|
39
|
+
when 'SmsInfo'
|
|
40
|
+
return Serialize::sms_info data
|
|
41
|
+
when 'SmsObject'
|
|
42
|
+
return Serialize::sms_object data
|
|
43
|
+
when 'Webhook'
|
|
44
|
+
return Serialize::webhook data
|
|
45
|
+
when 'ListWebhooks'
|
|
46
|
+
aux = []
|
|
47
|
+
data.each do |webhook|
|
|
48
|
+
aux.push Serialize::webhook(webhook)
|
|
49
|
+
end
|
|
50
|
+
return aux
|
|
51
|
+
else
|
|
52
|
+
raise 'Object not in factory.'
|
|
53
|
+
end
|
|
54
|
+
end
|
|
55
|
+
|
|
56
|
+
end
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
class CpOrderInfo
|
|
2
|
+
|
|
3
|
+
attr_accessor :id
|
|
4
|
+
attr_accessor :type
|
|
5
|
+
attr_accessor :object
|
|
6
|
+
attr_accessor :created
|
|
7
|
+
attr_accessor :paid
|
|
8
|
+
attr_accessor :amount
|
|
9
|
+
attr_accessor :livemode
|
|
10
|
+
attr_accessor :currency
|
|
11
|
+
attr_accessor :refunded
|
|
12
|
+
attr_accessor :fee
|
|
13
|
+
attr_accessor :fee_details
|
|
14
|
+
attr_accessor :order_info
|
|
15
|
+
attr_accessor :customer
|
|
16
|
+
attr_accessor :captured
|
|
17
|
+
attr_accessor :failure_message
|
|
18
|
+
attr_accessor :failure_code
|
|
19
|
+
attr_accessor :amount_refunded
|
|
20
|
+
attr_accessor :description
|
|
21
|
+
attr_accessor :dispute
|
|
22
|
+
|
|
23
|
+
def initialize
|
|
24
|
+
@fee_details = FeeDetails.new
|
|
25
|
+
@order_info = OrderInfo.new
|
|
26
|
+
@customer = Customer.new
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
end
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
class InstructionDetails
|
|
2
|
+
|
|
3
|
+
attr_accessor :amount
|
|
4
|
+
attr_accessor :store
|
|
5
|
+
attr_accessor :payment_amount
|
|
6
|
+
attr_accessor :payment_store
|
|
7
|
+
attr_accessor :bank_account_holder_name
|
|
8
|
+
attr_accessor :bank_account_number
|
|
9
|
+
attr_accessor :bank_reference
|
|
10
|
+
attr_accessor :company_reference_name
|
|
11
|
+
attr_accessor :company_reference_number
|
|
12
|
+
attr_accessor :company_bank_number
|
|
13
|
+
attr_accessor :order_reference_number
|
|
14
|
+
attr_accessor :bank_name
|
|
15
|
+
|
|
16
|
+
end
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
class Instructions
|
|
2
|
+
|
|
3
|
+
attr_accessor :description
|
|
4
|
+
attr_accessor :step_1
|
|
5
|
+
attr_accessor :step_2
|
|
6
|
+
attr_accessor :step_3
|
|
7
|
+
attr_accessor :note_extra_comition
|
|
8
|
+
attr_accessor :note_expiration_date
|
|
9
|
+
attr_accessor :note_confirmation
|
|
10
|
+
attr_accessor :details
|
|
11
|
+
|
|
12
|
+
def initialize
|
|
13
|
+
@details = InstructionDetails.new
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
end
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
class NewOrderInfo
|
|
2
|
+
|
|
3
|
+
attr_accessor :id
|
|
4
|
+
attr_accessor :short_id
|
|
5
|
+
attr_accessor :object
|
|
6
|
+
attr_accessor :status
|
|
7
|
+
attr_accessor :created
|
|
8
|
+
attr_accessor :exp_date
|
|
9
|
+
attr_accessor :live_mode
|
|
10
|
+
attr_accessor :order_info
|
|
11
|
+
attr_accessor :fee_details
|
|
12
|
+
attr_accessor :instructions
|
|
13
|
+
|
|
14
|
+
def initialize
|
|
15
|
+
@order_info = OrderInfo.new
|
|
16
|
+
@fee_details = FeeDetails.new
|
|
17
|
+
@instructions = Instructions.new
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
end
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
class PlaceOrderInfo
|
|
2
|
+
|
|
3
|
+
attr_accessor :order_id
|
|
4
|
+
attr_accessor :order_name
|
|
5
|
+
attr_accessor :order_price
|
|
6
|
+
attr_accessor :customer_name
|
|
7
|
+
attr_accessor :customer_email
|
|
8
|
+
attr_accessor :payment_type
|
|
9
|
+
attr_accessor :currency
|
|
10
|
+
attr_accessor :image_url
|
|
11
|
+
attr_accessor :app_client_name
|
|
12
|
+
attr_accessor :app_client_version
|
|
13
|
+
|
|
14
|
+
def initialize(
|
|
15
|
+
order_id,
|
|
16
|
+
order_name,
|
|
17
|
+
order_price,
|
|
18
|
+
customer_name,
|
|
19
|
+
customer_email,
|
|
20
|
+
payment_type='OXXO',
|
|
21
|
+
currency='MXN',
|
|
22
|
+
image_url='',
|
|
23
|
+
app_client_name='sdk-ruby',
|
|
24
|
+
app_client_version=CpConfigSdk::VERSION
|
|
25
|
+
)
|
|
26
|
+
@order_id = order_id
|
|
27
|
+
@order_name = order_name
|
|
28
|
+
@order_price = order_price
|
|
29
|
+
@customer_name = customer_name
|
|
30
|
+
@customer_email = customer_email
|
|
31
|
+
@payment_type = payment_type
|
|
32
|
+
@currency = currency
|
|
33
|
+
@image_url = image_url
|
|
34
|
+
@app_client_name = app_client_name
|
|
35
|
+
@app_client_version = app_client_version
|
|
36
|
+
end
|
|
37
|
+
|
|
38
|
+
end
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
class Provider
|
|
2
|
+
|
|
3
|
+
attr_accessor :name
|
|
4
|
+
attr_accessor :store_image
|
|
5
|
+
attr_accessor :is_active
|
|
6
|
+
attr_accessor :internal_name
|
|
7
|
+
attr_accessor :image_small
|
|
8
|
+
attr_accessor :image_medium
|
|
9
|
+
attr_accessor :image_large
|
|
10
|
+
attr_accessor :transaction_limit
|
|
11
|
+
attr_accessor :rank
|
|
12
|
+
|
|
13
|
+
end
|
|
@@ -0,0 +1,261 @@
|
|
|
1
|
+
class Serialize
|
|
2
|
+
|
|
3
|
+
def self.place_order_info(data=nil)
|
|
4
|
+
if data.nil?
|
|
5
|
+
return PlaceOrderInfo.new(nil, nil, nil, nil, nil)
|
|
6
|
+
else
|
|
7
|
+
return PlaceOrderInfo.new(
|
|
8
|
+
data[:order_id],
|
|
9
|
+
data[:order_name],
|
|
10
|
+
data[:order_price],
|
|
11
|
+
data[:customer_name],
|
|
12
|
+
data[:customer_email],
|
|
13
|
+
data[:payment_type] ? data[:payment_type] : 'OXXO',
|
|
14
|
+
data[:currency] ? data[:currency] : 'MXN',
|
|
15
|
+
data[:image_url] ? data[:image_url] : '',
|
|
16
|
+
data[:app_client_name] ? data[:app_client_name] : 'sdk-ruby',
|
|
17
|
+
data[:app_client_version] ? data[:app_client_version] : CpConfigSdk::VERSION,
|
|
18
|
+
)
|
|
19
|
+
end
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
def self.cp_order_info(data=nil)
|
|
23
|
+
if data.nil?
|
|
24
|
+
return CpOrderInfo.new
|
|
25
|
+
else
|
|
26
|
+
obj = CpOrderInfo.new
|
|
27
|
+
|
|
28
|
+
obj.id = data['id']
|
|
29
|
+
obj.type = data['type']
|
|
30
|
+
obj.object = data['object']
|
|
31
|
+
obj.created = data['created']
|
|
32
|
+
obj.paid = data['paid']
|
|
33
|
+
obj.amount = data['amount']
|
|
34
|
+
obj.livemode = data['livemode']
|
|
35
|
+
obj.currency = data['currency']
|
|
36
|
+
obj.refunded = data['refunded']
|
|
37
|
+
obj.fee = data['fee']
|
|
38
|
+
|
|
39
|
+
obj.fee_details = Serialize::fee_details(data['fee_details'])
|
|
40
|
+
obj.order_info = Serialize::order_info(data['order_info'])
|
|
41
|
+
obj.customer.customer_name = Serialize::customer(data['customer'])
|
|
42
|
+
|
|
43
|
+
obj.captured = data['captured']
|
|
44
|
+
obj.failure_message = data['failure_message']
|
|
45
|
+
obj.failure_code = data['failure_code']
|
|
46
|
+
obj.amount_refunded = data['amount_refunded']
|
|
47
|
+
obj.description = data['description']
|
|
48
|
+
obj.dispute = data['dispute']
|
|
49
|
+
|
|
50
|
+
return obj
|
|
51
|
+
end
|
|
52
|
+
end
|
|
53
|
+
|
|
54
|
+
def self.customer(data=nil)
|
|
55
|
+
if data.nil?
|
|
56
|
+
Customer.new
|
|
57
|
+
else
|
|
58
|
+
obj = Customer.new
|
|
59
|
+
|
|
60
|
+
obj.customer_name = data['customer_name']
|
|
61
|
+
obj.customer_email = data['customer_email']
|
|
62
|
+
obj.customer_phone = data['customer_phone']
|
|
63
|
+
|
|
64
|
+
return obj
|
|
65
|
+
end
|
|
66
|
+
end
|
|
67
|
+
|
|
68
|
+
def self.eval_auth_info(data=nil)
|
|
69
|
+
if data.nil?
|
|
70
|
+
return EvalAuthInfo.new
|
|
71
|
+
else
|
|
72
|
+
obj = EvalAuthInfo.new
|
|
73
|
+
|
|
74
|
+
obj.type = data['type']
|
|
75
|
+
obj.livemode = data['livemode']
|
|
76
|
+
obj.mode_key = data['mode_key']
|
|
77
|
+
obj.message = data['message']
|
|
78
|
+
obj.code = data['code']
|
|
79
|
+
|
|
80
|
+
return obj
|
|
81
|
+
end
|
|
82
|
+
end
|
|
83
|
+
|
|
84
|
+
def self.fee_details(data=nil)
|
|
85
|
+
if data.nil?
|
|
86
|
+
return FeeDetails.new
|
|
87
|
+
else
|
|
88
|
+
obj = FeeDetails.new
|
|
89
|
+
|
|
90
|
+
obj.amount = data['amount'] ? data['amount'] : nil
|
|
91
|
+
obj.currency = data['currency'] ? data['currency'] : nil
|
|
92
|
+
obj.type = data['type'] ? data['type'] : nil
|
|
93
|
+
obj.description = data['description'] ? data['description'] : nil
|
|
94
|
+
obj.application = data['application'] ? data['application'] : nil
|
|
95
|
+
obj.tax_percent = data['tax_percent'] ? data['tax_percent'] : nil
|
|
96
|
+
obj.amount_refunded = data['amount_refunded'] ? data['amount_refunded'] : nil
|
|
97
|
+
obj.tax = data['tax'] ? data['tax'] : nil
|
|
98
|
+
|
|
99
|
+
return obj
|
|
100
|
+
end
|
|
101
|
+
end
|
|
102
|
+
|
|
103
|
+
def self.instruction_details(data=nil)
|
|
104
|
+
if data.nil?
|
|
105
|
+
return InstructionDetails.new
|
|
106
|
+
else
|
|
107
|
+
obj = InstructionDetails.new
|
|
108
|
+
|
|
109
|
+
obj.amount = data['amount'] ? data['amount'] : nil
|
|
110
|
+
obj.store = data['store'] ? data['store'] : nil
|
|
111
|
+
obj.payment_amount = data['payment_amount'] ? data['payment_amount'] : nil
|
|
112
|
+
obj.payment_store = data['payment_store'] ? data['payment_store'] : nil
|
|
113
|
+
obj.bank_account_holder_name = data['bank_account_holder_name'] ? data['bank_account_holder_name'] : nil
|
|
114
|
+
obj.bank_account_number = data['bank_accont_number'] ? data['bank_accont_number'] : nil
|
|
115
|
+
obj.bank_reference = data['bank_reference'] ? data['bank_reference'] : nil
|
|
116
|
+
obj.company_reference_name = data['company_reference_name'] ? data['company_reference_name'] : nil
|
|
117
|
+
obj.company_reference_number = data['company_reference_number'] ? data['company_reference_number'] : nil
|
|
118
|
+
obj.company_bank_number = data['company_bank_number'] ? data['company_bank_number'] : nil
|
|
119
|
+
obj.order_reference_number = data['order_reference_number'] ? data['order_reference_number'] : nil
|
|
120
|
+
obj.bank_name = data['bank_name'] ? data['bank_name'] : nil
|
|
121
|
+
|
|
122
|
+
return obj
|
|
123
|
+
end
|
|
124
|
+
end
|
|
125
|
+
|
|
126
|
+
def self.instructions(data=nil)
|
|
127
|
+
if data.nil?
|
|
128
|
+
return Instructions.new
|
|
129
|
+
else
|
|
130
|
+
obj = Instructions.new
|
|
131
|
+
|
|
132
|
+
obj.description = data['description']
|
|
133
|
+
obj.step_1 = data['step_1']
|
|
134
|
+
obj.step_2 = data['step_2']
|
|
135
|
+
obj.step_3 = data['step_3']
|
|
136
|
+
obj.note_extra_comition = data['note_extra_comition']
|
|
137
|
+
obj.note_expiration_date = data['note_expiration_date']
|
|
138
|
+
obj.note_confirmation = data['note_confirmation']
|
|
139
|
+
|
|
140
|
+
obj.details = Serialize::instruction_details(data['details'])
|
|
141
|
+
|
|
142
|
+
return obj
|
|
143
|
+
end
|
|
144
|
+
end
|
|
145
|
+
|
|
146
|
+
def self.new_order_info(data=nil)
|
|
147
|
+
if data.nil?
|
|
148
|
+
return NewOrderInfo.new
|
|
149
|
+
else
|
|
150
|
+
obj = NewOrderInfo.new
|
|
151
|
+
|
|
152
|
+
obj.id = data['id']
|
|
153
|
+
obj.short_id = data['short_id']
|
|
154
|
+
obj.object = data['object']
|
|
155
|
+
obj.status = data['status']
|
|
156
|
+
obj.created = data['created']
|
|
157
|
+
obj.exp_date = data['exp_date']
|
|
158
|
+
obj.live_mode = data['live_mode']
|
|
159
|
+
obj.order_info = Serialize::order_info(data['order_info'])
|
|
160
|
+
obj.fee_details = Serialize::fee_details(data['fee_details'])
|
|
161
|
+
obj.instructions = Serialize::instructions(data['instructions'])
|
|
162
|
+
|
|
163
|
+
return obj
|
|
164
|
+
end
|
|
165
|
+
end
|
|
166
|
+
|
|
167
|
+
def self.order_info(data=nil)
|
|
168
|
+
if data.nil?
|
|
169
|
+
return OrderInfo.new
|
|
170
|
+
else
|
|
171
|
+
obj = OrderInfo.new
|
|
172
|
+
|
|
173
|
+
obj.order_id = data['order_id'] ? data['order_id'] : nil
|
|
174
|
+
obj.order_price = data['order_price'] ? data['order_price'] : nil
|
|
175
|
+
obj.order_name = data['order_name'] ? data['order_name'] : nil
|
|
176
|
+
obj.payment_method = data['payment_method'] ? data['payment_method'] : nil
|
|
177
|
+
obj.store = data['store'] ? data['store'] : nil
|
|
178
|
+
obj.country = data['country'] ? data['country'] : nil
|
|
179
|
+
obj.image_url = data['image_url'] ? data['image_url'] : nil
|
|
180
|
+
obj.success_url = data['success_url'] ? data['success_url'] : nil
|
|
181
|
+
|
|
182
|
+
return obj
|
|
183
|
+
end
|
|
184
|
+
end
|
|
185
|
+
|
|
186
|
+
def self.provider(data=nil)
|
|
187
|
+
if data.nil?
|
|
188
|
+
return Provider.new
|
|
189
|
+
else
|
|
190
|
+
obj = Provider.new
|
|
191
|
+
|
|
192
|
+
obj.name = data['name']
|
|
193
|
+
obj.store_image = data['store_image']
|
|
194
|
+
obj.is_active = data['is_active']
|
|
195
|
+
obj.internal_name = data['internal_name']
|
|
196
|
+
obj.image_small = data['image_small']
|
|
197
|
+
obj.image_medium = data['image_medium']
|
|
198
|
+
obj.image_large = data['image_large']
|
|
199
|
+
obj.transaction_limit = data['transaction_limit']
|
|
200
|
+
obj.rank = data['rank']
|
|
201
|
+
|
|
202
|
+
return obj
|
|
203
|
+
end
|
|
204
|
+
end
|
|
205
|
+
|
|
206
|
+
def self.sms_object(data=nil)
|
|
207
|
+
if data.nil?
|
|
208
|
+
return SmsObject.new
|
|
209
|
+
else
|
|
210
|
+
obj = SmsObject.new
|
|
211
|
+
|
|
212
|
+
obj.id = data['id']
|
|
213
|
+
obj.object = data['object']
|
|
214
|
+
obj.short_id = data['short_id']
|
|
215
|
+
|
|
216
|
+
return obj
|
|
217
|
+
end
|
|
218
|
+
end
|
|
219
|
+
|
|
220
|
+
def self.sms_data(data=nil)
|
|
221
|
+
if data.nil?
|
|
222
|
+
return SmsData.new
|
|
223
|
+
else
|
|
224
|
+
obj = SmsData.new
|
|
225
|
+
|
|
226
|
+
obj.object = Serialize::sms_object(data['object'])
|
|
227
|
+
|
|
228
|
+
return obj
|
|
229
|
+
end
|
|
230
|
+
end
|
|
231
|
+
|
|
232
|
+
def self.sms_info(data=nil)
|
|
233
|
+
if data.nil?
|
|
234
|
+
return SmsInfo.new
|
|
235
|
+
else
|
|
236
|
+
obj = SmsInfo.new
|
|
237
|
+
|
|
238
|
+
obj.type = data['type']
|
|
239
|
+
obj.object = data['object']
|
|
240
|
+
obj.data = Serialize::sms_data(data['data'])
|
|
241
|
+
|
|
242
|
+
return obj
|
|
243
|
+
end
|
|
244
|
+
end
|
|
245
|
+
|
|
246
|
+
def self.webhook(data=nil)
|
|
247
|
+
if data.nil?
|
|
248
|
+
return Webhook.new
|
|
249
|
+
else
|
|
250
|
+
obj = Webhook.new
|
|
251
|
+
|
|
252
|
+
obj.id = data['id'] ? data['id'] : nil
|
|
253
|
+
obj.url = data['url'] ? data['url'] : nil
|
|
254
|
+
obj.mode = data['mode'] ? data['mode'] : nil
|
|
255
|
+
obj.status = data['status'] ? data['status'] : nil
|
|
256
|
+
|
|
257
|
+
return obj
|
|
258
|
+
end
|
|
259
|
+
end
|
|
260
|
+
|
|
261
|
+
end
|
|
@@ -0,0 +1,131 @@
|
|
|
1
|
+
class Service
|
|
2
|
+
|
|
3
|
+
def initialize(client)
|
|
4
|
+
@client = client
|
|
5
|
+
end
|
|
6
|
+
|
|
7
|
+
def list_providers(auth=false, limit=0)
|
|
8
|
+
if auth
|
|
9
|
+
Validations::validate_gateway @client
|
|
10
|
+
uri = @client.deploy_uri+'providers/'
|
|
11
|
+
keys = {user: @client.get_user, pass: @client.get_pass}
|
|
12
|
+
else
|
|
13
|
+
uri = @client.deploy_uri+'providers/true/'
|
|
14
|
+
keys = nil
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
if limit > 0
|
|
18
|
+
uri = uri+'?order_total='+limit.to_s
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
response = Request::get(uri, keys)
|
|
22
|
+
|
|
23
|
+
Factory::get_instance_of 'ListProviders', response
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
def verify_order(order_id)
|
|
27
|
+
Validations::validate_gateway @client
|
|
28
|
+
|
|
29
|
+
response = Request::get(
|
|
30
|
+
@client.deploy_uri+'charges/'+order_id+'/',
|
|
31
|
+
user: @client.get_user, pass: @client.get_pass
|
|
32
|
+
)
|
|
33
|
+
|
|
34
|
+
Factory::get_instance_of 'CpOrderInfo', response
|
|
35
|
+
end
|
|
36
|
+
|
|
37
|
+
def place_order(order)
|
|
38
|
+
unless order.is_a?(PlaceOrderInfo)
|
|
39
|
+
raise 'Order object is not valid'
|
|
40
|
+
end
|
|
41
|
+
|
|
42
|
+
Validations::validate_gateway @client
|
|
43
|
+
|
|
44
|
+
params = {
|
|
45
|
+
order_id: order.order_id,
|
|
46
|
+
order_name: order.order_name,
|
|
47
|
+
order_price: order.order_price,
|
|
48
|
+
customer_name: order.customer_name,
|
|
49
|
+
customer_email: order.customer_email,
|
|
50
|
+
payment_type: order.payment_type,
|
|
51
|
+
currency: order.currency,
|
|
52
|
+
image_url: order.image_url,
|
|
53
|
+
app_client_name: order.app_client_name,
|
|
54
|
+
app_client_version: order.app_client_version
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
response = Request::post(
|
|
58
|
+
@client.deploy_uri+'charges/',
|
|
59
|
+
params,
|
|
60
|
+
user: @client.get_user, pass: @client.get_pass
|
|
61
|
+
)
|
|
62
|
+
|
|
63
|
+
Factory::get_instance_of 'NewOrderInfo', response
|
|
64
|
+
end
|
|
65
|
+
|
|
66
|
+
def send_sms_instructions(number, order_id)
|
|
67
|
+
Validations::validate_gateway @client
|
|
68
|
+
|
|
69
|
+
params = {customer_phone: number}
|
|
70
|
+
|
|
71
|
+
response = Request::post(
|
|
72
|
+
@client.deploy_uri+'charges/'+order_id+'/sms/',
|
|
73
|
+
params,
|
|
74
|
+
user: @client.get_user, pass: @client.get_pass
|
|
75
|
+
)
|
|
76
|
+
|
|
77
|
+
Factory::get_instance_of 'SmsInfo', response
|
|
78
|
+
end
|
|
79
|
+
|
|
80
|
+
def create_webhook(url)
|
|
81
|
+
Validations::validate_gateway @client
|
|
82
|
+
|
|
83
|
+
params = {url: url}
|
|
84
|
+
|
|
85
|
+
response = Request::post(
|
|
86
|
+
@client.deploy_uri+'webhooks/stores/',
|
|
87
|
+
params,
|
|
88
|
+
user: @client.get_user, pass: @client.get_pass
|
|
89
|
+
)
|
|
90
|
+
|
|
91
|
+
Factory::get_instance_of 'Webhook', response
|
|
92
|
+
end
|
|
93
|
+
|
|
94
|
+
def update_webhook(webhook_id, new_url)
|
|
95
|
+
Validations::validate_gateway @client
|
|
96
|
+
|
|
97
|
+
params = {url: new_url}
|
|
98
|
+
|
|
99
|
+
response = Request::put(
|
|
100
|
+
@client.deploy_uri+'webhooks/stores/'+webhook_id+'/',
|
|
101
|
+
params,
|
|
102
|
+
user: @client.get_user, pass: @client.get_pass
|
|
103
|
+
)
|
|
104
|
+
|
|
105
|
+
Factory::get_instance_of 'Webhook', response
|
|
106
|
+
end
|
|
107
|
+
|
|
108
|
+
def delete_webhook(webhook_id)
|
|
109
|
+
Validations::validate_gateway @client
|
|
110
|
+
|
|
111
|
+
response = Request::delete(
|
|
112
|
+
@client.deploy_uri+'webhooks/stores/'+webhook_id,
|
|
113
|
+
nil,
|
|
114
|
+
user: @client.get_user, pass: @client.get_pass
|
|
115
|
+
)
|
|
116
|
+
|
|
117
|
+
Factory::get_instance_of 'Webhook', response
|
|
118
|
+
end
|
|
119
|
+
|
|
120
|
+
def list_webhooks
|
|
121
|
+
Validations::validate_gateway @client
|
|
122
|
+
|
|
123
|
+
response = Request::get(
|
|
124
|
+
@client.deploy_uri+'webhooks/stores/',
|
|
125
|
+
user: @client.get_user, pass: @client.get_pass
|
|
126
|
+
)
|
|
127
|
+
|
|
128
|
+
Factory::get_instance_of 'ListWebhooks', response
|
|
129
|
+
end
|
|
130
|
+
|
|
131
|
+
end
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
class Http
|
|
2
|
+
|
|
3
|
+
def initialize(url)
|
|
4
|
+
@url = url
|
|
5
|
+
@data = nil
|
|
6
|
+
@auth = nil
|
|
7
|
+
@method = nil
|
|
8
|
+
@extra_headers = nil
|
|
9
|
+
end
|
|
10
|
+
|
|
11
|
+
def set_method(method)
|
|
12
|
+
if method == 'GET' || method == 'POST' || method == 'PUT' || method == 'DELETE'
|
|
13
|
+
@method = method
|
|
14
|
+
else
|
|
15
|
+
raise 'Not supported method'
|
|
16
|
+
end
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
def set_auth(auth)
|
|
20
|
+
@auth = auth
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
def set_data(data)
|
|
24
|
+
@data = data.to_json
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
def set_extra_headers(headers)
|
|
28
|
+
if headers.is_a?(Hash)
|
|
29
|
+
@extra_headers = headers
|
|
30
|
+
end
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
def execute_request
|
|
34
|
+
headers = {
|
|
35
|
+
'content-type' => 'application/json',
|
|
36
|
+
'cache-control' => 'no-cache'
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
if @extra_headers
|
|
40
|
+
headers.merge @extra_headers
|
|
41
|
+
end
|
|
42
|
+
|
|
43
|
+
uri = URI.parse(@url)
|
|
44
|
+
http = Net::HTTP.new(uri.host, uri.port)
|
|
45
|
+
http.use_ssl = true
|
|
46
|
+
http.verify_mode = OpenSSL::SSL::VERIFY_NONE
|
|
47
|
+
|
|
48
|
+
case @method
|
|
49
|
+
when 'GET'
|
|
50
|
+
req = Net::HTTP::Get.new(uri.request_uri, headers)
|
|
51
|
+
when 'POST'
|
|
52
|
+
req = Net::HTTP::Post.new(uri.request_uri, headers)
|
|
53
|
+
when 'PUT'
|
|
54
|
+
req = Net::HTTP::Put.new(uri.request_uri, headers)
|
|
55
|
+
when 'DELETE'
|
|
56
|
+
req = Net::HTTP::Delete.new(uri.request_uri, headers)
|
|
57
|
+
else
|
|
58
|
+
raise 'Request method is not defined: '+@method.to_s
|
|
59
|
+
end
|
|
60
|
+
|
|
61
|
+
if @auth && @auth.is_a?(Hash)
|
|
62
|
+
req.basic_auth @auth[:user], @auth[:pass]
|
|
63
|
+
end
|
|
64
|
+
|
|
65
|
+
req.body = @data
|
|
66
|
+
|
|
67
|
+
res = http.request(req)
|
|
68
|
+
|
|
69
|
+
res.body
|
|
70
|
+
end
|
|
71
|
+
|
|
72
|
+
end
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
class Request
|
|
2
|
+
|
|
3
|
+
def self.validate_response(res)
|
|
4
|
+
if res
|
|
5
|
+
aux = JSON.parse(res)
|
|
6
|
+
|
|
7
|
+
if aux.is_a?(Hash) && aux['type'] == 'error'
|
|
8
|
+
raise 'Error: '+aux['message']
|
|
9
|
+
else
|
|
10
|
+
return true
|
|
11
|
+
end
|
|
12
|
+
else
|
|
13
|
+
raise 'Empty Response'
|
|
14
|
+
end
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
def self.get(url, auth=nil, headers=nil)
|
|
18
|
+
http = Http.new url
|
|
19
|
+
http.set_auth auth
|
|
20
|
+
http.set_method 'GET'
|
|
21
|
+
http.set_extra_headers headers
|
|
22
|
+
|
|
23
|
+
response = http.execute_request
|
|
24
|
+
|
|
25
|
+
Request::validate_response response
|
|
26
|
+
|
|
27
|
+
return response
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
def self.post(url, data=nil, auth=nil, headers=nil)
|
|
31
|
+
http = Http.new url
|
|
32
|
+
http.set_auth auth
|
|
33
|
+
http.set_method 'POST'
|
|
34
|
+
http.set_data data unless data.nil?
|
|
35
|
+
http.set_extra_headers headers
|
|
36
|
+
|
|
37
|
+
response = http.execute_request
|
|
38
|
+
|
|
39
|
+
Request::validate_response response
|
|
40
|
+
|
|
41
|
+
return response
|
|
42
|
+
end
|
|
43
|
+
|
|
44
|
+
def self.put(url, data=nil, auth=nil, headers=nil)
|
|
45
|
+
http = Http.new url
|
|
46
|
+
http.set_auth auth
|
|
47
|
+
http.set_method 'PUT'
|
|
48
|
+
http.set_data data unless data.nil?
|
|
49
|
+
http.set_extra_headers headers
|
|
50
|
+
|
|
51
|
+
response = http.execute_request
|
|
52
|
+
|
|
53
|
+
Request::validate_response response
|
|
54
|
+
|
|
55
|
+
return response
|
|
56
|
+
end
|
|
57
|
+
|
|
58
|
+
def self.delete(url, data=nil, auth=nil, headers=nil)
|
|
59
|
+
http = Http.new url
|
|
60
|
+
http.set_auth auth
|
|
61
|
+
http.set_method 'DELETE'
|
|
62
|
+
http.set_data data unless data.nil?
|
|
63
|
+
http.set_extra_headers headers
|
|
64
|
+
|
|
65
|
+
response = http.execute_request
|
|
66
|
+
|
|
67
|
+
Request::validate_response response
|
|
68
|
+
|
|
69
|
+
return response
|
|
70
|
+
end
|
|
71
|
+
|
|
72
|
+
end
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
class Validations
|
|
2
|
+
|
|
3
|
+
def self.eval_auth(client)
|
|
4
|
+
response = Request::get(client.deploy_uri+'users/auth/', user: client.get_user, pass: client.get_pass)
|
|
5
|
+
info = Factory.get_instance_of('EvalAuthInfo', response)
|
|
6
|
+
|
|
7
|
+
if info.code == 200
|
|
8
|
+
return info
|
|
9
|
+
else
|
|
10
|
+
raise 'Error :'+info.message
|
|
11
|
+
end
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
def self.validate_gateway(client)
|
|
15
|
+
unless client
|
|
16
|
+
raise 'Client object is not valid'
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
client_mode = client.live
|
|
20
|
+
|
|
21
|
+
auth_info = Validations::eval_auth client
|
|
22
|
+
|
|
23
|
+
if auth_info.mode_key != auth_info.livemode
|
|
24
|
+
raise 'Keys are diferent of store mode.'
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
if client_mode != auth_info.livemode
|
|
28
|
+
raise 'Client mode is diferent of store mode'
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
if client_mode != auth_info.mode_key
|
|
32
|
+
raise 'Client mode is diferent of keys mode'
|
|
33
|
+
end
|
|
34
|
+
end
|
|
35
|
+
|
|
36
|
+
end
|
metadata
ADDED
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
|
2
|
+
name: compropago_sdk
|
|
3
|
+
version: !ruby/object:Gem::Version
|
|
4
|
+
version: 3.0.0
|
|
5
|
+
platform: ruby
|
|
6
|
+
authors:
|
|
7
|
+
- Eduardo Aguilar
|
|
8
|
+
autorequire:
|
|
9
|
+
bindir: bin
|
|
10
|
+
cert_chain: []
|
|
11
|
+
date: 2016-12-26 00:00:00.000000000 Z
|
|
12
|
+
dependencies:
|
|
13
|
+
- !ruby/object:Gem::Dependency
|
|
14
|
+
name: bundler
|
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
|
16
|
+
requirements:
|
|
17
|
+
- - ">="
|
|
18
|
+
- !ruby/object:Gem::Version
|
|
19
|
+
version: '0'
|
|
20
|
+
type: :development
|
|
21
|
+
prerelease: false
|
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
23
|
+
requirements:
|
|
24
|
+
- - ">="
|
|
25
|
+
- !ruby/object:Gem::Version
|
|
26
|
+
version: '0'
|
|
27
|
+
- !ruby/object:Gem::Dependency
|
|
28
|
+
name: rake
|
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
|
30
|
+
requirements:
|
|
31
|
+
- - ">="
|
|
32
|
+
- !ruby/object:Gem::Version
|
|
33
|
+
version: '0'
|
|
34
|
+
type: :development
|
|
35
|
+
prerelease: false
|
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
37
|
+
requirements:
|
|
38
|
+
- - ">="
|
|
39
|
+
- !ruby/object:Gem::Version
|
|
40
|
+
version: '0'
|
|
41
|
+
- !ruby/object:Gem::Dependency
|
|
42
|
+
name: minitest
|
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
|
44
|
+
requirements:
|
|
45
|
+
- - ">="
|
|
46
|
+
- !ruby/object:Gem::Version
|
|
47
|
+
version: '0'
|
|
48
|
+
type: :development
|
|
49
|
+
prerelease: false
|
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
51
|
+
requirements:
|
|
52
|
+
- - ">="
|
|
53
|
+
- !ruby/object:Gem::Version
|
|
54
|
+
version: '0'
|
|
55
|
+
description: Provee los servicios de creacion de cargos verificacion etc.
|
|
56
|
+
email:
|
|
57
|
+
- eduardo.aguilar@compropago.com
|
|
58
|
+
executables: []
|
|
59
|
+
extensions: []
|
|
60
|
+
extra_rdoc_files: []
|
|
61
|
+
files:
|
|
62
|
+
- "./lib/compropago_sdk.rb"
|
|
63
|
+
- "./lib/compropago_sdk/client.rb"
|
|
64
|
+
- "./lib/compropago_sdk/cp_config_sdk.rb"
|
|
65
|
+
- "./lib/compropago_sdk/factory/factory.rb"
|
|
66
|
+
- "./lib/compropago_sdk/factory/models/cp_order_info.rb"
|
|
67
|
+
- "./lib/compropago_sdk/factory/models/customer.rb"
|
|
68
|
+
- "./lib/compropago_sdk/factory/models/eval_auth_info.rb"
|
|
69
|
+
- "./lib/compropago_sdk/factory/models/fee_details.rb"
|
|
70
|
+
- "./lib/compropago_sdk/factory/models/instruction_details.rb"
|
|
71
|
+
- "./lib/compropago_sdk/factory/models/instructions.rb"
|
|
72
|
+
- "./lib/compropago_sdk/factory/models/new_order_info.rb"
|
|
73
|
+
- "./lib/compropago_sdk/factory/models/order_info.rb"
|
|
74
|
+
- "./lib/compropago_sdk/factory/models/place_order_info.rb"
|
|
75
|
+
- "./lib/compropago_sdk/factory/models/provider.rb"
|
|
76
|
+
- "./lib/compropago_sdk/factory/models/sms_data.rb"
|
|
77
|
+
- "./lib/compropago_sdk/factory/models/sms_info.rb"
|
|
78
|
+
- "./lib/compropago_sdk/factory/models/sms_object.rb"
|
|
79
|
+
- "./lib/compropago_sdk/factory/models/webhook.rb"
|
|
80
|
+
- "./lib/compropago_sdk/factory/serialize.rb"
|
|
81
|
+
- "./lib/compropago_sdk/service.rb"
|
|
82
|
+
- "./lib/compropago_sdk/tools/http.rb"
|
|
83
|
+
- "./lib/compropago_sdk/tools/request.rb"
|
|
84
|
+
- "./lib/compropago_sdk/tools/validations.rb"
|
|
85
|
+
homepage: https://github.com/compropago/compropago-ruby
|
|
86
|
+
licenses:
|
|
87
|
+
- MIT
|
|
88
|
+
metadata: {}
|
|
89
|
+
post_install_message:
|
|
90
|
+
rdoc_options: []
|
|
91
|
+
require_paths:
|
|
92
|
+
- lib
|
|
93
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
|
94
|
+
requirements:
|
|
95
|
+
- - ">="
|
|
96
|
+
- !ruby/object:Gem::Version
|
|
97
|
+
version: '0'
|
|
98
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
|
99
|
+
requirements:
|
|
100
|
+
- - ">="
|
|
101
|
+
- !ruby/object:Gem::Version
|
|
102
|
+
version: '0'
|
|
103
|
+
requirements: []
|
|
104
|
+
rubyforge_project:
|
|
105
|
+
rubygems_version: 2.5.1
|
|
106
|
+
signing_key:
|
|
107
|
+
specification_version: 4
|
|
108
|
+
summary: Gema para API ComproPago
|
|
109
|
+
test_files: []
|