Skip to content

Hızlı Ödeme Linki (Quick Checkout) ​

QuickCheckoutService, alıcı adına Shopier sepet/teslimat adımlarını uçtan uca işleterek doğrudan ödeme sayfasına yönlendiren bir Shopier ödeme linki (https://www.shopier.com/s/payment/{account}/{order_id}) üretir.

Bu servis, shopier.Client üzerindeki client.QuickCheckout alanı üzerinden doğrudan veya API token'ına ihtiyaç duyulmadan shopier.NewQuickCheckoutService() kurucusu ile bağımsız olarak kullanılabilir.


Eşzamanlılık ve Oturum İzolasyonu ​

Her Create çağrısı, kendi izole çerez havuzunu (net/http/cookiejar) ve HTTP oturumunu oluşturur. Bu sayede eşzamanlı (concurrent) çalışan goroutine'ler arasında oturum, çerez veya CSRF token çakışması kesinlikle yaşanmaz.


Hızlı Başlangıç Örneği ​

go
package main

import (
	"context"
	"fmt"
	"log"
	"time"

	"github.com/AdisGroup/shopier-go"
)

func main() {
	qc := shopier.NewQuickCheckoutService(
		shopier.WithQuickCheckoutTimeout(30 * time.Second),
	)

	ctx := context.Background()

	req := &shopier.QuickCheckoutRequest{
		ProductURL: "https://www.shopier.com/adisgroup/50900391",
		Quantity:   1,
		Buyer: shopier.QuickCheckoutBuyer{
			Email:     "alici@example.com",
			FirstName: "Özgün Deniz",
			LastName:  "Küçük",
			Phone:     "+90 532 477 02 10",
			Country:   "Türkiye",
			City:      "İstanbul",
			Address:   "Merkez Mah. No: 1",
			Comment:   "Lütfen mesai saatlerinde teslim ediniz.",
		},
	}

	result, err := qc.Create(ctx, req)
	if err != nil {
		var qErr *shopier.QuickCheckoutError
		if qErr, ok := err.(*shopier.QuickCheckoutError); ok {
			log.Fatalf("Hızlı ödeme oluşturulamadı [%s]: HTTP %d - %s",
				qErr.Stage, qErr.StatusCode, qErr.Message)
		}
		log.Fatalf("Hata: %v", err)
	}

	fmt.Printf("Sipariş ID : %s\n", result.OrderID)
	fmt.Printf("Ödeme Linki: %s\n", result.PaymentURL)
}

İstek Parametreleri ​

QuickCheckoutRequest ​

AlanTipAçıklama
ProductURLstringÜrün linki (ör. https://www.shopier.com/adisgroup/50900391). Account ve ProductID otomatik ayrıştırılır.
AccountstringMağaza kullanıcı adı / slug (ör. adisgroup).
ProductIDstringÜrün kimlik numarası (ör. 50900391).
QuantityintSatın alınacak adet. Belirtilmezse varsayılan 1 alınır.
Optionsmap[string]stringVaryasyon veya seçenek form verileri.
BuyerQuickCheckoutBuyerAlıcı iletişim ve teslimat bilgileri.

QuickCheckoutBuyer ​

AlanTipAçıklama
EmailstringZorunlu. Alıcının e-posta adresi.
FirstNamestringZorunlu. Alıcının adı.
LastNamestringZorunlu. Alıcının soyadı.
PhonestringZorunlu. Telefon numarası (ör. +90 532 477 02 10).
PhoneCodestringÜlke arama kodu (varsayılan: "TR").
CountrystringTeslimat ülkesi (varsayılan: "Türkiye").
CitystringTeslimat ili.
StatestringTeslimat ilçesi.
AddressstringAçık adres.
ZipCodestringPosta kodu.
TCIDNostringT.C. Kimlik No (opsiyonel).
CommentstringSipariş/teslimat notu.

Yanıt Yapısı ​

QuickCheckoutResult ​

go
type QuickCheckoutResult struct {
	OrderID     string         `json:"order_id"`
	PaymentURL  string         `json:"payment_url"`
	Account     string         `json:"account"`
	ProductID   string         `json:"product_id"`
	RawResponse map[string]any `json:"raw_response,omitempty"`
}

Yapılandırma Seçenekleri ​

FonksiyonAçıklama
WithQuickCheckoutBaseURL(url)Özel taban URL tanımlar (varsayılan: https://www.shopier.com).
WithQuickCheckoutUserAgent(ua)İsteklerle gönderilecek özel User-Agent başlığı.
WithQuickCheckoutHTTPClient(client)Özel proxy veya transport kuralları için *http.Client.
WithQuickCheckoutTimeout(d)İstek zaman aşımı süresi (varsayılan: 30s).

Hata Yönetimi ve Aşama Teşhisi ​

Hata durumlarında *QuickCheckoutError döndürülür ve hatanın hangi aşamada oluştuğu belirtilir:

go
type QuickCheckoutStage string

const (
	StageParseInput        QuickCheckoutStage = "parse_input"
	StageFetchProduct      QuickCheckoutStage = "fetch_product"
	StageExtractCSRF       QuickCheckoutStage = "extract_csrf"
	StageCheckPayment      QuickCheckoutStage = "check_payment"
	StageFetchShippingForm QuickCheckoutStage = "fetch_shipping_form"
	StageProcessShipment   QuickCheckoutStage = "process_shipment"
)