From 9669d6256234863f90db882796db85eb62cd8725 Mon Sep 17 00:00:00 2001 From: shriMADhav U k Date: Fri, 7 Jun 2024 19:15:16 +0200 Subject: [PATCH] pyrofork: Add create_invoice_link Signed-off-by: wulan17 --- compiler/docs/compiler.py | 1 + pyrogram/methods/business/__init__.py | 2 + .../methods/business/create_invoice_link.py | 154 ++++++++++++++++++ 3 files changed, 157 insertions(+) create mode 100644 pyrogram/methods/business/create_invoice_link.py diff --git a/compiler/docs/compiler.py b/compiler/docs/compiler.py index d9bcc05a..251c7593 100644 --- a/compiler/docs/compiler.py +++ b/compiler/docs/compiler.py @@ -376,6 +376,7 @@ def pyrogram_api(): """, business=""" Telegram Business + create_invoice_link get_business_connection """, authorization=""" diff --git a/pyrogram/methods/business/__init__.py b/pyrogram/methods/business/__init__.py index eda3b7f0..0c96292b 100644 --- a/pyrogram/methods/business/__init__.py +++ b/pyrogram/methods/business/__init__.py @@ -16,10 +16,12 @@ # You should have received a copy of the GNU Lesser General Public License # along with Pyrogram. If not, see . +from .create_invoice_link import CreateInvoiceLink from .get_business_connection import GetBusinessConnection class TelegramBusiness( + CreateInvoiceLink, GetBusinessConnection, ): pass diff --git a/pyrogram/methods/business/create_invoice_link.py b/pyrogram/methods/business/create_invoice_link.py new file mode 100644 index 00000000..9b5b15ed --- /dev/null +++ b/pyrogram/methods/business/create_invoice_link.py @@ -0,0 +1,154 @@ +# Pyrogram - Telegram MTProto API Client Library for Python +# Copyright (C) 2017-present Dan +# +# This file is part of Pyrogram. +# +# Pyrogram is free software: you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License as published +# by the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# Pyrogram is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public License +# along with Pyrogram. If not, see . + +import logging +from typing import List, Union + +import pyrogram +from pyrogram import raw, types + +log = logging.getLogger(__name__) + + +class CreateInvoiceLink: + async def create_invoice_link( + self: "pyrogram.Client", + title: str, + description: str, + payload: Union[str, bytes], + currency: str, + prices: List["types.LabeledPrice"], + provider_token: str = None, + start_parameter: str = None, + provider_data: str = None, + photo_url: str = None, + photo_size: int = None, + photo_width: int = None, + photo_height: int = None, + need_name: bool = None, + need_phone_number: bool = None, + need_email: bool = None, + need_shipping_address: bool = None, + send_phone_number_to_provider: bool = None, + send_email_to_provider: bool = None, + is_flexible: bool = None + ) -> str: + """Use this method to create a link for an invoice. + + .. include:: /_includes/usable-by/bots.rst + + Parameters: + title (``str``): + Product name, 1-32 characters. + + description (``str``): + Product description, 1-255 characters + + payload (``str`` | ``bytes``): + Bot-defined invoice payload, 1-128 bytes. This will not be displayed to the user, use for your internal processes. + + currency (``str``): + Three-letter ISO 4217 currency code, see `more on currencies `_. Pass ``XTR`` for payments in `Telegram Stars `_. + + prices (List of :obj:`~pyrogram.types.LabeledPrice`): + Price breakdown, a JSON-serialized list of components (e.g. product price, tax, discount, delivery cost, delivery tax, bonus, etc.). Must contain exactly one item for payments in `Telegram Stars `_. + + provider_token (``str``, *optional*): + Payment provider token, obtained via `@BotFather `_. Pass an empty string for payments in `Telegram Stars `_. + + start_parameter (``str``, *optional*): + Unique deep-linking parameter. If left empty, **forwarded copies** of the sent message will have a Pay button, allowing multiple users to pay directly from the forwarded message, using the same invoice. If non-empty, forwarded copies of the sent message will have a URL button with a deep link to the bot (instead of a Pay button), with the value used as the start parameter. + + provider_data (``str``, *optional*): + JSON-serialized data about the invoice, which will be shared with the payment provider. A detailed description of required fields should be provided by the payment provider. + + photo_url (``str``, *optional*): + URL of the product photo for the invoice. Can be a photo of the goods or a marketing image for a service. People like it better when they see what they are paying for. + + photo_size (``int``, *optional*): + Photo size in bytes + + photo_width (``int``, *optional*): + Photo width + + photo_height (``int``, *optional*): + Photo height + + need_name (``bool``, *optional*): + Pass True if you require the user's full name to complete the order. Ignored for payments in `Telegram Stars `_. + + need_phone_number (``bool``, *optional*): + Pass True if you require the user's phone number to complete the order. Ignored for payments in `Telegram Stars `_. + + need_email (``bool``, *optional*): + Pass True if you require the user's email address to complete the order. Ignored for payments in `Telegram Stars `_. + + need_shipping_address (``bool``, *optional*): + Pass True if you require the user's shipping address to complete the order. Ignored for payments in `Telegram Stars `_. + + send_phone_number_to_provider (``bool``, *optional*): + Pass True if the user's phone number should be sent to the provider. Ignored for payments in `Telegram Stars `_. + + send_email_to_provider (``bool``, *optional*): + Pass True if the user's email address should be sent to the provider. Ignored for payments in `Telegram Stars `_. + + is_flexible (``bool``, *optional*): + Pass True if the final price depends on the shipping method. Ignored for payments in `Telegram Stars `_. + + Returns: + ``str``: On success, the created invoice link is returned. + + """ + + rpc = raw.functions.payments.ExportInvoice( + invoice_media=raw.types.InputMediaInvoice( + title=title, + description=description, + photo=raw.types.InputWebDocument( + url=photo_url, + mime_type="image/jpg", + size=photo_size, + attributes=[ + raw.types.DocumentAttributeImageSize( + w=photo_width, + h=photo_height + ) + ] + ) if photo_url else None, + invoice=raw.types.Invoice( + currency=currency, + prices=[i.write() for i in prices], + test=self.test_mode, + name_requested=need_name, + phone_requested=need_phone_number, + email_requested=need_email, + shipping_address_requested=need_shipping_address, + flexible=is_flexible, + phone_to_provider=send_phone_number_to_provider, + email_to_provider=send_email_to_provider + ), + payload=payload.encode() if isinstance(payload, str) else payload, + provider=provider_token, + provider_data=raw.types.DataJSON( + data=provider_data if provider_data else "{}" + ), + start_param=start_parameter + ) + ) + r = await self.invoke(rpc) + return r.url