Download the PHP package kitelab-dev/byl-laravel without Composer
On this page you can find all versions of the php package kitelab-dev/byl-laravel. It is possible to download/install these versions without Composer. Possible dependencies are resolved automatically.
Download kitelab-dev/byl-laravel
More information about kitelab-dev/byl-laravel
Files in kitelab-dev/byl-laravel
Package byl-laravel
Short Description Byl.mn төлбөрийн системийн Laravel SDK — нэхэмжлэх, checkout, харилцагч, захиалга, webhook.
License MIT
Homepage https://byl.mn/docs
Informations about the package byl-laravel
Byl Laravel SDK
Byl.mn төлбөрийн системийн албан ёсны Laravel SDK. Нэхэмжлэх, checkout, харилцагч, захиалга (subscription), billing portal болон webhook-ийг Laravel-д зохицсон байдлаар ашиглана.
- API гарын авлага: https://byl.mn/docs/api/
- Дэмжигдэх хувилбар: PHP 8.2+, Laravel 11 / 12 / 13
Агуулга
- Суулгах
- Тохиргоо
- Нэхэмжлэх
- Checkout
- Харилцагч
- Захиалга (Subscription)
- Billable trait
- Billing portal
- Webhook
- Алдааны боловсруулалт
- Хэд хэдэн төсөл
- Тест бичих
Суулгах
Тохиргооны файлыг (шаардлагатай бол) хуулна:
Тохиргоо
.env файлд:
BYL_TOKEN— API токен хуудсанд үүсгэнэ. Токеныг зөвхөн нэг удаа харуулдаг.BYL_PROJECT_ID— төслийн тохиргоо цэснээс харна. Бүх endpoint төсөлд хамаарна.BYL_WEBHOOK_SECRET— webhook-ийн дэлгэрэнгүй хуудсанд байдаг гарын үсгийн түлхүүр (багийн бүх төсөлд ижил).
Нэмэлт тохиргоо (config/byl.php): base_url (жш: https://byl.test), timeout, retry, webhook.route.*.
Test горим. Test горимын төсөлд гүйлгээ 50 төгрөгөөр хязгаарлагдана — код тал нь ижил, өөр токен/төсөл ашиглана.
Нэхэмжлэх
Нэхэмжлэх, checkout, portal session объектуудыг controller-оос шууд буцаахад тухайн хуудас руу redirect хийнэ:
Checkout
Хэрэглэгчийн худалдан авалтыг Byl-ийн hosted checkout хуудсаар зохицуулна — төлбөр, купон, хаяг, баримт зэргийг Byl хийнэ.
Массив хэлбэрээр ч дамжуулж болно:
Лавлах:
pendingтөлөв. Банкны дансаар төлөх үед харилцагч «Шилжүүлсэн» гэж мэдэгдсэн ч merchant баталгаажуулаагүй байвал checkoutpendingтөлөвтэй байна ($checkout->isPending()). Мөнгө баталгаажаагүй тул энэ үед бараа/эрх олгож болохгүй — зөвхөнcheckout.completed(эсвэлisComplete()) дээр олгоно.Хөнгөлөлтийн код. Бүтээгдэхүүний хямдралтай код ашиглах бол бүх item-д
price_id(addPriceId()) хэрэглэнэ. Захиалгын нийт дүнгээс хөнгөлөх кододprice_dataч болно.
Харилцагч
client_reference_id-д өөрийн хэрэглэгчийн ID-г дамжуулбал endpoint нь upsert шиг ажиллана — давхардал үүсгэхгүй тул checkout үүсгэхийн өмнө бүр удаа дуудаж болно.
Захиалга (Subscription)
Recurring үнэтэй checkout төлөгдөхөд subscription автоматаар үүснэ (customer_id заавал, ганц item):
Сунгалт / багц солилт (одоогийн subscription-ийг дамжуулна):
Бусад үйлдлүүд:
Хэрэглэгчийн эрхийг
subscription.canceledwebhook ирэх хүртэл нээлттэй байлга —trialing,active,past_dueбүгд эрхтэйд тооцогдоно (isEntitled()).
Billable trait
Laravel Cashier шиг модель дээрээ шууд ажиллах хувилбар. Захиалга нь локал byl_subscriptions хүснэгтэд тусах бөгөөд webhook ирэх бүрд автоматаар шинэчлэгддэг тул $user->subscribed() шалгалт сүлжээнд гарахгүй.
Эрхийн шалгалт (локал)
Route хамгаалах:
config('byl.billable.redirect_to') тохируулбал эрхгүй хэрэглэгчийг тэр хаяг руу чиглүүлнэ, эс бөгөөс 403 буцаана.
Lookup key. Багцаар шалгах (
subscribed('starter_monthly')) боломж нь Byl дээр тухайн үнэд lookup key тохируулсан байхыг шаардана — тохируулаагүй үнэ дээрlookup_keyньnullтулsubscribedToPrice($priceId)эсвэлsubscribedToProduct($productId)хэрэглэнэ. Мөн 2026-08-22-аас өмнөх Byl webhook нь lookup key явуулдаггүй байсан тул тэр үед үүссэн мөрүүдийгphp artisan byl:backfill-subscriptionsкомандаар нөхөнө.
Захиалга эхлүүлэх
Харилцагч Byl дээр байхгүй бол checkout() / startTrial() нь client_reference_id-аар upsert хийж byl_customer_id-г автоматаар хадгална.
Сунгах, багц солих, цуцлах
Cashier-аас ялгаатай тал: Монголд автомат суутгал байдаггүй тул
swap(),renew()нь шууд төлбөр авахын оронд checkout буцаадаг (swapCheckout(),renewCheckout()) — хэрэглэгч төлбөрөө өөрөө төлнө.
| Cashier | Byl SDK |
|---|---|
$user->subscribed('default') |
$user->subscribed('starter_monthly') |
$user->subscription() |
$user->bylSubscription() |
$user->newSubscription(...)->checkout() |
$user->newSubscription('starter_monthly')->checkout() |
$user->newSubscription(...)->trialDays(14)->create() |
$user->newSubscription('starter_monthly')->startTrial(14) |
$subscription->swap($price) |
$subscription->swapCheckout($price) |
| — | $subscription->renewCheckout($cycles) |
$user->redirectToBillingPortal() |
$user->redirectToBillingPortal() |
$user->createAsStripeCustomer() |
$user->createOrGetBylCustomer() |
Байгаа өгөгдлөө нөхөх / өөр модель холбох
Бүх billable-ыг нэг дор нөхөх (алдсан webhook, эсвэл lookup_key хоосон
үлдсэн мөрүүдийг засах):
byl_customer_id бүхий billable бүрийн захиалгыг API-аас татаж локал мөрийг
шинэчилнэ — нэг харилцагч дээр алдаа гарвал алгасаад үргэлжилнэ.
client_reference_id нь өгөгдмөлөөр primary key. Өөрөөр холбох бол:
Модель дээр bylCustomerEmail(), bylCustomerName(), bylCustomerPhone(), bylClientReferenceId() method-уудыг дарж бичиж болно.
Billing portal
Хэрэглэгч захиалгаа өөрөө удирдах self-service хуудас. Session нь 30 минут хүчинтэй тул орох бүрд шинээр үүсгэнэ:
Эсвэл URL-ыг өөрөө хэрэглэнэ:
Webhook
Package нь POST /byl/webhook endpoint-ийг автоматаар бүртгэж, Byl-Signature гарын үсгийг шалгаад Laravel event болгон илгээнэ. Byl веб хуудсанд webhook нэмэхдээ энэ хаягийг бүртгэнэ.
Event классууд (Byl\Laravel\Events\):
| Event класс | Byl-ийн event |
|---|---|
InvoicePaid |
invoice.paid |
InvoiceVoided |
invoice.void |
CheckoutCompleted |
checkout.completed |
CheckoutExpired |
checkout.expired |
SubscriptionCreated |
subscription.created |
SubscriptionRenewed |
subscription.renewed |
SubscriptionUpdated |
subscription.updated |
SubscriptionRenewalDue |
subscription.renewal_due |
SubscriptionPastDue |
subscription.past_due |
SubscriptionCanceled |
subscription.canceled |
PaymentAwaitingVerification |
payment.awaiting_verification |
PaymentVerificationDue |
payment.verification_due |
WebhookReceived |
бүх event (танигдаагүй төрөл ч) |
Банкны шилжүүлэг
Банкны дансаар төлөх үед харилцагч шилжүүлгээ хийснээ мэдэгдэхэд payment.awaiting_verification, баталгаажуулаагүй шилжүүлгийн 3 хоногийн хугацаа дуусахаас 24 цагийн өмнө payment.verification_due event ирнэ. Хоёулангийнх нь объект нь Byl\Laravel\Data\Payment DTO:
Энэ хоёр event нь төлбөр төлөгдсөн гэсэн үг биш — merchant Byl дээр баталгаажуулсны дараа
checkout.completed/invoice.paidирнэ. Эрхийг зөвхөн тэр үед олгоно.
Хаяг эсвэл middleware-г тохируулах:
Өөрийн controller хэрэглэх бол route-г хааж, byl-signature middleware-ийг залгана:
Byl амжилтгүй хүсэлтийг 3 хүртэл удаа дахин илгээдэг тул listener-ээ idempotent бичээрэй. Эсвэл BYL_WEBHOOK_PREVENT_DUPLICATES=true болгож ижил event ID-г хаана (sync listener-тэй үед найдвартай).
Алдааны боловсруулалт
Бүх алдаа Byl\Laravel\Exceptions\BylException interface-ийг хэрэгжүүлдэг:
| Exception | Статус |
|---|---|
AuthenticationException |
401 — токен буруу/хүчингүй |
AuthorizationException |
403 — эрхгүй |
NotFoundException |
404 — олдсонгүй |
ConflictException |
409 — жш: цуцлагдсан захиалгыг дахин цуцлах |
ValidationException |
422 — параметер буруу |
RateLimitException |
429 — retryAfter() |
ServerException |
5xx |
ApiException |
бусад HTTP алдаа |
ConnectionException |
сүлжээ/timeout |
ConfigurationException |
токен/төслийн ID дутуу |
Холболтын алдаа, 429 болон 5xx хариу дээр SDK автоматаар (default 2 удаа) дахин хүсэлт илгээнэ — config('byl.retry').
Хэд хэдэн төсөл
Тест бичих
Byl::fake() нь сүлжээнд гарахгүйгээр бодит бүтэцтэй хариу буцааж, хүсэлтүүдийг шалгах боломж өгнө:
Хариуг өөрөө тодорхойлох, алдаа симуляц хийх:
Webhook-ийг гарын үсэгтэйгээр туршина:
FakeWebhook::invoicePaid(), FakeWebhook::checkoutCompleted(), FakeWebhook::make($type, $object, $data) мөн бэлэн байна. Payload-ыг InvoiceFactory, CheckoutFactory, CustomerFactory, SubscriptionFactory (Byl\Laravel\Testing\) хэлбэрээр өөрчилнө — тэдгээр нь Byl-ээс ирдэг бодит payload-ийн бүтцийг (харилцагч нь customer объект, бүтээгдэхүүн нь product объект, үнэ нь price объект) хуулбарладаг.
Lookup key тохируулаагүй үнийг симуляц хийх:
Хөгжүүлэлт
Лиценз
MIT — LICENSE.md.
All versions of byl-laravel with dependencies
guzzlehttp/promises Version ^2.0
illuminate/contracts Version ^11.0|^12.0|^13.0
illuminate/http Version ^11.0|^12.0|^13.0
illuminate/support Version ^11.0|^12.0|^13.0