Example #1
0
def filter_start_package(cart_item, member_id):
    end_date = get_membership_summary(member_id).labaccess_end
    
    if not end_date:
        return

    if date.today() < end_date + timedelta(days=30 * 9):
        raise BadRequest("Starterpack can only be bought if you haven't had"
                         " lab acccess during the last 9 months (30*9 days).")

    if cart_item['count'] > 1:
        raise BadRequest("You may only buy a single Starterpack.")
Example #2
0
def confirm_stripe_payment_intent(data):
    """ Called by client after payment_intent next_action has been handled """

    payment_intent_id = data.get("payment_intent_id", None)
    if not payment_intent_id:
        raise BadRequest("Missing required parameter 'payment_intent_id'")

    transaction = get_source_transaction(payment_intent_id)
    if not transaction:
        raise BadRequest(f"unknown payment_intent ({payment_intent_id})")

    payment_intent = stripe.PaymentIntent.retrieve(payment_intent_id)
    assert payment_intent.status == PaymentIntentStatus.REQUIRES_CONFIRMATION

    try:
        action_info = create_client_response(transaction, payment_intent)
    except CardError as e:
        # Reason can be for example: 'Your card's security code is incorrect'.
        commit_fail_transaction(transaction)
        err = PaymentFailed(log=f"Payment failed: {str(e)}", level=EXCEPTION)
        err.message = e.user_message
        raise err

    return dict(transaction_id=transaction.id, action_info=action_info)