1+ """
2+ MercadoPago Integration Library
3+ Access MercadoPago for payments integration
4+ """
5+
6+ from json .encoder import JSONEncoder
7+ import requests
8+
9+ from requests .adapters import HTTPAdapter
10+ from requests .packages .urllib3 .poolmanager import PoolManager
11+
12+ import platform
13+ import ssl
14+ import sys
15+
16+ class MPSSLAdapter (HTTPAdapter ):
17+ def init_poolmanager (self , connections , maxsize , block = False ):
18+ self .poolmanager = PoolManager (num_pools = connections ,
19+ maxsize = maxsize ,
20+ block = block )
21+
22+ class MPException (Exception ):
23+ def __init__ (self , value ):
24+ self .value = value
25+
26+ def __repr__ (self ):
27+ return self .value
28+
29+ class MPInvalidCredentials (MPException ):
30+ pass
31+
32+
133class MP (object ):
2- version = "1.2.0 "
34+ version = "1.1.1 "
335 __access_data = None
436 __ll_access_token = None
537 __sandbox = False
6- platform_id = None
7- integrator_id = None
8- corporation_id = None
938
1039 def __init__ (self , * args ):
1140 """
@@ -23,15 +52,7 @@ def __init__(self, *args):
2352 else :
2453 raise MPInvalidCredentials (None )
2554
26- self .card = Card (self .__client_id , self .__client_secret , self .__ll_access_token , self .version )
27- self .cardtoken = CardToken (self .__client_id , self .__client_secret , self .__ll_access_token , self .version )
28- self .customer = Customer (self .__client_id , self .__client_secret , self .__ll_access_token , self .version )
29- self .payment = Payment (self .__client_id , self .__client_secret , self .__ll_access_token , self .version )
30- self .preference = Preference (self .__client_id , self .__client_secret , self .__ll_access_token , self .version )
31- self .genericcall = GenericCall (self .__client_id , self .__client_secret , self .__ll_access_token , self .version )
32- self .discountcampaign = DiscountCampaign (self .__client_id , self .__client_secret , self .__ll_access_token , self .version )
33- self .identificationtype = IdentificationType (self .__client_id , self .__client_secret , self .__ll_access_token , self .version )
34- self .merchantorder = MerchantOrder (self .__client_id , self .__client_secret , self .__ll_access_token , self .version )
55+ self .__rest_client = self .__RestClient (self )
3556
3657 def sandbox_mode (self , enable = None ):
3758 if not enable is None :
@@ -57,15 +78,6 @@ def get_access_token(self):
5778 else :
5879 raise MPInvalidCredentials (str (access_data ))
5980
60- def set_platform_id (self , platform_id ):
61- self .platform_id = platform_id
62-
63- def set_integrator_id (self , integrator_id ):
64- self .integrator_id = integrator_id
65-
66- def set_corporation_id (self , corporation_id ):
67- self .corporation_id = corporation_id
68-
6981 def get_payment (self , id ):
7082 """
7183 Get information for specific payment
@@ -74,7 +86,11 @@ def get_payment(self, id):
7486 @return json
7587 """
7688
77- payment_info = self .__rest_client .get ("/v1/payments/" + id )
89+ access_token = self .get_access_token ()
90+
91+ uri_prefix = "/sandbox" if self .__sandbox else ""
92+
93+ payment_info = self .__rest_client .get ("/v1/payments/" + id + "?access_token=" + access_token )
7894 return payment_info
7995
8096 def get_payment_info (self , id ):
@@ -87,7 +103,8 @@ def get_authorized_payment(self, id):
87103 @param id
88104 @return json
89105 """
90- authorized_payment_info = self .__rest_client .get ("/authorized_payments/" + id )
106+ access_token = self .get_access_token ()
107+ authorized_payment_info = self .__rest_client .get ("/authorized_payments/" + id + "?access_token=" + access_token )
91108 return authorized_payment_info
92109
93110
@@ -99,8 +116,9 @@ def refund_payment(self, id):
99116 @return json
100117 """
101118
119+ access_token = self .get_access_token ()
102120 refund_status = {}
103- response = self .__rest_client .post ("/v1/payments/" + id + "/refunds" , refund_status )
121+ response = self .__rest_client .post ("/v1/payments/" + id + "/refunds?access_token=" + access_token , refund_status )
104122 return response
105123
106124
@@ -112,8 +130,9 @@ def cancel_payment(self, id):
112130 @return json
113131 """
114132
133+ access_token = self .get_access_token ()
115134 cancel_status = {"status" :"cancelled" }
116- response = self .__rest_client .put ("/v1/payments/" + id , cancel_status )
135+ response = self .__rest_client .put ("/v1/payments/" + id + "?access_token=" + access_token , cancel_status )
117136 return response
118137
119138
@@ -125,8 +144,9 @@ def cancel_preapproval_payment(self, id):
125144 @return json
126145 """
127146
147+ access_token = self .get_access_token ()
128148 cancel_status = {"status" :"cancelled" }
129- response = self .__rest_client .put ("/preapproval/" + id , cancel_status )
149+ response = self .__rest_client .put ("/preapproval/" + id + "?access_token=" + access_token , cancel_status )
130150 return response
131151
132152
@@ -140,9 +160,13 @@ def search_payment(self, filters, offset=0, limit=0):
140160 @return json
141161 """
142162
163+ access_token = self .get_access_token ()
164+ filters ["access_token" ] = access_token
143165 filters ["offset" ] = offset
144166 filters ["limit" ] = limit
145167
168+ uri_prefix = "/sandbox" if self .__sandbox else ""
169+
146170 payment_result = self .__rest_client .get ("/v1/payments/search" , filters )
147171 return payment_result
148172
@@ -154,7 +178,8 @@ def create_preference(self, preference):
154178 @return json
155179 """
156180
157- preference_result = self .__rest_client .post ("/checkout/preferences" , preference )
181+ access_token = self .get_access_token ()
182+ preference_result = self .__rest_client .post ("/checkout/preferences?access_token=" + access_token , preference )
158183 return preference_result
159184
160185
@@ -167,7 +192,8 @@ def update_preference(self, id, preference):
167192 @return json
168193 """
169194
170- preference_result = self .__rest_client .put ("/checkout/preferences/" + id , preference )
195+ access_token = self .get_access_token ()
196+ preference_result = self .__rest_client .put ("/checkout/preferences/" + id + "?access_token=" + access_token , preference )
171197 return preference_result
172198
173199
@@ -179,7 +205,8 @@ def get_preference(self, id):
179205 @param preference
180206 @return json
181207 """
182- preference_result = self .__rest_client .get ("/checkout/preferences/" + id )
208+ access_token = self .get_access_token ()
209+ preference_result = self .__rest_client .get ("/checkout/preferences/" + id + "?access_token=" + access_token )
183210 return preference_result
184211
185212
@@ -190,7 +217,8 @@ def create_preapproval_payment(self, preapproval_payment):
190217 @param preapproval_payment
191218 @return json
192219 """
193- preapproval_payment_result = self .__rest_client .post ("/preapproval" , preapproval_payment )
220+ access_token = self .get_access_token ()
221+ preapproval_payment_result = self .__rest_client .post ("/preapproval?access_token=" + access_token , preapproval_payment )
194222 return preapproval_payment_result
195223
196224 def get_preapproval_payment (self , id ):
@@ -201,7 +229,8 @@ def get_preapproval_payment(self, id):
201229 @return json
202230
203231 """
204- preapproval_payment_result = self .__rest_client .get ("/preapproval/" + id )
232+ access_token = self .get_access_token ()
233+ preapproval_payment_result = self .__rest_client .get ("/preapproval/" + id + "?access_token=" + access_token )
205234 return preapproval_payment_result
206235
207236 def update_preapproval_payment (self , id , preapproval_payment ):
@@ -212,7 +241,8 @@ def update_preapproval_payment(self, id, preapproval_payment):
212241 @return json
213242
214243 """
215- preapproval_payment_result = self .__rest_client .put ("/preapproval/" + id , preapproval_payment )
244+ access_token = self .get_access_token ()
245+ preapproval_payment_result = self .__rest_client .put ("/preapproval/" + id + "?access_token=" + access_token , preapproval_payment )
216246 return preapproval_payment_result
217247
218248 def get (self , uri , params = None , authenticate = True ):
@@ -226,6 +256,10 @@ def get(self, uri, params=None, authenticate=True):
226256 if params is None :
227257 params = {}
228258
259+ if authenticate :
260+ access_token = self .get_access_token ()
261+ params ["access_token" ] = access_token
262+
229263 result = self .__rest_client .get (uri , params )
230264 return result
231265
@@ -240,6 +274,8 @@ def post(self, uri, data, params=None):
240274 if params is None :
241275 params = {}
242276
277+ access_token = self .get_access_token ()
278+ params ["access_token" ] = access_token
243279 result = self .__rest_client .post (uri , data , params )
244280 return result
245281
@@ -254,6 +290,8 @@ def put(self, uri, data, params=None):
254290 if params is None :
255291 params = {}
256292
293+ access_token = self .get_access_token ()
294+ params ["access_token" ] = access_token
257295 result = self .__rest_client .put (uri , data , params )
258296 return result
259297
@@ -267,6 +305,8 @@ def delete(self, uri, params=None):
267305 if params is None :
268306 params = {}
269307
308+ access_token = self .get_access_token ()
309+ params ["access_token" ] = access_token
270310 result = self .__rest_client .delete (uri , params )
271311 return result
272312
@@ -275,7 +315,7 @@ class __RestClient(object):
275315 __API_BASE_URL = "https://api.mercadopago.com"
276316 MIME_JSON = "application/json"
277317 MIME_FORM = "application/x-www-form-urlencoded"
278- AUTH_HEADER = "Authorization"
318+
279319 def __init__ (self , outer ):
280320 self .__outer = outer
281321 self .USER_AGENT = "MercadoPago Python SDK v" + self .__outer .version
@@ -295,12 +335,9 @@ def get_session(self):
295335 self .get_mercadopago_transport_adapter ())
296336 return session
297337
298- def getAuthorizationHeader (self ):
299- return 'Bearer ' + self .__outer .get_access_token ()
300-
301338 def get (self , uri , params = None ):
302339 s = self .get_session ()
303- api_result = s .get (self .__API_BASE_URL + uri , params = params , headers = {'x-product-id' : self .PRODUCT_ID , 'x-tracking-id' : self .TRACKING_ID , 'User-Agent' :self .USER_AGENT , 'Accept' :self .MIME_JSON , self . AUTH_HEADER : self . getAuthorizationHeader () })
340+ api_result = s .get (self .__API_BASE_URL + uri , params = params , headers = {'x-product-id' : self .PRODUCT_ID , 'x-tracking-id' : self .TRACKING_ID , 'User-Agent' :self .USER_AGENT , 'Accept' :self .MIME_JSON })
304341
305342 response = {
306343 "status" : api_result .status_code ,
@@ -314,7 +351,7 @@ def post(self, uri, data=None, params=None, content_type=MIME_JSON):
314351 data = JSONEncoder ().encode (data )
315352
316353 s = self .get_session ()
317- api_result = s .post (self .__API_BASE_URL + uri , params = params , data = data , headers = {'x-product-id' : self .PRODUCT_ID , 'x-tracking-id' : self .TRACKING_ID , 'User-Agent' :self .USER_AGENT , 'Content-type' :content_type , 'Accept' :self .MIME_JSON , 'x-platform-id' : self . __outer . platform_id , 'x-integrator-id' : self . __outer . integrator_id , 'x-corporation-id' : self . __outer . corporation_id , self . AUTH_HEADER : self . getAuthorizationHeader () })
354+ api_result = s .post (self .__API_BASE_URL + uri , params = params , data = data , headers = {'x-product-id' : self .PRODUCT_ID , 'x-tracking-id' : self .TRACKING_ID , 'User-Agent' :self .USER_AGENT , 'Content-type' :content_type , 'Accept' :self .MIME_JSON })
318355
319356 response = {
320357 "status" : api_result .status_code ,
@@ -328,7 +365,7 @@ def put(self, uri, data=None, params=None, content_type=MIME_JSON):
328365 data = JSONEncoder ().encode (data )
329366
330367 s = self .get_session ()
331- api_result = s .put (self .__API_BASE_URL + uri , params = params , data = data , headers = {'x-product-id' : self .PRODUCT_ID , 'x-tracking-id' : self .TRACKING_ID , 'User-Agent' :self .USER_AGENT , 'Content-type' :content_type , 'Accept' :self .MIME_JSON , self . AUTH_HEADER : self . getAuthorizationHeader () })
368+ api_result = s .put (self .__API_BASE_URL + uri , params = params , data = data , headers = {'x-product-id' : self .PRODUCT_ID , 'x-tracking-id' : self .TRACKING_ID , 'User-Agent' :self .USER_AGENT , 'Content-type' :content_type , 'Accept' :self .MIME_JSON })
332369
333370 response = {
334371 "status" : api_result .status_code ,
@@ -339,11 +376,12 @@ def put(self, uri, data=None, params=None, content_type=MIME_JSON):
339376
340377 def delete (self , uri , params = None ):
341378 s = self .get_session ()
342- api_result = s .delete (self .__API_BASE_URL + uri , params = params , headers = {'x-product-id' : self .PRODUCT_ID , 'x-tracking-id' : self .TRACKING_ID , 'User-Agent' :self .USER_AGENT , 'Accept' :self .MIME_JSON , self . AUTH_HEADER : self . getAuthorizationHeader () })
379+ api_result = s .delete (self .__API_BASE_URL + uri , params = params , headers = {'x-product-id' : self .PRODUCT_ID , 'x-tracking-id' : self .TRACKING_ID , 'User-Agent' :self .USER_AGENT , 'Accept' :self .MIME_JSON })
343380
344381 response = {
345382 "status" : api_result .status_code ,
346383 "response" : api_result .json ()
347384 }
348385
349386 return response
387+
0 commit comments