Skip to content

Commit 83b1781

Browse files
committed
feat: payment related
1 parent 758ee5e commit 83b1781

16 files changed

+516
-66
lines changed

go.mod

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,18 +3,20 @@ module github.com/bots-go-framework/bots-fw-telegram
33
go 1.24.3
44

55
//replace github.com/bots-go-framework/bots-fw => ../bots-fw
6+
//replace github.com/bots-go-framework/bots-api-telegram => ../bots-api-telegram
67

78
//replace github.com/bots-go-framework/bots-fw-store => ../bots-fw-store
89

910
require (
10-
github.com/bots-go-framework/bots-api-telegram v0.11.1
11-
github.com/bots-go-framework/bots-fw v0.61.1
11+
github.com/bots-go-framework/bots-api-telegram v0.12.0
12+
github.com/bots-go-framework/bots-fw v0.62.0
1213
github.com/bots-go-framework/bots-fw-store v0.10.0
1314
github.com/bots-go-framework/bots-fw-telegram-models v0.3.22
14-
github.com/dal-go/dalgo v0.21.0
15+
github.com/dal-go/dalgo v0.21.1
1516
github.com/pquerna/ffjson v0.0.0-20190930134022-aa0246cd15f7
1617
github.com/strongo/i18n v0.8.2
1718
github.com/strongo/logus v0.2.1
19+
go.uber.org/mock v0.5.2
1820
)
1921

2022
require (

go.sum

Lines changed: 8 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -1,25 +1,17 @@
11
github.com/alexsergivan/transliterator v1.0.1 h1:vON2ilWCHjq+S5Y4obhLGhHK4Y1VIhsHEtQlij5d9pI=
22
github.com/alexsergivan/transliterator v1.0.1/go.mod h1:0IrumukulURJ4PD0z6UcdJKP2job1DYDhnHAP5y+5pE=
3-
github.com/bots-go-framework/bots-api-telegram v0.11.1 h1:Zl4bjyRHqp6R9DFSZWPY/V9uFnk1Ij3NX71EHFH6NMg=
4-
github.com/bots-go-framework/bots-api-telegram v0.11.1/go.mod h1:aY3y10SeCY4K3pHOrqOxXImjs8CfYD7n71Q5VZXKkJw=
5-
github.com/bots-go-framework/bots-fw v0.57.1 h1:0ubGRkYkYXwEJ85YS6mlWimGk6J/3XOdqrt+WAliY+4=
6-
github.com/bots-go-framework/bots-fw v0.57.1/go.mod h1:LLqtmwSRkri8URnSD4OvRSHpeXOXAteZ1LE5RvTVaHw=
7-
github.com/bots-go-framework/bots-fw v0.57.8 h1:IDDAgDeMnXWTUWtnfledJ+3s3cRXWxOY2kpyIQ8616E=
8-
github.com/bots-go-framework/bots-fw v0.57.8/go.mod h1:emBsjfW5yd+JQ74T0UFGs0KfMDC+mGIXjDo4HKfRrrU=
9-
github.com/bots-go-framework/bots-fw v0.60.0 h1:adLt5627dCrPUdP1RZIjxa6/KPv+YzIM4rH2xDn4iZk=
10-
github.com/bots-go-framework/bots-fw v0.60.0/go.mod h1:/8nJnFU6eG9TkKJyn9PltgirIKcrevEII20yLPHrlF8=
11-
github.com/bots-go-framework/bots-fw v0.61.1 h1:aughew4qJ/1h+UJU2+U3FNm6tImJtlTRb+ScC6J3NMo=
12-
github.com/bots-go-framework/bots-fw v0.61.1/go.mod h1:rUhzGj83QYpkUZ41eHwXYj16sJUG79NwbiEybUwrXbI=
3+
github.com/bots-go-framework/bots-api-telegram v0.12.0 h1:ygw4wj8O20VCmvADJPp/tj0KqCUEDCptFsoZzwyrN14=
4+
github.com/bots-go-framework/bots-api-telegram v0.12.0/go.mod h1:aY3y10SeCY4K3pHOrqOxXImjs8CfYD7n71Q5VZXKkJw=
5+
github.com/bots-go-framework/bots-fw v0.62.0 h1:ROQPzMFUu9tsIKojzsWAIUbLlhgauJd8B1p9lcefx6A=
6+
github.com/bots-go-framework/bots-fw v0.62.0/go.mod h1:fACVasEdjjSXL21nHbGFWaezOqlLiGXgYxYW9Qr6EbU=
137
github.com/bots-go-framework/bots-fw-store v0.10.0 h1:e6bD274mjrHVp+X05/7uqqT3s5xZOqV9divKTaM2W+w=
148
github.com/bots-go-framework/bots-fw-store v0.10.0/go.mod h1:7oU4B8j5HuJZM8AftosbyQD+AqckXsDv8eU1auGPzn8=
15-
github.com/bots-go-framework/bots-fw-telegram-models v0.3.21 h1:WWeDBS5mlwFqy2DYGvh9Bu5Xc9Vd0v02hb/bmKlacUc=
16-
github.com/bots-go-framework/bots-fw-telegram-models v0.3.21/go.mod h1:9md/BbO2TrUPi3eeU4Iqc1NtOELhVo+CvAkVI98nMNM=
179
github.com/bots-go-framework/bots-fw-telegram-models v0.3.22 h1:BrZNhCb6NRW0JHtDqXLVDUE0f2AochHum33nAe4ZlZg=
1810
github.com/bots-go-framework/bots-fw-telegram-models v0.3.22/go.mod h1:zA/C08sUpvpvyUT1+WcnWjivGrd7SqmVqXjfmhx1JcY=
1911
github.com/bots-go-framework/bots-go-core v0.0.3 h1:z3A7DLUgxbHWxvTCGnkHP9WHpTT9xxROEypoqAfvYIQ=
2012
github.com/bots-go-framework/bots-go-core v0.0.3/go.mod h1:XCn9z4TI8sbgwyus+VDzw7iMY2QCPWEAvl23GMDjeEU=
21-
github.com/dal-go/dalgo v0.21.0 h1:dtUi3x4LgZkg94vegDYSoBwxbsguyYoBFAS1rLaCSpA=
22-
github.com/dal-go/dalgo v0.21.0/go.mod h1:BoMNGwDE9FdjynV7xCn5f/GdVJxvfePwjsMldn+BhqA=
13+
github.com/dal-go/dalgo v0.21.1 h1:kJmOxiG4sF3djnfrv20w1III3YTpgjrR/Ih6Oq9k5oo=
14+
github.com/dal-go/dalgo v0.21.1/go.mod h1:BoMNGwDE9FdjynV7xCn5f/GdVJxvfePwjsMldn+BhqA=
2315
github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
2416
github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=
2517
github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
@@ -31,16 +23,8 @@ github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+
3123
github.com/stretchr/testify v1.5.1/go.mod h1:5W2xD1RspED5o8YsWQXVCued0rvSQ+mT+I5cxcmMvtA=
3224
github.com/stretchr/testify v1.10.0 h1:Xv5erBjTwe/5IxqUQTdXv5kgmIvbHo3QQyRwhJsOfJA=
3325
github.com/stretchr/testify v1.10.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY=
34-
github.com/strongo/analytics v0.0.6 h1:C552+Vk0wpRTkoSaHB4FCK2B2VbBUmX2y0fNHmGUCYg=
35-
github.com/strongo/analytics v0.0.6/go.mod h1:1OdiZI9/fPDN8ep1Pbz+F3UZPNbttUD7T1St15r760c=
36-
github.com/strongo/analytics v0.0.9 h1:7tHxih16cMqdgQlkAc7jM0XVP1gE2I9H898yP6LN/nk=
37-
github.com/strongo/analytics v0.0.9/go.mod h1:1OdiZI9/fPDN8ep1Pbz+F3UZPNbttUD7T1St15r760c=
3826
github.com/strongo/analytics v0.0.11 h1:rgORqeYRf1kXkJOBX+7UO5Op2ulcc5jkp7fbUC5+ANM=
3927
github.com/strongo/analytics v0.0.11/go.mod h1:1OdiZI9/fPDN8ep1Pbz+F3UZPNbttUD7T1St15r760c=
40-
github.com/strongo/i18n v0.6.1 h1:hNtpU97R5xYavf6n2wfRFWGZHjRZ2lHmube0t2+FHFE=
41-
github.com/strongo/i18n v0.6.1/go.mod h1:4jBQ4PJ3Uiri2Y+LHJ5/o1nB1H2ToddRW/yZXSOTUjE=
42-
github.com/strongo/i18n v0.7.1 h1:hbExifxl5+5+5QS9P7tvLtwFMzlVpPTsC1qYU3A3Fb8=
43-
github.com/strongo/i18n v0.7.1/go.mod h1:4jBQ4PJ3Uiri2Y+LHJ5/o1nB1H2ToddRW/yZXSOTUjE=
4428
github.com/strongo/i18n v0.8.2 h1:tJxeajC6OLENFus2GQ/jZGDjFmd6lPQuhand9jD0Moc=
4529
github.com/strongo/i18n v0.8.2/go.mod h1:4jBQ4PJ3Uiri2Y+LHJ5/o1nB1H2ToddRW/yZXSOTUjE=
4630
github.com/strongo/logus v0.2.1 h1:ZzAtdSg6PPF1Y43WbNWl7MH1XYl7kvKMxyxv/lpbadI=
@@ -55,6 +39,8 @@ github.com/strongo/validation v0.0.7 h1:gs6YkwPsYtVsepQaQOB+ZF+T0Gu5+nk4ZMND8F85
5539
github.com/strongo/validation v0.0.7/go.mod h1:YUwoPEItLJd/Bc9X1OCUm03ofhvm3kwZvuihU7/jz58=
5640
github.com/technoweenie/multipartstreamer v1.0.1 h1:XRztA5MXiR1TIRHxH2uNxXxaIkKQDeX7m2XsSOlQEnM=
5741
github.com/technoweenie/multipartstreamer v1.0.1/go.mod h1:jNVxdtShOxzAsukZwTSw6MDx5eUJoiEBsSvzDU9uzog=
42+
go.uber.org/mock v0.5.2 h1:LbtPTcP8A5k9WPXj54PPPbjcI4Y6lhyOZXn+VS7wNko=
43+
go.uber.org/mock v0.5.2/go.mod h1:wLlUxC2vVTPTaE3UD51E0BGOAElKrILxhVSDYQLld5o=
5844
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
5945
gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
6046
gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA=

telegram/bot_messages.go

Lines changed: 75 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,8 @@ import (
55
"github.com/bots-go-framework/bots-fw/botsfw"
66
)
77

8+
var _ botsfw.BotMessage = (*InlineBotMessage)(nil)
9+
810
// InlineBotMessage is a wrapper for Telegram bot message
911
type InlineBotMessage tgbotapi.InlineConfig
1012

@@ -13,6 +15,12 @@ func (InlineBotMessage) BotMessageType() botsfw.BotMessageType {
1315
return botsfw.BotMessageTypeInlineResults
1416
}
1517

18+
func (m InlineBotMessage) BotEndpoint() string {
19+
return (tgbotapi.InlineConfig)(m).TelegramMethod()
20+
}
21+
22+
var _ botsfw.BotMessage = (*CallbackAnswer)(nil)
23+
1624
// CallbackAnswer is a callback answer message
1725
type CallbackAnswer tgbotapi.AnswerCallbackQueryConfig
1826

@@ -21,6 +29,12 @@ func (CallbackAnswer) BotMessageType() botsfw.BotMessageType {
2129
return botsfw.BotMessageTypeCallbackAnswer
2230
}
2331

32+
func (a CallbackAnswer) BotEndpoint() string {
33+
return (tgbotapi.AnswerCallbackQueryConfig)(a).TelegramMethod()
34+
}
35+
36+
var _ botsfw.BotMessage = (*LeaveChat)(nil)
37+
2438
// LeaveChat is a leave chat message from bot
2539
type LeaveChat tgbotapi.LeaveChatConfig
2640

@@ -29,10 +43,71 @@ func (LeaveChat) BotMessageType() botsfw.BotMessageType {
2943
return botsfw.BotMessageTypeLeaveChat
3044
}
3145

46+
func (m LeaveChat) BotEndpoint() string {
47+
return (tgbotapi.LeaveChatConfig)(m).TelegramMethod()
48+
}
49+
50+
var _ botsfw.BotMessage = (*ExportChatInviteLink)(nil)
51+
3252
// ExportChatInviteLink is a TG message
3353
type ExportChatInviteLink tgbotapi.ExportChatInviteLink
3454

3555
// BotMessageType returns BotMessageTypeExportChatInviteLink
3656
func (ExportChatInviteLink) BotMessageType() botsfw.BotMessageType {
3757
return botsfw.BotMessageTypeExportChatInviteLink
3858
}
59+
60+
func (m ExportChatInviteLink) BotEndpoint() string {
61+
return (tgbotapi.ExportChatInviteLink)(m).TelegramMethod()
62+
}
63+
64+
var _ botsfw.BotMessage = (*Invoice)(nil)
65+
66+
type Invoice tgbotapi.InvoiceConfig
67+
68+
func (Invoice) BotMessageType() botsfw.BotMessageType {
69+
return botsfw.BotMessageTypeSendInvoice
70+
}
71+
72+
func (m Invoice) BotEndpoint() string {
73+
i := (tgbotapi.InvoiceConfig)(m)
74+
return i.TelegramMethod()
75+
}
76+
77+
type PreCheckoutQueryAnswer tgbotapi.AnswerPreCheckoutQueryConfig
78+
79+
func (PreCheckoutQueryAnswer) BotMessageType() botsfw.BotMessageType {
80+
return botsfw.BotMessageTypeAnswerPreCheckoutQuery
81+
}
82+
83+
var _ botsfw.BotMessage = SetBotDescription{}
84+
85+
type SetBotDescription tgbotapi.SetMyDescription
86+
87+
func (SetBotDescription) BotMessageType() botsfw.BotMessageType {
88+
return botsfw.BotMessageTypeSetDescription
89+
}
90+
91+
func (m SetBotDescription) BotEndpoint() string {
92+
return (tgbotapi.SetMyDescription)(m).TelegramMethod()
93+
}
94+
95+
type SetBotShortDescription tgbotapi.SetMyShortDescription
96+
97+
func (SetBotShortDescription) BotMessageType() botsfw.BotMessageType {
98+
return botsfw.BotMessageTypeSetShortDescription
99+
}
100+
101+
func (m SetBotShortDescription) BotEndpoint() string {
102+
return (tgbotapi.SetMyShortDescription)(m).TelegramMethod()
103+
}
104+
105+
type SetBotCommands tgbotapi.SetMyCommandsConfig
106+
107+
func (SetBotCommands) BotMessageType() botsfw.BotMessageType {
108+
return botsfw.BotMessageTypeSetCommands
109+
}
110+
111+
func (m SetBotCommands) BotEndpoint() string {
112+
return (tgbotapi.SetMyCommandsConfig)(m).TelegramMethod()
113+
}

telegram/bot_records_fields_setter.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ type tgBotRecordsFieldsSetter struct {
2323
}
2424

2525
func (b tgBotRecordsFieldsSetter) Platform() string {
26-
return PlatformID
26+
return string(PlatformID)
2727
}
2828

2929
func (b tgBotRecordsFieldsSetter) SetAppUserFields(appUser botsfwmodels.AppUserData, sender botinput.WebhookSender) error {

telegram/bot_records_fields_setter_test.go

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,7 @@ import (
66

77
func Test_botRecordsFieldsSetter_Platform(t *testing.T) {
88
actual := tgBotRecordsFieldsSetter{}.Platform()
9-
expected := PlatformID
10-
if actual != expected {
11-
t.Errorf("Expected %v, got %v", expected, actual)
9+
if actual != string(PlatformID) {
10+
t.Errorf("Expected %s, got %s", PlatformID, actual)
1211
}
1312
}

telegram/order_info.go

Lines changed: 54 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,54 @@
1+
package telegram
2+
3+
import (
4+
"github.com/bots-go-framework/bots-api-telegram/tgbotapi"
5+
"github.com/bots-go-framework/bots-fw/botinput"
6+
)
7+
8+
var _ botinput.OrderInfo = (*tgOrderInfo)(nil)
9+
10+
type tgOrderInfo tgbotapi.OrderInfo
11+
12+
func (t *tgOrderInfo) GetUserName() string {
13+
return t.Name
14+
}
15+
16+
func (t *tgOrderInfo) GetPhoneNumber() string {
17+
return t.PhoneNumber
18+
}
19+
20+
func (t *tgOrderInfo) GetEmailAddress() string {
21+
return t.Email
22+
}
23+
24+
func (t *tgOrderInfo) GetShippingAddress() botinput.ShippingAddress {
25+
return (*tgShippingAddress)(t.ShippingAddress)
26+
}
27+
28+
var _ botinput.ShippingAddress = (*tgShippingAddress)(nil)
29+
30+
type tgShippingAddress tgbotapi.ShippingAddress
31+
32+
func (t *tgShippingAddress) GetCountryCode() string {
33+
return t.CountryCode
34+
}
35+
36+
func (t *tgShippingAddress) GetState() string {
37+
return t.State
38+
}
39+
40+
func (t *tgShippingAddress) GetCity() string {
41+
return t.City
42+
}
43+
44+
func (t *tgShippingAddress) GetStreetLine1() string {
45+
return t.StreetLine1
46+
}
47+
48+
func (t *tgShippingAddress) GetStreetLine2() string {
49+
return t.StreetLine2
50+
}
51+
52+
func (t *tgShippingAddress) GetPostCode() string {
53+
return t.PostCode
54+
}

telegram/platform.go

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,9 @@
11
package telegram
22

3-
import "github.com/bots-go-framework/bots-fw/botsfw"
3+
import (
4+
"github.com/bots-go-framework/bots-fw/botsfw"
5+
"github.com/bots-go-framework/bots-fw/botsfwconst"
6+
)
47

58
// Platform is a bots platform descriptor (in this case - for Telegram)
69
var Platform botsfw.BotPlatform = platform{}
@@ -10,11 +13,11 @@ type platform struct {
1013
}
1114

1215
// PlatformID is 'telegram'
13-
const PlatformID = "telegram"
16+
const PlatformID botsfwconst.Platform = "telegram"
1417

1518
// ID returns 'telegram'
1619
func (p platform) ID() string {
17-
return PlatformID
20+
return string(PlatformID)
1821
}
1922

2023
// Version returns '2.0'

telegram/tg_webhook_handler.go

Lines changed: 13 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -126,7 +126,7 @@ func (h tgWebhookHandler) SetWebhook(w http.ResponseWriter, r *http.Request) {
126126
bot.EnableDebug(ctx)
127127
//bot.Debug = true
128128

129-
webhookURL := fmt.Sprintf("https://%v/bot/tg/hook?id=%v", r.Host, botCode)
129+
webhookURL := fmt.Sprintf("https://%s/bot/tg/hook?id=%s", r.Host, botCode)
130130

131131
webhookConfig := tgbotapi.NewWebhook(webhookURL)
132132
webhookConfig.AllowedUpdates = []string{
@@ -135,6 +135,10 @@ func (h tgWebhookHandler) SetWebhook(w http.ResponseWriter, r *http.Request) {
135135
"inline_query",
136136
"chosen_inline_result",
137137
"callback_query",
138+
"pre_checkout_query",
139+
"successful_payment",
140+
"refunded_payment",
141+
"purchased_paid_media",
138142
}
139143
var response tgbotapi.APIResponse
140144
if response, err = bot.SetWebhook(*webhookConfig); err != nil {
@@ -143,7 +147,14 @@ func (h tgWebhookHandler) SetWebhook(w http.ResponseWriter, r *http.Request) {
143147
if _, err := w.Write([]byte(err.Error())); err != nil {
144148
logus.Errorf(ctx, "Failed to write error to response: %v", err)
145149
}
146-
} else if _, err = fmt.Fprintf(w, "Webhook set\nErrorCode: %d\nDescription: %v\nContent: %v", response.ErrorCode, response.Description, string(response.Result)); err != nil {
150+
} else if _, err = fmt.Fprintf(w, `Webhook set
151+
ErrorCode: %d
152+
Description: %v
153+
Content: %v
154+
155+
Parametes:
156+
allowed_updates: %s
157+
`, response.ErrorCode, response.Description, string(response.Result), strings.Join(webhookConfig.AllowedUpdates, ",")); err != nil {
147158
logus.Errorf(ctx, "Failed to write error to response: %v", err)
148159
}
149160
}

0 commit comments

Comments
 (0)