نمونه کد Android
کتابخانه Kotlin فینوپال برای اپ اندروید است. مبلغها به ریال و حداقل ۱۰۰۰ ریال هستند. minSdk نسخه ۲۴ یا بالاتر است. پرداخت داخل خود اپ نیست؛ آدرس درگاه با Custom Tabs باز میشود.
implementation("com.github.FinoPal-Lab:finopal-android-sdk:v1.0.0")
implementation("androidx.browser:browser:1.8.0")
مخزن JitPack را هم در settings.gradle.kts اضافه کنید: maven { url = uri("https://jitpack.io") }
پیکربندی و درخواست
مرچنتکد را از پنل کاربری بردارید. orderId و توضیحات الزامیاند. توضیحات حداکثر ۲۵۵ کاراکتر است. میزبان واقعی https://payment.finopal.ir و سندباکس https://sandbox.finopal.ir است. دامنه callbackUrl باید با دامنه ثبتشده درگاه یکی باشد.
val finopal = FinoPal(
merchantId = "fino-xxxx-xxxx-xxxx-xxxx",
sandbox = false,
)
val created = finopal.payments.create(
PaymentRequest(
amount = 10000,
description = "سفارش ۱۲۳۴۵",
callbackUrl = "https://shop.example/callback",
orderId = "ORD-12345",
),
)
FinoPalCheckout.open(this, created.paymentUrl)
بازگشت و تأیید پرداخت
درگاه با Authority و Status به callbackUrl برمیگردد. فقط وقتی Status=OK است تأیید کنید. مبلغ باید همان مبلغ درخواست باشد. کد ۱۰۰ تازه تأییدشده و کد ۱۰۱ قبلاً تأییدشده است.
val back = FinoPalCheckout.parse(intent)
if (back.shouldVerify) {
val verified = finopal.verifications.verify(back.authority!!, amount)
}
استعلام، ریورس و کارمزد
val inquiry = finopal.inquiries.inquire(authority)
finopal.reversals.reverse(authority)
val fee = finopal.fees.calculate(1000000)
feeType برابر Merchant یعنی کارمزد روی پذیرنده و Payer یعنی روی خریدار است. اگر verify با خطای شبکه برگشت، پرداخت تازه نسازید و اول استعلام بگیرید.
خطا
| کلاس | معنی |
|---|---|
| ValidationException | ورودی نامعتبر؛ درخواستی ارسال نشده |
| ResponseException | گیتوی درخواست را رد کرده و کد خطا دارد |
| TransportException | شبکه یا پاسخ نامعتبر. نتیجه نامعلوم است؛ استعلام بگیرید |