in src/backend/payment/src/refund-payment/refund.py [0:0]
def refund_payment(charge_id):
"""Refunds payment from a given charge ID through Payment API
For more info on Stripe Refund Object: https://stripe.com/docs/api/refunds/object
Parameters
----------
charge_id : string
Pre-authorized charge ID received from Payment API
Returns
-------
dict
refundId: string
"""
if not payment_endpoint:
logger.error({"operation": "input_validation", "details": os.environ})
raise ValueError("Payment API URL is invalid -- Consider reviewing PAYMENT_API_URL env")
refund_payload = {"chargeId": charge_id}
try:
logger.debug({"operation": "payment_refund", "details": refund_payload})
ret = requests.post(payment_endpoint, json=refund_payload)
ret.raise_for_status()
refund_response = ret.json()
tracer.put_metadata(charge_id, ret.json())
logger.info(
{
"operation": "payment_refund",
"details": {
"response_headers": ret.headers,
"response_payload": refund_response,
"response_status_code": ret.status_code,
"url": ret.url,
},
}
)
return {"refundId": refund_response["createdRefund"]["id"]}
except requests.exceptions.RequestException as err:
logger.exception({"operation": "payment_refund"})
raise RefundException(details=err)