def create_source(order_identifier): """ Create a source object for alipay payments. :param order_identifier: :return: The alipay redirection link. """ try: order = safe_query(db, Order, 'identifier', order_identifier, 'identifier') source_object = AliPayPaymentsManager.create_source( amount=int(order.amount), currency='usd', redirect_return_uri=url_for( 'alipay_blueprint.alipay_return_uri', order_identifier=order.identifier, _external=True, ), ) order.order_notes = source_object.id save_to_db(order) return jsonify(link=source_object.redirect['url']) except TypeError: return BadRequestError({ 'source': '' }, 'Source creation error').respond()
def alipay_return_uri(order_identifier): """ Charge Object creation & Order finalization for Alipay payments. :param order_identifier: :return: JSON response of the payment status. """ try: charge_response = AliPayPaymentsManager.charge_source(order_identifier) if charge_response.status == 'succeeded': order = safe_query(Order, 'identifier', order_identifier, 'identifier') order.status = 'completed' save_to_db(order) return redirect(make_frontend_url(f'/orders/{order_identifier}/view')) return jsonify(status=False, error='Charge object failure') except TypeError: return jsonify(status=False, error='Source object status error')