From 671ec755841e58d7273d5a08da425fe7a5a06038 Mon Sep 17 00:00:00 2001 From: PCoder Date: Thu, 19 Sep 2019 21:08:20 +0530 Subject: [PATCH] Handle one-time payment --- ucloud_pay.py | 32 ++++++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) diff --git a/ucloud_pay.py b/ucloud_pay.py index dae3865..f900f1d 100644 --- a/ucloud_pay.py +++ b/ucloud_pay.py @@ -351,6 +351,38 @@ class ProductOrder(Resource): "Product {} is one-time " "payment".format(product_obj["type"]) ) + charge_response = stripe_utils.make_charge( + amount=product_obj['price'], + customer=stripe_customer.id + ) + stripe_onetime_charge = charge_response.get('response_object') + + # Check if the payment was approved + if not stripe_onetime_charge: + msg = charge_response.get('error') + logging.error("Could not make a one time payment") + logging.error("Details = {}".format(msg)) + return {"message": "Error subscribing to plan. " + "Details: {}".format(msg)}, 400 + + order_obj = { + "order_id": get_order_id(), + "ordered_at": int(time.time()), + "product": product_obj, + } + client.put("/v1/user/{}/orders".format( + data['name']), json.dumps(order_obj), + value_in_json=True) + order_obj["ordered_at"] = datetime.fromtimestamp( + order_obj["ordered_at"]).strftime("%c") + order_obj["product"] = get_user_friendly_product( + product_obj + ) + logging.debug(str(order_obj)) + return {"message": "Order successful", + "order_details": order_obj}, 200 + + except KeyError as key_error: logging.error("Key error occurred") logging.error(str(key_error))