Wire Docs

Quickstart

Эхний төлбөрөө 5 минутад хүлээн ав — PaymentIntent, hosted checkout, баталгаажуулсан webhook.

Энэ гарын авлага таныг тэгээс эхлээд төлсөн захиалга хүртэл явуулна: PaymentIntent үүсгэх, худалдан авагчийг hosted checkout руу илгээх, үр дүнг webhook-оор баталгаажуулах.

1. Test key авах

Хүсэлт бүр Authorization header дэх нууц key-ээр authenticate хийгдэнэ. Test key нь sk_test_ угтвартай бөгөөд хэзээ ч бодит мөнгө хөдөлгөдөггүй — суурилуулсан sandbox оператор руу чиглүүлдэг. Dashboard-аасаа нэгийг авч, export хий:

export WIRE_API_KEY="sk_test_..."

Production-д бэлэн болсон үедээ sk_live_... key рүү шилж. Дүн нь үргэлж бүхэл MNT minor unit50000 гэдэг нь 500.00 ₮.

2. SDK суулгах

go get github.com/buildry-wire/wire-go
pip install wirepayment
npm install @buildry-wire/wire

3. PaymentIntent үүсгэх

PaymentIntent нь таны цуглуулах гэж буй мөнгийг төлөөлнө. Hosted checkout-д худалдан авагчийн төлж болох операторуудыг allowed_operators-оор жагсаа. Test mode-д ["sandbox"]-г ашигла.

package main

import (
	"context"
	"fmt"
	"log"

	wire "github.com/buildry-wire/wire-go"
)

func main() {
	client := wire.NewClient("sk_test_...")
	ctx := context.Background()

	pi, err := client.PaymentIntents.Create(ctx, &wire.PaymentIntentCreateParams{
		Amount:           50000, // 500.00 MNT, minor units
		Currency:         "MNT",
		AllowedOperators: []string{"sandbox"},
		IdempotencyKey:   "order-1001",
	})
	if err != nil {
		log.Fatal(err)
	}
	fmt.Println(pi.ID, pi.Status)
}
import wire

client = wire.Client("sk_test_...")

pi = client.payment_intents.create(
    amount=50000,                  # 500.00 MNT, minor units
    currency="MNT",
    allowed_operators=["sandbox"],
    idempotency_key="order-1001",
)
print(pi.id, pi.status)
import { Wire } from "@buildry-wire/wire";

const wire = new Wire("sk_test_...");

const pi = await wire.paymentIntents.create({
  amount: 50000,                 // 500.00 MNT, minor units
  currency: "MNT",
  allowed_operators: ["sandbox"],
  idempotencyKey: "order-1001",
});
console.log(pi.id, pi.status);

Idempotency-Key нь мутаци хийдэг POST бүрд заавал шаардлагатай. Ижил key-г дахин ашиглавал давхардуулан үүсгэхгүйгээр анхны үр дүнг аюулгүй буцаана.

4. Худалдан авагчийг hosted checkout руу илгээх

PaymentIntent-д зориулж checkout session үүсгэ. Session нь pay.wire.mn дээрх hosted URL буцаана — худалдан авагчийг тийш чиглүүл. Хуудас нь QR код, банкны deeplink-ийг харуулж, төлбөргүй нэхэмжлэхийг TTL дууссаны дараа автоматаар цуцална.

curl https://api.wire.mn/v1/checkout/sessions \
  -H "Authorization: Bearer $WIRE_API_KEY" \
  -H "Idempotency-Key: sess-order-1001" \
  -d payment_intent=pi_123 \
  -d success_url=https://yourshop.mn/orders/1001
# => { "id": "cs_...", "url": "https://pay.wire.mn/c/cs_token", ... }

Худалдан авагчийг буцаасан url руу чиглүүл. Бүрэн урсгалыг Hosted checkout гарын авлага-аас үз.

5. Webhook хүлээн авах

Зөвхөн redirect-д бүү итгэ — payment_intent.succeeded webhook-оос төлбөрийг server талд баталгаажуул. Үйлдэл хийхээсээ өмнө гарын үсгийг (signature) шалга. Бүрэн handler-ийг Webhooks гарын авлага-аас үз.

body, _ := io.ReadAll(r.Body)
event, err := client.Webhooks.Verify(
	body,
	r.Header.Get(wire.SignatureHeader),
	"whsec_...", // your endpoint's signing secret
)
if err != nil {
	http.Error(w, "bad signature", http.StatusBadRequest)
	return
}
if event.Type == "payment_intent.succeeded" {
	// fulfill the order
}
event = client.webhooks.verify(
    request.body,                       # raw bytes
    request.headers[wire.SIGNATURE_HEADER],
    "whsec_...",                        # your endpoint's signing secret
)
if event.type == "payment_intent.succeeded":
    ...  # fulfill the order
import { SIGNATURE_HEADER } from "@buildry-wire/wire";

const event = wire.webhooks.verify(
  rawBody, // unparsed request body (string or Buffer)
  req.headers[SIGNATURE_HEADER.toLowerCase()],
  "whsec_...", // your endpoint's signing secret
);
if (event.type === "payment_intent.succeeded") {
  // fulfill the order
}

Дараагийн алхмууд

  • Test mode — алдааг симуляц хийх онцгой оролтууд.
  • Hosted checkout — QR, deeplink, авто-цуцлалт.
  • Webhooks — event-ийг найдвартай шалгаж боловсруулах.
  • API reference — бүх /v1 endpoint.

Энэ хуудсанд