def __deliver(context, chat_id, payment_id, stripe_session_state): payment_data = manager("payments").get_payment_data(payment_id) cart_handler = manager("stripe_store").get_cart_handler(payment_data["category"]) cart_handler.deliver(context, chat_id, meta = { "subscription_meta": stripe_session_state["subscription"] })
def __update_stripe_session_state(payment_id): logger.info("Updating stripe session for payment id #{}".format(payment_id)) session_data = manager("stripe_store").get_payment_active_session(payment_id) result = stripe.checkout.Session.retrieve(session_data["session_id"]) if result["payment_status"] == "paid": manager("payments").register_verified_payment(payment_id) return result
def setup_environment(): boot(dev_mode=True) add_reroute_rule("bot", "mockbot") add_reroute_rule("config", "mock_config") # add_reroute_rule("data", "mock_data") # add_reroute_rule("sqlite3", "mock_sqlite3") initialize() manager("mock_config").add_mock_settings( { "loaders": ["yaml", "json"], "default_loader": "yaml" }, "resources") manager("mock_config").add_mock_settings({"default": "en"}, "text", "lang") manager("mock_config").add_mock_settings({"pragma": {}}, "sqlite3") manager("mock_config").add_mock_settings( {"reaction_extra_points": { 'UP': 4, 'DOWN': 1, }}, "dummy", "reactions") launch(main_module="mockbot")
def abort_callback_handler(update, context): query = update.callback_query chat_id = query.message.chat_id user_id = query.message.from_user.id logger.info("Handling callback data from {}: {}".format( chat_id, query.data)) payment_id = update.callback_query.data.split(",")[2] manager("payments").cancel_payment(payment_id) __update_message(context.bot, query.message)
def __update_message(bot, message): phrases = manager("text").load_phrases("stripe_store") bot.edit_message_text(chat_id=message.chat_id, message_id=message.message_id, text=phrases["payment_aborted"], reply_markup=None)
def load_api_keys(self): settings = manager("config").load_settings("stripe") self.__secret_key = settings["secret_key"] self.__publishable_key = settings["public_key"] self.__interface.api_key = self.__secret_key
def __update_message(bot, message): phrases = manager("text").load_phrases("stripe_store") bot.edit_message_text( chat_id = message.chat_id, message_id = message.message_id, text = phrases["payment_verified"] )
def __send_wait_notification(bot, chat_id, message_id): bot.edit_message_text( chat_id = chat_id, message_id = message_id, text = manager("text").load_phrases("stripe_store")["payment_loading"], parse_mode = telegram.ParseMode.MARKDOWN, reply_markup = None )
def __send_unverified_payment_warning(bot, query): phrases = manager("text").load_phrases("stripe_store") bot.answer_callback_query( callback_query_id = query.id, show_alert = True, text = phrases["payment_unverified"] )
def send_instructions_callback_handler(update, context): query = update.callback_query chat_id = query.message.chat_id message_id = query.message.message_id user_id = update.callback_query.message.from_user.id logger.info("Handling send instructions callback data from {}: {}".format(chat_id, query.data)) plan = update.callback_query.data.split(",")[2] __send_wait_notification(context.bot, chat_id, message_id) payment_id = __register_pending_payment(user_id, plan) checkout_object = __generate_checkout_object(plan) session_id = checkout_object["id"] payment_link = manager("stripe").retrieve_checkout_link(session_id) manager("stripe_store").register_active_session(payment_id, session_id) __send_message(context.bot, chat_id, message_id, plan, payment_id, payment_link)
def __generate_checkout_object(plan): plan_settings = manager("config").load_settings(plan, "stripe_item") session = stripe.checkout.Session.create( payment_method_types=['card'], line_items=[{ 'price': plan_settings["price_id"], 'quantity': 1, }], mode=plan_settings["mode"], success_url='https://t.me/FreeMoneySignalsBot', cancel_url='https://t.me/FreeMoneySignalsBot', ) return session
def connect(): load_callback_handlers(manager("bot").updater.dispatcher) load_manager().connect_to_database()
def main(): payment_link = manager("stripe").retrieve_checkout_link("cs_test_LwkHgZtUwoY1JgzwXsw1LH8hsg7Y11chaZAd9wrqQHJKMcG6MOWCviTy") print(payment_link)
def __create_reply_markup(payment_id, payment_link): return manager("menu").create_reply_markup("stripe_store", "subscription", meta = { "__PAYMENT_LINK__": payment_link, "__PAYMENT_ID__": payment_id })
def __load_instructions_text(plan): return manager("text").load_phrases(plan)["instructions"]
def __register_pending_payment(user_identifier, plan): payment_id = manager("payments").register_pending_payment(user_identifier, plan) return payment_id
def allocate_payment_link_retriever(self): settings = manager("config").load_settings("stripe") self.__payment_link_retriever = OnlineStaticPagePaymentLinkRetriever( settings["payment_base_url"])
def teardown_environment(): manager("mockbot").join() manager("mockbot").stop()
def load_test_json(path, name): return manager("resources").load_resource("dummy_tests", name, path=path, loader="json")
def load_test_yaml(path, name): return manager("resources").load_resource("dummy_tests", name, path=path, loader="yaml")
def __clear_session_entry(payment_id): manager("stripe_store").delete_payment_active_session(payment_id)
def load_test_update(path, name): return Update.de_json(load_test_json(path, name), manager("mockbot").bot)
def __has_user_completed_payment(payment_id): return manager("payments").verify_payment(payment_id)
def connect_to_database(self): self.__session: SqliteSession = manager("sqlite3").create_session( "stripe_store")