pk_live_aBcDeFgHiJkLmNoPqRsT
SMS Sync Pay API & Integration
Accept automated bKash, Nagad, Rocket, Card, and Crypto payments directly through our central aggregator platform. Use our zero-dependency embed button or full RESTful JSON API.
1. Quickstart Integration Flow
Register as a merchant or copy your live pk_live_... key from the Merchant Dashboard.
POST to /payment/initiate or use the pay-embed.js button on your site.
Receive instant HMAC signed JSON webhooks as soon as payments are verified by our SMS daemon.
2. Zero-Dependency Embed Script (`pay-embed.js`)
Live Interactive Demo →The easiest way to integrate SMS Sync Pay into an HTML, WordPress, or Shopify site is using our client-side SDK. It creates a responsive popup checkout window with automatic redirect fallback.
<!-- Include script once in your page -->
<script src="https://karianaquran.com/pay/js/pay-embed.js"></script>
<!-- Attach data-syspay to any button -->
<button data-syspay
data-amount="500"
data-order="ORD-1002"
data-key="pk_live_aBcDeFgHiJkLmNoPqRsT"
data-method="bkash"
data-layout="bottom_sheet" <!-- 'bottom_sheet' | 'popup' | 'page' -->
data-customer-name="Tanvir Ahmed"
class="checkout-btn">
Pay with bKash / Card
</button>
Fixed to bottom with native drag handle. Optimized for mobile apps, webviews, and touch-first devices.
layout=bottom_sheet
Centered floating dialog with dimmed backdrop. Ideal for desktop web shops and inline checkout iframe/modals.
layout=popup
Dedicated hosted payment screen with merchant branding. Perfect for direct redirects from WooCommerce / Shopify.
layout=page
3. Supported Payment Methods Matrix
| Method Code | Channel Name | Verification Mechanism | Environment Mode |
|---|---|---|---|
| bkash | bKash Send Money | Real-time Android SMS listener matching | LIVE |
| nagad | Nagad Money Received | Real-time Android SMS listener matching | LIVE |
| rocket | DBBL Rocket 16216 | Real-time Android SMS listener matching | LIVE |
| card | Visa / Mastercard / Amex | Simulated instant card gateway authorization | DEMO SANDBOX |
| crypto | USDT-TRC20 & Bitcoin | Payer TXID hash submitted for admin manual approval | REVIEW QUEUE |
| binance_pay | Binance Pay ID | Binance order ref submitted for admin approval | REVIEW QUEUE |
4. Package Commission Rates (Transparent Flat + %)
| Plan | BDT Commission Formula | USD Commission | Min Payout | Setup Fee |
|---|---|---|---|---|
| Starter | ৳10 + 2.00% | $0.10 + 2.00% | ৳1,000 | Free |
| Professional | ৳7 + 1.70% | $0.07 + 1.70% | ৳2,000 | ৳5,000 |
| Business | ৳5 + 1.50% | $0.05 + 1.50% | ৳5,000 | ৳15,000 |
| Enterprise | ৳2 + 1.00% | $0.02 + 1.00% | ৳10,000 | Free |
/api/v1/payment/initiate
Initializes a hosted payment session with fee preview and returns a hosted checkout URL.
curl -X POST https://karianaquran.com/pay/api/v1/payment/initiate \
-H "Content-Type: application/json" \
-H "Authorization: Bearer pk_live_aBcDeFgHiJkLmNoPqRsT" \
-d '{
"amount": 500,
"order_id": "ORD-12345",
"method": "bkash",
"customer_name": "Rahim Ahmed",
"customer_email": "rahim@gmail.com"
}'
{
"success": true,
"message": "Payment session initialized.",
"data": {
"order_id": "ORD-12345",
"amount": 500,
"currency": "BDT",
"method": "bkash",
"receiver": "01712345678",
"estimated_fee": 12.5,
"estimated_net": 487.5,
"payment_url": "https://karianaquran.com/pay/payment?a=500&p=bkash&orderId=ORD-12345",
"status": "pending"
}
}
/api/v1/payment/verify
Verify a customer payment by submitting their MFS TrxID or card credentials.
curl -X POST https://karianaquran.com/pay/api/v1/payment/verify \
-H "Content-Type: application/json" \
-H "Authorization: Bearer pk_live_aBcDeFgHiJkLmNoPqRsT" \
-d '{
"order_id": "ORD-12345",
"trx_id": "8A1B2C3D4E",
"method": "bkash"
}'
/api/v1/balance
Query merchant wallet available balance, withdrawable balance, total withdrawn, and active tier rates.
{
"success": true,
"data": {
"balance": 3594.50,
"withdrawable_balance": 3094.50,
"total_withdrawn": 2000.00,
"currency": "BDT",
"package": {
"name": "Business",
"slug": "business",
"flat_fee_bdt": 5.00,
"percent_fee": 1.5,
"min_withdrawal": 5000.00
}
}
}
8. Webhooks & HMAC-SHA256 Signature
Configure your Webhook URL in Merchant Dashboard Settings. Every verified payment delivers an HTTP POST request signed with your private secret_key via the X-Signature-SHA256 header.
<?php
// Verification in PHP
$payload = file_get_contents('php://input');
$signature = $_SERVER['HTTP_X_SIGNATURE_SHA256'] ?? '';
$secret = 'sk_live_YOUR_SECRET_KEY';
$expected = hash_hmac('sha256', $payload, $secret);
if (hash_equals($expected, $signature)) {
$event = json_decode($payload, true);
// Payment verified: credit user order $event['order_id']
http_response_code(200);
} else {
http_response_code(401);
}
9. Mobile App Deeplink Schemas (ডিপলিংক স্কিমা)
সরাসরি মোবাইল ব্রাউজার বা অ্যাপ থেকে গ্রাহকের ফোনে ইনস্টল করা বিকাশ (bKash), নগদ (Nagad), রকেট (Rocket), উপায় (Upay) ও সেলফিন (Cellfin) অ্যাপ স্বয়ংক্রিয়ভাবে ওপেন করার স্ট্যান্ডার্ড অ্যান্ড্রয়েড ইন্টেন্ট এবং কাস্টম ইউআরআই স্কিমা।
Interactive Deeplink Playground (লাইভ টেস্ট ও জেনারেটর)
১. এইচটিটিপিএস (HTTPS) প্রয়োজন নেই: অ্যান্ড্রয়েডের intent:// কোনো এইচটিটিপি কল নয়, এটি ক্রোম থেকে অ্যান্ড্রয়েড ওএস-এর সরাসরি সিস্টেম কল। লোকালহোস্টে (http://127.0.0.1:8000) থাকলেও সরাসরি অ্যাপ ওপেন হতে কোনো বাধা নেই।
২. পূর্বে বিকাশে প্লে স্টোর আসার কারণ: বিকাশের লিংকে scheme=bkash; ছিল যা বিকাশ অ্যাপে সমর্থিত ছিল না। অ্যান্ড্রয়েড সেই স্কিমা না পাওয়ায় ক্রোম ভুল বুঝে প্লে স্টোরে পাঠাচ্ছিল। যখন শুদ্ধ প্যাকেজ লঞ্চার ইনটেন্ট (intent://#Intent;package=com.bKash.customerapp;end) দেওয়া হয়েছে, তখন নগদ ও অন্যান্য অ্যাপের মতোই বিকাশও সাথে সাথে ওপেন হবে।
Redirection initiated. On an Android mobile device, this directly opens the app.
MFS Deeplink Reference Cheat Sheet (সকল ওয়ালেটের স্কিমা তালিকা)
টেবিল থেকে সরাসরি ১-ক্লিকে অ্যাপ টেস্ট করুন| Wallet / Method | Package Name (Android) | Type | Standard Working Intent URI | Direct Test (<a>) |
|---|---|---|---|---|
| bKash (বিকাশ অ্যাপ ওপেন) | com.bKash.customerapp | Direct Launcher | intent://#Intent;action=android.intent.action.MAIN;category=android.intent.category.LAUNCHER;package=com.bKash.customerapp;S.browser_fallback_url=https%3A%2F%2Fplay.google.com%2Fstore%2Fapps%2Fdetails%3Fid%3Dcom.bKash.customerapp;end | Test |
| Nagad (নগদ অ্যাপ ওপেন) | com.konasl.nagad | nagad:// | intent://#Intent;action=android.intent.action.MAIN;category=android.intent.category.LAUNCHER;package=com.konasl.nagad;S.browser_fallback_url=https%3A%2F%2Fplay.google.com%2Fstore%2Fapps%2Fdetails%3Fid%3Dcom.konasl.nagad;end | Test |
| Rocket (NexusPay App) | com.dbbl.mplus.ui | rocket:// | intent://#Intent;package=com.dbbl.mplus.ui;end | Test |
| Rocket (Classic Rocket) | com.dbbl.mcommerce.rocket | rocket:// | intent://#Intent;package=com.dbbl.mcommerce.rocket;end | Test |
| Upay (উপায় অ্যাপ ওপেন) | bd.com.upay.customer | upay:// | intent://#Intent;package=bd.com.upay.customer;end | Test |
| Cellfin (সেলফিন অ্যাপ ওপেন) | com.ibbl.cellfin | cellfin:// | intent://#Intent;package=com.ibbl.cellfin;end | Test |
How to Integrate in Your Website (Tested Mobile Chrome Safe Methods)
<!-- HTML Anchor Tag -->
<a href="#" id="bkashPaymentBtn" class="btn" onclick="generateLink('bkash_payment')">
বিকাশ পেমেন্ট করুন
</a>
<script>
function generateLink(actionType) {
const num = '01700000000';
const amt = '500';
if (actionType === 'bkash_payment') {
// সরাসরি অ্যাঙ্কর href এ ইনটেন্ট সেট করা (ক্রোম প্লে-স্টোর বাইপাস করে)
const intentUrl = "intent://payment?number=" + num + "&amount=" + amt +
"#Intent;scheme=bkash;package=com.bKash.customerapp;end;";
document.getElementById('bkashPaymentBtn').href = intentUrl;
} else if (actionType === 'bkash_send') {
const intentUrl = "intent://sendmoney?number=" + num + "&amount=" + amt +
"#Intent;scheme=bkash;package=com.bKash.customerapp;end;";
document.getElementById('bkashPaymentBtn').href = intentUrl;
}
}
</script>
<!-- হিডেন আইফ্রেম -->
<iframe id="hiddenIframe" style="display:none;"></iframe>
<script>
function forceOpenBkash(num, amt) {
const iframe = document.getElementById('hiddenIframe');
// আইফ্রেমের মাধ্যমে সরাসরি কাস্টম স্কিম ফায়ার করা
iframe.src = "bkash://payment?number=" + num + "&amount=" + amt;
// ব্যাকআপ হিসেবে ৫০০ms পর সরাসরি অ্যাপ ওপেন ইনটেন্ট
setTimeout(function() {
window.location.href = "intent://#Intent;package=com.bKash.customerapp;end";
}, 500);
}
</script>
// Android Native Intent with PackageManager check & Play Store Fallback
fun launchMfsApp(context: Context, packageName: String) {
val pm = context.packageManager
val launchIntent = pm.getLaunchIntentForPackage(packageName)
if (launchIntent != null) {
launchIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK)
context.startActivity(launchIntent)
} else {
// App is not installed: Redirect to Google Play Store
val marketIntent = Intent(Intent.ACTION_VIEW, Uri.parse("market://details?id=$packageName"))
marketIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK)
context.startActivity(marketIntent)
}
}