in src/backend/payment/src/collect-payment/collect.py [0:0]
def collect_payment(charge_id):
"""Collects payment from a pre-authorized charge through Payment API
For more info on Stripe Charge Object: https://stripe.com/docs/api/charges/object
Parameters
----------
charge_id : string
Pre-authorized charge ID received from Payment API
Returns
-------
dict
receiptUrl: string
receipt URL containing more details about the successful charge
price: int
amount collected
"""
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")
payment_payload = {"chargeId": charge_id}
try:
logger.debug({"operation": "payment_collection", "details": payment_payload})
ret = requests.post(payment_endpoint, json=payment_payload)
ret.raise_for_status()
payment_response = ret.json()
tracer.put_metadata(charge_id, ret)
logger.info(
{
"operation": "payment_collection",
"details": {
"response_headers": ret.headers,
"response_payload": payment_response,
"response_status_code": ret.status_code,
"url": ret.url,
},
}
)
return {
"receiptUrl": payment_response["capturedCharge"]["receipt_url"],
"price": payment_response["capturedCharge"]["amount"],
}
except requests.exceptions.RequestException as err:
logger.exception({"operation": "payment_collection"})
raise PaymentException(details=err)