Пример формирования url для оплаты
This commit is contained in:
BIN
not_sorted/url_for_pay_example
Executable file
BIN
not_sorted/url_for_pay_example
Executable file
Binary file not shown.
55
not_sorted/url_for_pay_example.go
Normal file
55
not_sorted/url_for_pay_example.go
Normal file
@@ -0,0 +1,55 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"net/http"
|
||||
"net/url"
|
||||
)
|
||||
|
||||
func Pay(sum float64) string{
|
||||
// Базовый URL
|
||||
baseURL := "https://yoomoney.ru/quickpay/confirm.xml"
|
||||
baseSum := fmt.Sprintf("%f", sum)
|
||||
|
||||
// Параметры запроса
|
||||
params := url.Values{}
|
||||
params.Add("receiver", "410012845407838")
|
||||
params.Add("quickpay-form", "shop")
|
||||
params.Add("targets", "Тестовая покупка")
|
||||
params.Add("paymentType", "SB")
|
||||
params.Add("sum", baseSum)
|
||||
params.Add("label", "cheche")
|
||||
|
||||
// Формируем полный URL с параметрами
|
||||
fullURL := fmt.Sprintf("%s?%s", baseURL, params.Encode())
|
||||
// fmt.Println("Request URL:", fullURL)
|
||||
|
||||
// Создаем кастомный HTTP-клиент с отключенными редиректами
|
||||
client := &http.Client{
|
||||
CheckRedirect: func(req *http.Request, via []*http.Request) error {
|
||||
// Останавливаемся после первого редиректа
|
||||
return http.ErrUseLastResponse
|
||||
},
|
||||
}
|
||||
|
||||
// Отправляем POST-запрос с пустым телом
|
||||
resp, err := client.Post(fullURL, "application/x-www-form-urlencoded", nil)
|
||||
if err != nil {
|
||||
// fmt.Println("Error sending request:", err)
|
||||
return "WHOOPS"
|
||||
}
|
||||
defer resp.Body.Close()
|
||||
|
||||
location, err := resp.Location()
|
||||
if err != nil {
|
||||
// fmt.Println("Error getting location:", err)
|
||||
return "WHOOPS"
|
||||
}
|
||||
// fmt.Println("Redirect URL:", location.String())
|
||||
return location.String()
|
||||
}
|
||||
|
||||
func main() {
|
||||
pay := Pay(6.0)
|
||||
fmt.Println(pay)
|
||||
}
|
||||
Reference in New Issue
Block a user