ifixkart-backend/venv/lib/python3.12/site-packages/razorpay/resources/payment.py

291 lines
8.6 KiB
Python

from .base import Resource
from ..constants.url import URL
import warnings
class Payment(Resource):
def __init__(self, client=None):
super(Payment, self).__init__(client)
self.base_url = URL.V1 + URL.PAYMENTS_URL
def fetch_all(self, data={}, **kwargs): # pragma: no cover
warnings.warn("Will be Deprecated in next release, use all",
DeprecationWarning)
return self.all(data, **kwargs)
def all(self, data={}, **kwargs):
"""
Fetch all Payment entities
Returns:
Dictionary of Payment data
"""
return super(Payment, self).all(data, **kwargs)
def fetch(self, payment_id, data={}, **kwargs):
"""
Fetch Payment for given Id
Args:
payment_id : Id for which payment object has to be retrieved
Returns:
Payment dict for given payment Id
"""
return super(Payment, self).fetch(payment_id, data, **kwargs)
def capture(self, payment_id, amount, data={}, **kwargs): # nosemgrep : python.lang.correctness.common-mistakes.default-mutable-dict.default-mutable-dict
"""
Capture Payment for given Id
Args:
payment_id : Id for which payment object has to be retrieved
amount : Amount for which the payment has to be retrieved
Returns:
Payment dict after getting captured
"""
url = "{}/{}/capture".format(self.base_url, payment_id)
data['amount'] = amount
return self.post_url(url, data, **kwargs)
def refund(self, payment_id, amount, data={}, **kwargs): # pragma: no cover # nosemgrep : python.lang.correctness.common-mistakes.default-mutable-dict.default-mutable-dict
"""
Refund Payment for given Id
Args:
payment_id : Id for which payment object has to be refunded
amount : Amount for which the payment has to be refunded
Returns:
Payment dict after getting refunded
"""
url = "{}/{}/refund".format(self.base_url, payment_id)
data['amount'] = amount
return self.post_url(url, data, **kwargs)
def transfer(self, payment_id, data={}, **kwargs):
"""
Create Transfer for given Payment Id
Args:
payment_id : Id for which payment object has to be transferred
Returns:
Payment dict after getting transferred
"""
url = "{}/{}/transfers".format(self.base_url, payment_id)
return self.post_url(url, data, **kwargs)
def transfers(self, payment_id, data={}, **kwargs):
"""
Fetches all transfer for given Payment Id
Args:
payment_id : Id for which all the transfers has to be fetched
Returns:
A collection (dict) of transfers
items : The key containing a list of 'transfer' entities
"""
url = "{}/{}/transfers".format(self.base_url, payment_id)
return self.get_url(url, data, **kwargs)
def bank_transfer(self, payment_id, data={}, **kwargs):
"""
Bank Transfer Entity for given Payment
Args:
payment_id : Id for which bank transfer entity has to be fetched
Returns:
Bank Transfer dict
"""
url = "{}/{}/bank_transfer".format(self.base_url, payment_id)
return self.get_url(url, data, **kwargs)
def upi_transfer(self, payment_id, data={}, **kwargs):
"""
UPI Transfer Entity for given Payment
Args:
payment_id : Id for which upi transfer entity has to be fetched
Returns:
UPI Transfer dict
"""
url = "{}/{}/upi_transfer".format(self.base_url, payment_id)
return self.get_url(url, data, **kwargs)
def refund(self, payment_id, data={}, **kwargs):
"""
Create a normal refund
Returns:
Payment dict after getting refund
"""
url = "{}/{}/refund".format(self.base_url, payment_id)
return self.post_url(url, data, **kwargs)
def fetch_multiple_refund(self, payment_id, data={}, **kwargs):
"""
Fetch multiple refunds for a payment
Returns:
refunds dict
"""
url = "{}/{}/refunds".format(self.base_url, payment_id)
return self.get_url(url, data, **kwargs)
def fetch_refund_id(self, payment_id, refund_id, **kwargs):
"""
Fetch multiple refunds for a payment
Returns:
Refund dict
"""
url = "{}/{}/refunds/{}".format(self.base_url, payment_id, refund_id)
return self.get_url(url, {}, **kwargs)
def edit(self, payment_id, data={}, **kwargs):
"""
Update the Payment
Args:
data : Dictionary having keys using which order have to be edited
'notes' : key value pair as notes
Returns:
Payment Dict which was edited
"""
url = '{}/{}'.format(self.base_url, payment_id)
return self.patch_url(url, data, **kwargs)
def fetchCardDetails(self, payment_id, **kwargs):
"""
Fetch Card Details of a Payment
Args:
payment_id : Id for which payment objects has to be retrieved
Returns:
Payment dict for given Order Id
"""
url = "{}/{}/card".format(self.base_url, payment_id)
return self.get_url(url, {}, **kwargs)
def fetchDownTime(self, **kwargs):
"""
Fetch Card Details of a Payment
Args:
payment_id : Id for which payment objects has to be retrieved
Returns:
Payment dict for given Order Id
"""
url = "{}/{}".format(self.base_url,'downtimes')
return self.get_url(url, {}, **kwargs)
def fetchDownTimeById(self, downtime_id, **kwargs):
"""
Fetch Payment Downtime Details by ID
Args:
payment_id : Id for which payment objects has to be retrieved
Returns:
Payment dict for given Order Id
"""
url = "{}/downtimes/{}".format(self.base_url, downtime_id)
return self.get_url(url, {}, **kwargs)
def createPaymentJson(self ,data={}, **kwargs):
"""
Create a Payment
Args:
payment_id : Id for which payment object has to be refunded
amount : Amount for which the payment has to be refunded
Returns:
Payment Dict which was created
"""
url = "{}/create/{}".format(self.base_url, 'json')
return self.post_url(url, data, **kwargs)
def createRecurring(self, data={}, **kwargs):
"""
Create Recurring Payments
Return:
Recurring Payments dict
"""
url = "{}/{}/recurring".format(self.base_url,'create')
return self.post_url(url, data, **kwargs)
def createUpi(self, data={}, **kwargs):
"""
Initiate a payment
Return:
Payments dict
"""
url = "{}/create/{}".format(self.base_url,'upi')
return self.post_url(url, data, **kwargs)
def validateVpa(self, data={}, **kwargs):
"""
Validate the VPA
Return:
Payments dict
"""
url = "{}/validate/{}".format(self.base_url,'vpa')
return self.post_url(url, data, **kwargs)
def fetchPaymentMethods(self, **kwargs):
"""
Fetch payment methods
Return:
Payments dict
"""
url = "/{}".format('methods')
return self.get_url(url, {}, **kwargs)
def otpGenerate(self, payment_id, data={}, **kwargs):
"""
Otp Generate
Args:
payment_id : Id for which upi transfer entity has to be fetched
Returns:
Otp Dict which was created
"""
url = "{}/{}/otp_generate".format(self.base_url, payment_id)
return self.post_url(url, data, **kwargs)
def otpSubmit(self, payment_id, data={}, **kwargs):
"""
Otp Submit
Args:
payment_id : Id for which upi transfer entity has to be fetched
Returns:
Otp Dict which was created
"""
url = "{}/{}/otp/submit".format(self.base_url, payment_id)
return self.post_url(url, data, **kwargs)
def otpResend(self, payment_id, data={}, **kwargs):
"""
Otp Resend
Args:
payment_id : Id for which upi transfer entity has to be fetched
Returns:
Otp Dict which was created
"""
url = "{}/{}/otp/resend".format(self.base_url, payment_id)
return self.post_url(url, data, **kwargs)