11"""
22MercadoPago Integration Library
33Access MercadoPago for payments integration
4+
5+ @author hcasatti
46"""
57
68from json .encoder import JSONEncoder
@@ -31,10 +33,13 @@ class MPInvalidCredentials(MPException):
3133
3234
3335class MP (object ):
34- version = "1.1.1 "
36+ version = "1.2.0 "
3537 __access_data = None
3638 __ll_access_token = None
3739 __sandbox = False
40+ platform_id = None
41+ integrator_id = None
42+ corporation_id = None
3843
3944 def __init__ (self , * args ):
4045 """
@@ -78,6 +83,15 @@ def get_access_token(self):
7883 else :
7984 raise MPInvalidCredentials (str (access_data ))
8085
86+ def set_platform_id (self , platform_id ):
87+ self .platform_id = platform_id
88+
89+ def set_integrator_id (self , integrator_id ):
90+ self .integrator_id = integrator_id
91+
92+ def set_corporation_id (self , corporation_id ):
93+ self .corporation_id = corporation_id
94+
8195 def get_payment (self , id ):
8296 """
8397 Get information for specific payment
@@ -86,11 +100,7 @@ def get_payment(self, id):
86100 @return json
87101 """
88102
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 )
103+ payment_info = self .__rest_client .get ("/v1/payments/" + id )
94104 return payment_info
95105
96106 def get_payment_info (self , id ):
@@ -103,8 +113,7 @@ def get_authorized_payment(self, id):
103113 @param id
104114 @return json
105115 """
106- access_token = self .get_access_token ()
107- authorized_payment_info = self .__rest_client .get ("/authorized_payments/" + id + "?access_token=" + access_token )
116+ authorized_payment_info = self .__rest_client .get ("/authorized_payments/" + id )
108117 return authorized_payment_info
109118
110119
@@ -116,9 +125,8 @@ def refund_payment(self, id):
116125 @return json
117126 """
118127
119- access_token = self .get_access_token ()
120128 refund_status = {}
121- response = self .__rest_client .post ("/v1/payments/" + id + "/refunds?access_token=" + access_token , refund_status )
129+ response = self .__rest_client .post ("/v1/payments/" + id + "/refunds" , refund_status )
122130 return response
123131
124132
@@ -130,9 +138,8 @@ def cancel_payment(self, id):
130138 @return json
131139 """
132140
133- access_token = self .get_access_token ()
134141 cancel_status = {"status" :"cancelled" }
135- response = self .__rest_client .put ("/v1/payments/" + id + "?access_token=" + access_token , cancel_status )
142+ response = self .__rest_client .put ("/v1/payments/" + id , cancel_status )
136143 return response
137144
138145
@@ -144,9 +151,8 @@ def cancel_preapproval_payment(self, id):
144151 @return json
145152 """
146153
147- access_token = self .get_access_token ()
148154 cancel_status = {"status" :"cancelled" }
149- response = self .__rest_client .put ("/preapproval/" + id + "?access_token=" + access_token , cancel_status )
155+ response = self .__rest_client .put ("/preapproval/" + id , cancel_status )
150156 return response
151157
152158
@@ -160,13 +166,9 @@ def search_payment(self, filters, offset=0, limit=0):
160166 @return json
161167 """
162168
163- access_token = self .get_access_token ()
164- filters ["access_token" ] = access_token
165169 filters ["offset" ] = offset
166170 filters ["limit" ] = limit
167171
168- uri_prefix = "/sandbox" if self .__sandbox else ""
169-
170172 payment_result = self .__rest_client .get ("/v1/payments/search" , filters )
171173 return payment_result
172174
@@ -178,8 +180,7 @@ def create_preference(self, preference):
178180 @return json
179181 """
180182
181- access_token = self .get_access_token ()
182- preference_result = self .__rest_client .post ("/checkout/preferences?access_token=" + access_token , preference )
183+ preference_result = self .__rest_client .post ("/checkout/preferences" , preference )
183184 return preference_result
184185
185186
@@ -192,8 +193,7 @@ def update_preference(self, id, preference):
192193 @return json
193194 """
194195
195- access_token = self .get_access_token ()
196- preference_result = self .__rest_client .put ("/checkout/preferences/" + id + "?access_token=" + access_token , preference )
196+ preference_result = self .__rest_client .put ("/checkout/preferences/" + id , preference )
197197 return preference_result
198198
199199
@@ -205,8 +205,7 @@ def get_preference(self, id):
205205 @param preference
206206 @return json
207207 """
208- access_token = self .get_access_token ()
209- preference_result = self .__rest_client .get ("/checkout/preferences/" + id + "?access_token=" + access_token )
208+ preference_result = self .__rest_client .get ("/checkout/preferences/" + id )
210209 return preference_result
211210
212211
@@ -217,8 +216,7 @@ def create_preapproval_payment(self, preapproval_payment):
217216 @param preapproval_payment
218217 @return json
219218 """
220- access_token = self .get_access_token ()
221- preapproval_payment_result = self .__rest_client .post ("/preapproval?access_token=" + access_token , preapproval_payment )
219+ preapproval_payment_result = self .__rest_client .post ("/preapproval" , preapproval_payment )
222220 return preapproval_payment_result
223221
224222 def get_preapproval_payment (self , id ):
@@ -229,8 +227,7 @@ def get_preapproval_payment(self, id):
229227 @return json
230228
231229 """
232- access_token = self .get_access_token ()
233- preapproval_payment_result = self .__rest_client .get ("/preapproval/" + id + "?access_token=" + access_token )
230+ preapproval_payment_result = self .__rest_client .get ("/preapproval/" + id )
234231 return preapproval_payment_result
235232
236233 def update_preapproval_payment (self , id , preapproval_payment ):
@@ -241,8 +238,7 @@ def update_preapproval_payment(self, id, preapproval_payment):
241238 @return json
242239
243240 """
244- access_token = self .get_access_token ()
245- preapproval_payment_result = self .__rest_client .put ("/preapproval/" + id + "?access_token=" + access_token , preapproval_payment )
241+ preapproval_payment_result = self .__rest_client .put ("/preapproval/" + id , preapproval_payment )
246242 return preapproval_payment_result
247243
248244 def get (self , uri , params = None , authenticate = True ):
@@ -256,10 +252,6 @@ def get(self, uri, params=None, authenticate=True):
256252 if params is None :
257253 params = {}
258254
259- if authenticate :
260- access_token = self .get_access_token ()
261- params ["access_token" ] = access_token
262-
263255 result = self .__rest_client .get (uri , params )
264256 return result
265257
@@ -274,8 +266,6 @@ def post(self, uri, data, params=None):
274266 if params is None :
275267 params = {}
276268
277- access_token = self .get_access_token ()
278- params ["access_token" ] = access_token
279269 result = self .__rest_client .post (uri , data , params )
280270 return result
281271
@@ -290,8 +280,6 @@ def put(self, uri, data, params=None):
290280 if params is None :
291281 params = {}
292282
293- access_token = self .get_access_token ()
294- params ["access_token" ] = access_token
295283 result = self .__rest_client .put (uri , data , params )
296284 return result
297285
@@ -305,8 +293,6 @@ def delete(self, uri, params=None):
305293 if params is None :
306294 params = {}
307295
308- access_token = self .get_access_token ()
309- params ["access_token" ] = access_token
310296 result = self .__rest_client .delete (uri , params )
311297 return result
312298
@@ -315,7 +301,7 @@ class __RestClient(object):
315301 __API_BASE_URL = "https://api.mercadopago.com"
316302 MIME_JSON = "application/json"
317303 MIME_FORM = "application/x-www-form-urlencoded"
318-
304+ AUTH_HEADER = "Authorization"
319305 def __init__ (self , outer ):
320306 self .__outer = outer
321307 self .USER_AGENT = "MercadoPago Python SDK v" + self .__outer .version
@@ -335,9 +321,12 @@ def get_session(self):
335321 self .get_mercadopago_transport_adapter ())
336322 return session
337323
324+ def getAuthorizationHeader (self ):
325+ return 'Bearer ' + self .__outer .get_access_token ()
326+
338327 def get (self , uri , params = None ):
339328 s = self .get_session ()
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 })
329+ 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 () })
341330
342331 response = {
343332 "status" : api_result .status_code ,
@@ -351,7 +340,7 @@ def post(self, uri, data=None, params=None, content_type=MIME_JSON):
351340 data = JSONEncoder ().encode (data )
352341
353342 s = self .get_session ()
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 })
343+ 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 () })
355344
356345 response = {
357346 "status" : api_result .status_code ,
@@ -365,7 +354,7 @@ def put(self, uri, data=None, params=None, content_type=MIME_JSON):
365354 data = JSONEncoder ().encode (data )
366355
367356 s = self .get_session ()
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 })
357+ 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 () })
369358
370359 response = {
371360 "status" : api_result .status_code ,
@@ -376,12 +365,11 @@ def put(self, uri, data=None, params=None, content_type=MIME_JSON):
376365
377366 def delete (self , uri , params = None ):
378367 s = self .get_session ()
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 })
368+ 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 () })
380369
381370 response = {
382371 "status" : api_result .status_code ,
383372 "response" : api_result .json ()
384373 }
385374
386375 return response
387-
0 commit comments