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.")
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)