feat: wire payment return url payloads
This commit is contained in:
@@ -8,6 +8,7 @@ import (
|
||||
"encoding/json"
|
||||
"fmt"
|
||||
"net/url"
|
||||
"strconv"
|
||||
"strings"
|
||||
"time"
|
||||
|
||||
@@ -200,6 +201,30 @@ func CanonicalizeReturnURL(raw string) (string, error) {
|
||||
return parsed.String(), nil
|
||||
}
|
||||
|
||||
func buildPaymentReturnURL(base string, orderID int64, resumeToken string) (string, error) {
|
||||
canonical, err := CanonicalizeReturnURL(base)
|
||||
if err != nil || canonical == "" {
|
||||
return canonical, err
|
||||
}
|
||||
|
||||
parsed, err := url.Parse(canonical)
|
||||
if err != nil {
|
||||
return "", infraerrors.BadRequest("INVALID_RETURN_URL", "return_url must be a valid URL")
|
||||
}
|
||||
|
||||
query := parsed.Query()
|
||||
if orderID > 0 {
|
||||
query.Set("order_id", strconv.FormatInt(orderID, 10))
|
||||
}
|
||||
if strings.TrimSpace(resumeToken) != "" {
|
||||
query.Set("resume_token", strings.TrimSpace(resumeToken))
|
||||
}
|
||||
query.Set("status", "success")
|
||||
parsed.RawQuery = query.Encode()
|
||||
|
||||
return parsed.String(), nil
|
||||
}
|
||||
|
||||
func (s *PaymentResumeService) CreateToken(claims ResumeTokenClaims) (string, error) {
|
||||
if claims.OrderID <= 0 {
|
||||
return "", fmt.Errorf("resume token requires order id")
|
||||
|
||||
Reference in New Issue
Block a user