1- import warnings
1+ import uuid
22
33import requests
44
@@ -20,101 +20,137 @@ def __init__(self, environment, merchant_swish_number, cert, verify=False):
2020 self .cert = cert
2121 self .verify = verify
2222
23+ def __get (self , endpoint , parameter ):
24+ url = self .environment .base_url + endpoint + '/' + str (parameter )
25+ return requests .get ( url = url
26+ , cert = self .cert
27+ , verify = self .verify
28+ )
29+
2330 def __post (self , endpoint , payload ):
2431 if endpoint == 'commerce' :
2532 base_url = self .environment .qr_url
2633 else :
2734 base_url = self .environment .base_url
2835 url = base_url + endpoint
29- return requests .post (url = url , json = payload , headers = {'Content-Type' : 'application/json' },
30- cert = self .cert , verify = self .verify )
31-
32- def post (self , endpoint , payload ):
33- warnings .warn ("You shouldn't be calling this method. It will be private in a future version." , DeprecationWarning )
34- self .__post (endpoint , payload )
35-
36- def __get (self , endpoint , parameter ):
37- url = self .environment .base_url + endpoint + '/' + str (parameter )
38- return requests .get (url = url , cert = self .cert , verify = self .verify )
36+ return requests .post ( url = url
37+ , json = payload
38+ , cert = self .cert
39+ , verify = self .verify )
3940
40- def get (self , endpoint , parameter ):
41- warnings .warn ("You shouldn't be calling this method. It will be private in a future version." , DeprecationWarning )
42- self .__get (endpoint , parameter )
41+ def __put (self , endpoint , payload ):
42+ if endpoint == 'commerce' :
43+ base_url = self .environment .qr_url
44+ else :
45+ base_url = self .environment .base_url
46+ url = base_url + endpoint
47+ return requests .put ( url = url
48+ , json = payload
49+ , cert = self .cert
50+ , verify = self .verify
51+ )
4352
4453 def __patch (self , endpoint , parameter , payload ):
4554 url = self .environment .base_url + endpoint + '/' + str (parameter )
46- return requests .patch (url = url , json = payload , headers = {'Content-Type' : 'application/json-patch+json' },
47- cert = self .cert , verify = self .verify )
48-
49-
50- def create_payment (self , amount , currency , callback_url , payee_payment_reference = None , message = None ,
51- payer_alias = None ):
52- payment_request = Payment ({
53- 'payee_alias' : self .merchant_swish_number ,
54- 'amount' : amount ,
55- 'currency' : currency ,
56- 'callback_url' : callback_url ,
57- 'payee_payment_reference' : payee_payment_reference ,
58- 'message' : message ,
59- 'payer_alias' : payer_alias
60- })
61-
62- response = self .__post ('paymentrequests' , payment_request .to_primitive ())
55+ return requests .patch ( url = url
56+ , json = payload
57+ , cert = self .cert
58+ , verify = self .verify
59+ )
60+
61+
62+ def create_payment ( self
63+ , amount
64+ , currency
65+ , callback_url
66+ , callback_identifier = None
67+ , payee_payment_reference = None
68+ , message = None
69+ , payer_alias = None
70+ ):
71+ instruction_uuid = str (uuid .uuid4 ()).replace ('-' ,'' ).upper ()
72+ payment_request = Payment ({ 'payee_alias' : self .merchant_swish_number
73+ , 'amount' : amount
74+ , 'currency' : currency
75+ , 'callback_url' : callback_url
76+ , 'callback_identifier' : callback_identifier
77+ , 'payee_payment_reference' : payee_payment_reference
78+ , 'message' : message
79+ , 'payer_alias' : payer_alias
80+ })
81+
82+ response = self .__put (f'v2/paymentrequests/{ instruction_uuid } ' , payment_request .to_primitive ())
6383 if response .status_code == 422 :
6484 raise SwishError (response .json ())
6585 response .raise_for_status ()
6686
67- return Payment ({'id' : response .headers .get ('Location' ).split ('/' )[- 1 ],
68- 'location' : response .headers .get ('Location' ),
69- 'request_token' : response .headers .get ('PaymentRequestToken' )})
87+ return Payment ({ 'id' : response .headers .get ('Location' ).split ('/' )[- 1 ]
88+ , 'location' : response .headers .get ('Location' )
89+ , 'request_token' : response .headers .get ('PaymentRequestToken' )
90+ })
7091
7192 def get_payment (self , payment_request_id ):
72- response = self .__get ('paymentrequests' , payment_request_id )
93+ response = self .__get ('v1/ paymentrequests' , payment_request_id )
7394 response .raise_for_status ()
7495 return Payment (response .json ())
7596
7697 def cancel_payment (self , payment_request_id ):
7798 operation = Operation ()
78- response = self .__patch ('paymentrequests' , payment_request_id , [operation .to_primitive ()])
99+ response = self .__patch ('v1/ paymentrequests' , payment_request_id , [operation .to_primitive ()])
79100 response .raise_for_status ()
80101 return Payment (response .json ())
81102
82- def create_refund (self , original_payment_reference , amount , currency , callback_url , payer_payment_reference = None ,
83- payment_reference = None , payee_alias = None , message = None ):
84- refund_request = Refund ({
85- 'payer_alias' : self .merchant_swish_number ,
86- 'payee_alias' : payee_alias ,
87- 'original_payment_reference' : original_payment_reference ,
88- 'amount' : amount ,
89- 'currency' : currency ,
90- 'callback_url' : callback_url ,
91- 'payer_payment_reference' : payer_payment_reference ,
92- 'payment_reference' : payment_reference ,
93- 'message' : message
94- })
95-
96- response = self .__post ('refunds' , refund_request .to_primitive ())
103+ def create_refund ( self
104+ , original_payment_reference
105+ , amount
106+ , currency
107+ , callback_url
108+ , instructionUUID
109+ , payer_payment_reference = None
110+ , payment_reference = None
111+ , payee_alias = None
112+ , message = None
113+ ):
114+ refund_request = Refund ({ 'payer_alias' : self .merchant_swish_number
115+ , 'payee_alias' : payee_alias
116+ , 'original_payment_reference' : original_payment_reference
117+ , 'amount' : amount
118+ , 'currency' : currency
119+ , 'callback_url' : callback_url
120+ , 'callback_identifier' : instructionUUID
121+ , 'payer_payment_reference' : payer_payment_reference
122+ , 'payment_reference' : payment_reference
123+ , 'message' : message
124+ })
125+
126+ response = self .__put (f'v2/refunds/{ instructionUUID } ' , refund_request .to_primitive ())
97127 if response .status_code == 422 :
98128 raise SwishError (response .json ())
99129 response .raise_for_status ()
100130
101- return Refund ({'id' : response .headers .get ('Location' ).split ('/' )[- 1 ],
102- 'location' : response .headers .get ('Location' )})
131+ return Refund ({ 'id' : response .headers .get ('Location' ).split ('/' )[- 1 ]
132+ , 'location' : response .headers .get ('Location' )
133+ })
103134
104135 def get_refund (self , refund_id ):
105- response = self .__get ('refunds' , refund_id )
136+ response = self .__get ('v1/ refunds' , refund_id )
106137 response .raise_for_status ()
107138 return Refund (response .json ())
108139
109140
110- def commerce_qr_code (self , token , format , size = None , border = None , transparent = None ):
111- commerce_qr_code_request = CommerceQRCodeRequest ({
112- 'token' : token ,
113- 'format' : format ,
114- 'size' : size ,
115- 'border' : border ,
116- 'transparent' : transparent
117- })
141+ def commerce_qr_code ( self
142+ , token
143+ , format
144+ , size = None
145+ , border = None
146+ , transparent = None
147+ ):
148+ commerce_qr_code_request = CommerceQRCodeRequest ({ 'token' : token
149+ , 'format' : format
150+ , 'size' : size
151+ , 'border' : border
152+ , 'transparent' : transparent
153+ })
118154
119155 response = self .__post ('commerce' , commerce_qr_code_request .to_primitive ())
120156 response .raise_for_status ()
0 commit comments