ব্যবহার · ওটিপি
ওটিপি এসএমএস — ব্যবহারকারী অপেক্ষায় থাকতেই পৌঁছে যায়
এক ওটিপি এপিআই দিয়ে লগইন ও চেকআউটের কোড তৈরি, পাঠানো ও যাচাই করুন। ওটিপি যায় আলাদা অগ্রাধিকার লেনে, অটো ফেইলওভারসহ — তাই কোনো ক্যাম্পেইন ভেরিফিকেশন কোড আটকাতে পারে না।
সমস্যাটা কোথায়
ওটিপির দাম মাত্র কয়েক মিনিট। কোড দেরিতে এলে ব্যবহারকারী "আবার পাঠান" চাপেন, দুটো কোড আসে, ভুলটা লেখেন, তারপর হাল ছেড়ে দেন। চেকআউট পাতায় এর মানে একটি হারানো অর্ডার, সাইন আপ পাতায় একজন হারানো গ্রাহক।
ওটিপির বেশিরভাগ সমস্যা আপনার কোডে নয়, এসএমএস রুটে। কোনো আপস্ট্রিম প্রোভাইডার ধীর হয়ে যায়, কিংবা আপনারই মার্কেটিং এসএমএস লগইন কোডের সাথে একই কিউতে জমে যায়। কোড তৈরি, হ্যাশ করা, মেয়াদ, ভুল চেষ্টার সীমা আর অপব্যবহার ঠেকানো — সব নিজে বানাতে সময় লাগে, আর একটায় ভুল হওয়াও সহজ।
BitSMS যেভাবে সমাধান করে
কোড তৈরি ও যাচাই আমাদের দায়িত্ব
ওটিপির জন্য অগ্রাধিকার লেন
রুটে সমস্যা হলে ফেইলওভার
অপব্যবহার ঠেকাতে বিল্ট-ইন সীমা
আপনার কোডে
দুটি কলেই ওটিপি পাঠানো ও যাচাই
প্রথম কল কোড পাঠায় এবং একটি otp_id ফেরত দেয়। দ্বিতীয় কল ব্যবহারকারীর লেখা কোড মিলিয়ে দেখে। ডিফল্টভাবে কোডের মেয়াদ ৫ মিনিট; ttl_seconds দিয়ে ১ থেকে ১০ মিনিটের মধ্যে যেকোনো মান দিতে পারেন।
- এসএমএসের ভাষা নিজের মতো লিখুন: টেমপ্লেটে {{code}} থাকতেই হবে, আর {{app_name}} ও {{ttl_minutes}} ব্যবহার করা যায়।
- Idempotency-Key পাঠান, যাতে নেটওয়ার্কের কারণে আবার চেষ্টা হলেও দ্বিতীয় কোড না যায়।
- বাংলা টেমপ্লেটও চলে; মেসেজ স্বয়ংক্রিয়ভাবে ইউনিকোডে যায়।
# 1. Send: BitSMS generates the code and never returns it.
curl https://sms-api.bitcommerz.com/v1/otp \
-H "Authorization: Bearer $BITSMS_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: login-7f3a91" \
-d '{"to": "01712345678", "app_name": "MyShop"}'
# → 202 {"otp_id": "…", "message_id": "…", "expires_at": "…"}
# 2. Verify what the user typed.
curl https://sms-api.bitcommerz.com/v1/otp/$OTP_ID/verify \
-H "Authorization: Bearer $BITSMS_API_KEY" \
-H "Content-Type: application/json" \
-d '{"code": "482913"}'
# → 200 {"verified": true}const headers = {
Authorization: `Bearer ${process.env.BITSMS_API_KEY}`,
"Content-Type": "application/json",
};
// 1. Send
const sent = await fetch("https://sms-api.bitcommerz.com/v1/otp", {
method: "POST",
headers: { ...headers, "Idempotency-Key": `login-${sessionId}` },
body: JSON.stringify({ to: "01712345678", app_name: "MyShop" }),
}).then((r) => r.json());
// 2. Verify
const result = await fetch(`https://sms-api.bitcommerz.com/v1/otp/${sent.otp_id}/verify`, {
method: "POST",
headers,
body: JSON.stringify({ code: userInput }),
}).then((r) => r.json());
if (result.verified) { /* sign the user in */ }<?php
function bitsms(string $path, array $body, array $extra = []): array {
$ch = curl_init("https://sms-api.bitcommerz.com/v1" . $path);
curl_setopt_array($ch, [
CURLOPT_POST => true,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => array_merge([
"Authorization: Bearer " . getenv("BITSMS_API_KEY"),
"Content-Type: application/json",
], $extra),
CURLOPT_POSTFIELDS => json_encode($body),
]);
return json_decode(curl_exec($ch), true);
}
$otp = bitsms("/otp", ["to" => "01712345678", "app_name" => "MyShop"],
["Idempotency-Key: login-" . session_id()]);
$check = bitsms("/otp/" . $otp["otp_id"] . "/verify", ["code" => $_POST["code"]]);
if ($check["verified"] ?? false) { /* sign the user in */ }auth = {"Authorization": f"Bearer {os.environ['BITSMS_API_KEY']}"}
otp = requests.post(
"https://sms-api.bitcommerz.com/v1/otp",
headers={**auth, "Idempotency-Key": f"login-{session_id}"},
json={"to": "01712345678", "app_name": "MyShop"},
timeout=10,
).json()
check = requests.post(
f"https://sms-api.bitcommerz.com/v1/otp/{otp['otp_id']}/verify",
headers=auth,
json={"code": user_input},
timeout=10,
).json()
if check["verified"]:
... # sign the user intype otp struct {
OtpID string `json:"otp_id"`
}
var sent otp
post("/v1/otp", "login-"+sessionID, map[string]any{"to": "01712345678", "app_name": "MyShop"}, &sent)
var result struct {
Verified bool `json:"verified"`
AttemptsRemaining int `json:"attempts_remaining"`
}
post("/v1/otp/"+sent.OtpID+"/verify", "", map[string]any{"code": userInput}, &result)
// post marshals body, sets Authorization (and Idempotency-Key when non-empty),
// sends to https://sms-api.bitcommerz.com and decodes the JSON response into out.সাধারণ প্রশ্ন
বাংলাদেশে ওটিপি এসএমএস কত দ্রুত পৌঁছায়?
BitSMS রিকোয়েস্ট পাওয়ামাত্র ওটিপিকে তার নিজস্ব অগ্রাধিকার লেনে তোলে, ট্রানজ্যাকশনাল ও বাল্ক মেসেজের আগে। শেষ ধাপটা অপারেটরের ওপর নির্ভর করে; মেসেজের স্ট্যাটাসে দেখা যায় ঠিক কখন পাঠানো ও ডেলিভার হয়েছে।
ওটিপি কোড কি আমাকেই তৈরি করতে হবে?
না। BitSMS কোড তৈরি করে, পাঠায়, শুধু হ্যাশ সংরক্ষণ করে এবং ব্যবহারকারীর লেখা কোড যাচাই করে। কোডটি আপনার হাতে আসেই না। নিজের কোড ব্যবহার করতে চাইলে সাধারণ ট্রানজ্যাকশনাল এসএমএস হিসেবেও পাঠাতে পারেন।
একটি নম্বরে কয়টি ওটিপি পাঠানো যায়?
প্রতি অ্যাকাউন্টে একটি নম্বরে ১০ মিনিটে সর্বোচ্চ ৩টি এবং দিনে ১০টি ওটিপি। যাচাইয়ে ৫ বার ভুল করা যায়; এরপর নতুন কোড লাগবে।
ওটিপি এসএমএস কি বাংলায় পাঠানো যায়?
হ্যাঁ। টেমপ্লেট বাংলায় লিখে তাতে {{code}} রাখুন। বাংলা এসএমএসের এক পার্টে ৭০ অক্ষর ধরে, তাই টেমপ্লেট ছোট রাখলে এক পার্টেই হয়ে যাবে।