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
Пример #3
0
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)
Пример #6
0
    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()
Пример #13
0
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
Пример #17
0
    def allocate_payment_link_retriever(self):
        settings = manager("config").load_settings("stripe")

        self.__payment_link_retriever = OnlineStaticPagePaymentLinkRetriever(
            settings["payment_base_url"])
Пример #18
0
def teardown_environment():
    manager("mockbot").join()
    manager("mockbot").stop()
Пример #19
0
def load_test_json(path, name):
    return manager("resources").load_resource("dummy_tests",
                                              name,
                                              path=path,
                                              loader="json")
Пример #20
0
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)
Пример #22
0
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")