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 unit — 50000 гэдэг нь 500.00 ₮.
2. SDK суулгах
go get github.com/buildry-wire/wire-gopip install wirepaymentnpm install @buildry-wire/wire3. 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 orderimport { 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 — бүх
/v1endpoint.