নিজের বিকাশ, নগদ, রকেট বা উপায় নম্বরে পেমেন্ট নিন এবং নিজের ফোনে আসা এসএমএস থেকে তা স্বয়ংক্রিয়ভাবে যাচাই করুন। কেনা থেকে প্রথম পরীক্ষামূলক পেমেন্ট পর্যন্ত সব ধাপ এখানে আছে।
Take payments to your own bKash, Nagad, Rocket or Upay number and have them verified automatically from the SMS on your own phone. Everything from buying a licence to your first test payment is on this page.
Nexora Forward Pay একটি ওয়ার্ডপ্রেস প্লাগইন, যা আপনার নিজের ওয়েবসাইটেই একটি পেমেন্ট গেটওয়ে চালু করে। গ্রাহক আপনার নিজের বিকাশ, নগদ, রকেট বা উপায় নম্বরে টাকা পাঠান; টাকা আসার এসএমএস আপনার নিজের ফোনে এলে সঙ্গী অ্যান্ড্রয়েড অ্যাপ Nexora Pay Connect সেটি আপনার সাইটে পৌঁছে দেয়, আর সাইট নিজে থেকেই পেমেন্ট মিলিয়ে অর্ডার সম্পন্ন করে।
টাকা সরাসরি গ্রাহকের অ্যাকাউন্ট থেকে আপনার অ্যাকাউন্টে যায়। মাঝখানে আমরা বা অন্য কেউ টাকা ধরে রাখি না, আর আপনার পেমেন্টের তথ্য আপনার নিজের সার্ভারেই থাকে।
WooCommerce চেকআউটে বিকাশ, নগদ, রকেট, উপায় ও ব্যাংক ট্রান্সফার যোগ করতে চান।
ইনভয়েস বা পেমেন্ট লিংক পাঠিয়ে টাকা নিতে চান, দোকান ছাড়াই।
নিজের সাইট বা অ্যাপ থেকে API দিয়ে পেমেন্ট তৈরি ও যাচাই করতে চান।
Nexora Forward Pay is a WordPress plugin that runs a payment gateway on your own website. Customers send money to your own bKash, Nagad, Rocket or Upay number; when the payment SMS arrives on your own phone, the companion Android app Nexora Pay Connect passes it to your site, and the site matches the payment and completes the order by itself.
The money goes straight from the customer's account to yours. Neither we nor anyone else holds it in between, and your payment records stay on your own server.
You want bKash, Nagad, Rocket, Upay and bank transfer in your WooCommerce checkout.
You want to get paid by invoice or payment link, without running a shop.
You want to create and verify payments from your own site or app through an API.
| ওয়ার্ডপ্রেস | ৬.০ বা নতুন |
|---|---|
| PHP | ৭.৪ বা নতুন |
| HTTPS | সাইটে বৈধ SSL সার্টিফিকেট থাকতে হবে। অ্যাপ https:// ছাড়া কোনো সাইটের সঙ্গে যুক্ত হয় না। |
| WooCommerce | ঐচ্ছিক। দোকানের চেকআউটে ব্যবহার করতে চাইলে লাগবে; পেমেন্ট লিংক, ইনভয়েস ও API এটি ছাড়াই চলে। |
| অ্যান্ড্রয়েড ফোন | অ্যান্ড্রয়েড ৮.০ বা নতুন। যে সিমে বিকাশ, নগদ, রকেট বা উপায়ের টাকা আসার এসএমএস আসে, সেই সিম এই ফোনেই থাকতে হবে। |
| ফোন অনলাইন | ফোন চালু, চার্জে এবং ইন্টারনেটে (ওয়াই-ফাই বা মোবাইল ডেটা) যুক্ত থাকতে হবে। তারিখ ও সময় "স্বয়ংক্রিয়" রাখুন। |
| লাইসেন্স | সাইটে একটি সক্রিয় Nexora Forward Pay লাইসেন্স। লাইসেন্স সক্রিয় না থাকলে অ্যাপ যুক্ত হয় না এবং নতুন পেমেন্ট তৈরি হয় না। |
আইফোনের জন্য অ্যাপ নেই: iOS কোনো অ্যাপকে আগত এসএমএস পড়তে দেয় না।
| WordPress | 6.0 or newer |
|---|---|
| PHP | 7.4 or newer |
| HTTPS | The site needs a valid SSL certificate. The app does not connect to a site that is not https://. |
| WooCommerce | Optional. Needed for the shop checkout; payment links, invoices and the API work without it. |
| Android phone | Android 8.0 or newer. The SIM that receives your bKash, Nagad, Rocket or Upay payment SMS must be in this phone. |
| Phone online | The phone must stay switched on, charged and connected to the internet (Wi-Fi or mobile data). Keep date and time on "automatic". |
| Licence | An active Nexora Forward Pay licence on the site. Without it the app does not connect and new payments cannot be created. |
There is no iPhone app: iOS does not let any app read incoming SMS.
লাইসেন্স কেনা যায় Nexora Forward ওয়েবসাইট থেকে। প্যাকেজ ঠিক হয় কয়টি ডোমেইনে প্লাগইন চালাবেন তার ভিত্তিতে; প্রতিটি প্যাকেজে সব ফিচার থাকে।
www থাকা বা না থাকা একই ডোমেইন ধরা হয়; আলাদা সাবডোমেইন (যেমন shop.example.com) আলাদা ডোমেইন।Licences are sold on the Nexora Forward website. The tier depends on how many domains you run the plugin on; every tier includes every feature.
www is the same domain; a different sub-domain (for example shop.example.com) is a separate domain.প্লাগইনের ZIP ফাইল এবং অ্যান্ড্রয়েড অ্যাপের APK ফাইল শুধু তাঁরাই পান, যাঁরা Nexora Forward Pay কিনেছেন।
ফাইল দুটি শুধু আপনার নিজের ব্যবহারের জন্য; অন্য কাউকে দেবেন না। লাইসেন্সের ই-মেইলেও প্লাগইনের একটি ব্যক্তিগত ডাউনলোড লিংক থাকে, যা ৩ দিন পর্যন্ত কাজ করে।
The plugin ZIP and the APK of the Android app are available only to customers who bought Nexora Forward Pay.
Both files are for your own use only; do not pass them on. Your licence e-mail also contains a personal download link for the plugin, which works for up to 3 days.
nexora-forward-pay-x.y.z.zip ফাইলটি বেছে Install Now চাপুন। ZIP ফাইল খুলবেন না, যেমন আছে তেমনই আপলোড করুন।প্লাগইন চালু হলে নিজের কয়েকটি ডেটাবেজ টেবিল তৈরি করে (পেমেন্ট, গেটওয়ে, এসএমএস, ডিভাইস ইত্যাদি)। ওয়ার্ডপ্রেসের অন্য কোনো টেবিল বদলায় না।
nexora-forward-pay-x.y.z.zip and press Install Now. Do not unpack the ZIP; upload it as it is.On activation the plugin creates a few database tables of its own (payments, gateways, SMS, devices and so on). It does not change any other WordPress table.
ভার্সন ১.৫.০ থেকে প্লাগইন নিজেই নতুন ভার্সনের খোঁজ রাখে। সাইটে সক্রিয় লাইসেন্স থাকলেই আপডেট পাওয়া যায়।
নতুন ভার্সন এলে ওয়ার্ডপ্রেসের Plugins পাতায় Nexora Forward Pay-এর নিচে "নতুন ভার্সন আছে" বার্তা দেখায়। View details চাপলে পরিবর্তনের তালিকা, আর Update now চাপলে আপডেট হয়ে যায়।
Nexora Pay → License → Updates কার্ডে Install updates automatically চালু করলে ওয়ার্ডপ্রেস নতুন ভার্সন নিজেই বসিয়ে নেয় (সাধারণত প্রকাশের ১২ ঘণ্টার মধ্যে)। শুরুতে এটি বন্ধ থাকে।
একই কার্ডে ইনস্টল করা ভার্সন, সর্বশেষ ভার্সন ও শেষ কবে খোঁজা হয়েছে তা দেখায়। Check now চাপলে তখনই লাইসেন্স সার্ভারে খোঁজ নেওয়া হয়।
আপডেট কীভাবে যাচাই হয়:
স্বয়ংক্রিয় আপডেট কাজ না করলে অ্যাকাউন্ট থেকে নতুন ZIP নামিয়ে Plugins → Add New Plugin → Upload Plugin দিয়ে আপলোড করুন এবং "Replace current with uploaded" বেছে নিন। বড় পরিবর্তনের আগে সাইটের ব্যাকআপ রাখা ভালো অভ্যাস।
From version 1.5.0 the plugin looks for new versions by itself. Updates are available to every site with an active licence.
When a new version is released, the WordPress Plugins screen shows "There is a new version available" under Nexora Forward Pay. View details shows the changelog and Update now installs it.
Switch on Install updates automatically in the Nexora Pay → License → Updates card and WordPress installs new versions on its own (usually within 12 hours of release). It is off by default.
The same card shows the installed version, the latest version and the time of the last check. Check now asks the licence server immediately.
How an update is verified:
If automatic updates do not work, download the new ZIP from your account, upload it with Plugins → Add New Plugin → Upload Plugin and choose "Replace current with uploaded". Keeping a backup of your site before larger changes is a good habit.
গেটওয়ে হলো সেই নম্বর বা অ্যাকাউন্ট, যেখানে গ্রাহক টাকা পাঠাবেন। Nexora Pay → Gateways → Add gateway থেকে যোগ করুন।
| অ্যাকাউন্টের ধরন | গ্রাহক যা করেন | যাচাই |
|---|---|---|
| Personal | Send Money | এসএমএস থেকে স্বয়ংক্রিয় |
| Agent | Cash Out | এসএমএস থেকে স্বয়ংক্রিয় |
| Merchant | Payment | এসএমএস থেকে স্বয়ংক্রিয় |
| Bank account | ব্যাংকে জমা বা ট্রান্সফার, তারপর রেফারেন্স নম্বর লেখেন | আপনি নিজে দেখে অনুমোদন করেন |
A gateway is the number or account your customers send money to. Add one under Nexora Pay → Gateways → Add gateway.
| Account type | What the customer does | Verification |
|---|---|---|
| Personal | Send Money | Automatic, from the SMS |
| Agent | Cash Out | Automatic, from the SMS |
| Merchant | Payment | Automatic, from the SMS |
| Bank account | Deposits or transfers at the bank, then enters the reference number | You check and approve it yourself |
Nexora Pay Connect অ্যাপটি সেই ফোনে বসাতে হবে, যে ফোনে পেমেন্টের এসএমএস আসে। নিচের ধাপগুলো মন দিয়ে পড়ুন; বেশির ভাগ সমস্যা এখানকার কোনো একটি ধাপ বাদ পড়ার কারণে হয়।
অ্যাপটি APK ফাইল হিসেবে দেওয়া হয়। লাইসেন্স কেনা অ্যাকাউন্টে লগইন করে এই পাতার ডাউনলোড অংশের "অ্যাপ (APK) নামান" বোতাম থেকে সর্বশেষ APK নামিয়ে নিন। বোতামটি দেখা না গেলে অ্যাডমিনের সাথে যোগাযোগ করুন (support@nexoraforward.com)। অন্য কোনো ওয়েবসাইট, গ্রুপ বা অপরিচিত কারও দেওয়া APK ইনস্টল করবেন না।
Play Store-এর বাইরে থেকে ইনস্টল করা যে অ্যাপ এসএমএসের অনুমতি চায়, Google Play Protect সেটিকে সতর্কবার্তা দেখাতে বা আটকে দিতে পারে। এটি Google-এর সাধারণ নিয়ম; শুধু এই অ্যাপের জন্য নয়। ফোন ও অঞ্চলভেদে "More details → Install anyway" দেখা যেতে পারে, আবার ইনস্টল পুরোপুরি আটকেও যেতে পারে। আটকে গেলে নিচের দুটি উপায়ের একটি ব্যবহার করুন।
adb install nexora-pay-connect-x.y.z.apkঅ্যান্ড্রয়েড ১৩ থেকে Play Store-এর বাইরে থেকে বসানো অ্যাপকে এসএমএসের অনুমতি দিতে গেলে "Restricted setting" বার্তা আসতে পারে। তখন:
মেনুটি সাধারণত তখনই দেখা যায়, যখন আপনি একবার অনুমতি দিতে গিয়ে "Restricted setting" বার্তাটি পেয়েছেন।
অ্যাপ একটিই সংবেদনশীল অনুমতি চায়: এসএমএস গ্রহণ (RECEIVE_SMS)। টাকা আসার এসএমএস ফোনে পৌঁছানোর মুহূর্তে সেটি আপনার সাইটে পাঠানোই এর কাজ; এই অনুমতি ছাড়া স্বয়ংক্রিয় যাচাই সম্ভব নয়। অ্যাপ ফোনের পুরোনো ইনবক্স পড়ে না এবং কোনো এসএমএস পাঠাতে পারে না। কোন এসএমএস পাঠানো হয় তা নিচের "অ্যাপ কী পাঠায়" অংশে আছে।
অ্যাপ সচল থাকার জন্য একটি নীরব, স্থায়ী নোটিফিকেশন দেখায় ("Processing messages in the background")। অ্যান্ড্রয়েড ১৩ ও নতুন সংস্করণে এর জন্য নোটিফিকেশনের অনুমতি চাওয়া হয়; অনুমতি দিন। এই নোটিফিকেশন কোনো শব্দ করে না, এবং এটি থাকলে ফোন অ্যাপটিকে সহজে বন্ধ করে দেয় না।
অনেক ফোন ব্যাটারি বাঁচাতে পেছনে চলা অ্যাপ বন্ধ করে দেয়; তখন এসএমএস দেরিতে পৌঁছায় বা পৌঁছায়ই না। অ্যাপের Open battery settings বোতাম দিয়ে অ্যাপটিকে ব্যাটারি অপ্টিমাইজেশনের বাইরে রাখুন, তারপর আপনার ফোনের ব্র্যান্ড অনুযায়ী নিচের সেটিংস ঠিক করুন। মেনুর নাম সংস্করণভেদে একটু আলাদা হতে পারে।
| ফোন | যা করবেন |
|---|---|
| Xiaomi / Redmi / POCO | Settings → Apps → Manage apps → Nexora Pay Connect: Autostart চালু; Battery saver → No restrictions। সাম্প্রতিক অ্যাপের তালিকায় অ্যাপটি চেপে ধরে তালা (lock) দিন। |
| vivo / iQOO | Settings → Battery → Background power consumption management: অ্যাপটির জন্য পেছনে চলা অনুমোদন দিন। Settings → Apps → Autostart (বা i Manager → App manager → Autostart manager): চালু। |
| Oppo / Realme / OnePlus | Settings → Apps → App management → Nexora Pay Connect → Battery usage: Allow background activity ও Allow auto launch চালু। সাম্প্রতিক অ্যাপের তালিকায় তালা দিন। |
| Samsung | Settings → Apps → Nexora Pay Connect → Battery: Unrestricted। Settings → Battery → Background usage limits → Never sleeping apps-এ অ্যাপটি যোগ করুন। |
Nexora Pay Connect must be installed on the phone that receives your payment SMS. Read these steps carefully; most problems come from skipping one of them.
The app is delivered as an APK file. Log in with the account that bought the licence and use the "Download the app (APK)" button in the download section of this page. If the button is not there, contact the admin (support@nexoraforward.com). Do not install an APK from any other website, group or person.
Google Play Protect may warn about, or block, an app that is installed from outside the Play Store and asks for SMS access. That is Google's general policy, not something specific to this app. Depending on the phone and region you may see "More details → Install anyway", or the installation may be blocked outright. If it is blocked, use one of these two ways.
adb install nexora-pay-connect-x.y.z.apkFrom Android 13, granting SMS access to an app that was installed from outside the Play Store can show a "Restricted setting" message. Then:
The menu entry usually appears only after you have tried to grant the permission once and seen the "Restricted setting" message.
The app asks for one sensitive permission: receive SMS (RECEIVE_SMS). Its only job is to pass a payment SMS to your site the moment it reaches the phone; automatic verification is not possible without it. The app does not read the phone's existing inbox and cannot send SMS. Which messages are forwarded is described under "What the app sends" below.
To stay alive the app shows one silent, permanent notification ("Processing messages in the background"). On Android 13 and newer it asks for the notification permission for that; please allow it. The notification makes no sound, and while it is shown the phone is far less likely to shut the app down.
Many phones close background apps to save battery; SMS then arrive late at your site, or not at all. Use the app's Open battery settings button to exclude the app from battery optimisation, then set the following for your phone brand. Menu names differ a little between versions.
| Phone | What to set |
|---|---|
| Xiaomi / Redmi / POCO | Settings → Apps → Manage apps → Nexora Pay Connect: Autostart on; Battery saver → No restrictions. In the recent-apps list, long-press the app and lock it. |
| vivo / iQOO | Settings → Battery → Background power consumption management: allow the app to run in the background. Settings → Apps → Autostart (or i Manager → App manager → Autostart manager): on. |
| Oppo / Realme / OnePlus | Settings → Apps → App management → Nexora Pay Connect → Battery usage: Allow background activity and Allow auto launch on. Lock the app in the recent-apps list. |
| Samsung | Settings → Apps → Nexora Pay Connect → Battery: Unrestricted. Add the app under Settings → Battery → Background usage limits → Never sleeping apps. |
যাচাইয়ে দেরি হলে পাতায় Submit transaction ID দেখায়। গ্রাহক তাঁর এসএমএসের TrxID লিখলে সেই আইডি দিয়ে মিলিয়ে দেখা হয়। একটি আইডি একবারই ব্যবহার করা যায়, আর ভুল চেষ্টার সংখ্যা সীমিত (শুরুতে ৮ বার)।
রকেটের এসএমএসে সাধারণত প্রেরকের পুরো নম্বর থাকে না, তাই নম্বর দিয়ে মেলানো যায় না। রকেটের পেমেন্টে গ্রাহককে ট্রানজেকশন আইডি দিতে হয়।
If verification takes long, the page offers Submit transaction ID. The customer enters the TrxID from their SMS and the payment is matched by that ID. An ID can be used only once, and the number of wrong attempts is limited (8 by default).
A Rocket SMS usually does not show the sender's full number, so it cannot be matched by number. For Rocket payments the customer has to enter the transaction ID.
একটি লিংক বানিয়ে ফেসবুক, হোয়াটসঅ্যাপ বা ই-মেইলে শেয়ার করুন। অঙ্ক নির্দিষ্ট রাখতে পারেন, অথবা সর্বনিম্ন-সর্বোচ্চ সীমার মধ্যে গ্রাহককে লিখতে দিতে পারেন। লিংক যেকোনো সময় বন্ধ করা যায়।
গ্রাহকের নাম ও আইটেম দিয়ে ইনভয়েস বানান; E-mail link বোতামে গ্রাহকের ই-মেইলে পেমেন্টের লিংক চলে যায়। পরিশোধ হলে ইনভয়েসের অবস্থা নিজে থেকেই বদলায়।
একই ইনস্টলেশনে একাধিক ব্যবসা চালাতে প্রতিটির জন্য আলাদা নাম, লোগো, রঙ, সাপোর্ট নম্বর, ভাষা, গেটওয়ে ও API কী রাখুন।
তারিখ ও ব্র্যান্ড ধরে মোট সংগ্রহ, পদ্ধতি অনুযায়ী ভাগ এবং CSV এক্সপোর্ট। গ্রাহকের পেমেন্টের ইতিহাস দেখুন, নোট রাখুন, প্রয়োজনে কোনো ই-মেইল বা নম্বর ব্লক করুন।
Payments পাতায় প্রতিটি পেমেন্টের পূর্ণ ইতিহাস থাকে। সেখান থেকে হাতে সম্পন্ন (কারণ লিখে), বাতিল বা রিফান্ড হিসেবে চিহ্নিত করা যায়। রিফান্ড হিসেবে চিহ্নিত করা শুধু রেকর্ড বদলায়; টাকা ফেরত আপনাকেই নিজের মোবাইল ব্যাংকিং অ্যাপ থেকে পাঠাতে হবে।
Create a link and share it on Facebook, WhatsApp or by e-mail. The amount can be fixed, or the customer can enter one between a minimum and a maximum. A link can be switched off at any time.
Create an invoice with the customer's name and the items; the E-mail link button sends the payment link to the customer. When it is paid the invoice status changes by itself.
To run several businesses from one installation, give each its own name, logo, colour, support number, language, gateways and API keys.
Totals by date and brand, a split by method and CSV export. See a customer's payment history, keep notes and, when needed, block an e-mail address or number.
The Payments screen keeps the full history of every payment. From there you can complete a payment by hand (with a reason), cancel it or mark it as refunded. Marking as refunded only changes the record; you send the money back yourself from your mobile-banking app.
অন্য সাইট, মোবাইল অ্যাপ বা নিজের কোড থেকে পেমেন্ট নিতে API ব্যবহার করুন। কী তৈরি হয় Nexora Pay → Developers → API Keys থেকে; পূর্ণ উদাহরণ আছে Developers → Integrations & Docs-এ।
| কাজ | অনুরোধ | ফলাফল |
|---|---|---|
| পেমেন্ট তৈরি | POST /wp-json/nfpay/v1/checkoutহেডার X-NFP-API-KEY; বডিতে full_name, email, amount, metadata, redirect_url, cancel_url, webhook_url | payment_url ও invoice_id |
| পেমেন্ট যাচাই | POST /wp-json/nfpay/v1/verifyবডিতে invoice_id | পেমেন্টের অবস্থা (COMPLETED, PENDING ইত্যাদি) |
webhook_url-এ একটি JSON POST যায়। হেডারে X-NFP-Timestamp ও X-NFP-Signature থাকে (ওয়েবহুক সিক্রেট দিয়ে HMAC-SHA256)। ব্যর্থ হলে কয়েকবার পুনরায় চেষ্টা করা হয়।/verify দিয়ে অবস্থা নিশ্চিত করুন।Use the API to take payments from another site, a mobile app or your own code. Keys are created under Nexora Pay → Developers → API Keys; full examples are under Developers → Integrations & Docs.
| Task | Request | Result |
|---|---|---|
| Create a payment | POST /wp-json/nfpay/v1/checkoutheader X-NFP-API-KEY; body full_name, email, amount, metadata, redirect_url, cancel_url, webhook_url | payment_url and invoice_id |
| Verify a payment | POST /wp-json/nfpay/v1/verifybody invoice_id | The payment status (COMPLETED, PENDING and so on) |
webhook_url. It carries the headers X-NFP-Timestamp and X-NFP-Signature (HMAC-SHA256 with the webhook secret). A failed delivery is retried a few times./verify before you deliver goods or services.মোবাইল ব্যাংকিংয়ের পাশাপাশি কার্ড (Visa, Mastercard, Amex), PayPal আর দেশি অনলাইন গেটওয়েও একই পেমেন্ট পেজে দেখানো যায়। কার্ডের নম্বর আপনার সাইটে কখনো আসে না: গ্রাহক প্রোভাইডারের নিজের নিরাপদ পেজে পেমেন্ট করেন, তারপর আপনার সাইটে ফিরে আসেন।
| Provider | যা নেয় | কোথা থেকে কী পাবেন | কোন মুদ্রায় চার্জ |
|---|---|---|---|
| Card (Stripe) | Visa, Mastercard, Amex ও আন্তর্জাতিক কার্ড | Stripe Dashboard → Developers → API keys থেকে Secret key (sk_test_… বা sk_live_…)। Client ID লাগে না। | সাইটের মুদ্রা, অথবা অন্য মুদ্রা + রেট |
| PayPal | PayPal ব্যালান্স ও কার্ড | developer.paypal.com → Apps & Credentials → একটি App বানিয়ে Client ID ও Secret | USD (PayPal BDT নেয় না), সাথে রেট |
| SSLCommerz | দেশি কার্ড, মোবাইল ব্যাংকিং, ইন্টারনেট ব্যাংকিং | SSLCommerz থেকে দেওয়া Store ID ও Store Password (স্যান্ডবক্সের জন্য আলাদা) | সবসময় BDT |
| aamarPay | দেশি কার্ড, মোবাইল ব্যাংকিং | aamarPay থেকে দেওয়া Store ID ও Signature Key | সবসময় BDT |
Card (Stripe), PayPal, SSLCommerz বা aamarPay বেছে নিন। অ্যাকাউন্টের ধরন নিজে থেকেই "Online gateway" হয়ে যায়।Sandbox (test), আসল টাকার জন্য Live। Stripe-এ মোড কী দেখে নিজেই বোঝা যায়।USD) আর Exchange rate-এ ১ ইউনিটে কত টাকা (যেমন 122) লিখুন।https://আপনার-সাইট/?nfpay_online=…)। কোনো প্রোভাইডার "allowed return URL" চাইলে সাইটের ডোমেইন দিন।Next to mobile banking, the same payment page can offer cards (Visa, Mastercard, Amex), PayPal and local online gateways. Card numbers never touch your site: the customer pays on the provider's own secure page and comes back to your site afterwards.
| Provider | Accepts | Where to get the credentials | Charged in |
|---|---|---|---|
| Card (Stripe) | Visa, Mastercard, Amex and international cards | Stripe Dashboard → Developers → API keys: the Secret key (sk_test_… or sk_live_…). No Client ID needed. | The site currency, or another currency with a rate |
| PayPal | PayPal balance and cards | developer.paypal.com → Apps & Credentials → create an app: Client ID and Secret | USD (PayPal does not take BDT), with a rate |
| SSLCommerz | Local cards, mobile banking, internet banking | The Store ID and Store Password SSLCommerz gives you (separate ones for sandbox) | Always BDT |
| aamarPay | Local cards, mobile banking | The Store ID and Signature Key aamarPay gives you | Always BDT |
Card (Stripe), PayPal, SSLCommerz or aamarPay under Provider. The account type switches to "Online gateway" by itself.Sandbox (test) for testing, Live for real money. For Stripe the mode is read from the key.USD) and how many Taka make 1 unit under Exchange rate (for example 122).https://your-site/?nfpay_online=…). If a provider asks for an allowed return URL, give your site's domain.যে মাধ্যমের এসএমএস বা API নেই, সেটি Bank transfer ধরনের গেটওয়ে হিসেবে যোগ করুন। গ্রাহক টাকা পাঠিয়ে রেফারেন্স নম্বর লেখেন বা জমার স্লিপ দেন, আর আপনি দেখে অনুমোদন করেন।
Bank transfer দিন।মোবাইল ব্যাংকিং যাচাই হয় গ্রাহকের নম্বর মিলিয়ে। ব্যাংকের SMS-এ সাধারণত পাঠানোর নম্বর থাকে না, তাই ব্যাংক জমা মেলানো হয় অঙ্ক, আপনার অ্যাকাউন্টের শেষ সংখ্যা আর সময় দিয়ে:
16216 থেকে)।16216)।163***8660), শেষের সংখ্যা মিলিয়ে নেওয়া হয়। DBBL-এ এটি বাধ্যতামূলক, কারণ Rocket-এর SMS-ও 16216 থেকে আসে; অ্যাকাউন্ট নম্বর মিললে তবেই SMS-টি ব্যাংক জমা হিসেবে ধরা হয়, না মিললে Rocket পেমেন্ট হিসেবে।9 দিন। তাহলে একই সময়ে দুজন একই দামের অর্ডার দিলে দ্বিতীয়জনকে ১-৯ টাকা বেশি বা আলাদা অঙ্ক দেখানো হয় (যেমন ৬,৮৪০ আর ৬,৮৪৩), ফলে কোন জমা কার তা নিশ্চিতভাবে বোঝা যায়। ১-এর কম দিলে পয়সায় আলাদা হয়, যা ক্যাশ জমায় অসুবিধা।Payoneer-এর আলাদা API সংযোগ নেই; একে হাতে যাচাইয়ের মাধ্যম হিসেবে চালান:
Bank transfer, Display name = Payoneer, আর Payoneer-এর লোগো দিন।A method with no SMS or API is added as a Bank transfer type gateway. The customer sends the money and enters a reference number or uploads a deposit slip, and you check and approve it.
Bank transfer.Mobile banking is verified by the customer's number. A bank SMS usually does not name the payer, so a bank deposit is matched by the amount, the end of your account number and the time:
16216).16216).163***8660), the trailing digits are compared. This is required for DBBL, because Rocket SMS also come from 16216: only an SMS naming your account counts as a bank deposit, anything else is treated as Rocket.9 as the Largest offset. When two customers order the same price at the same time, the second is shown a total a few Taka different (for example 6,840 and 6,843), so each deposit can be told apart. Below 1 the offset is in paisa, which is awkward for cash deposits.Payoneer has no API connection here; run it as a hand-checked method:
Bank transfer, Display name = Payoneer, with the Payoneer logo.WooCommerce ছাড়াই সার্ভিস বিজনেস, অর্ডার ফর্ম, ভর্তি বা বুকিং ফর্ম থেকে টাকা নিতে পারবেন। ফর্ম সাবমিট হলেই গ্রাহক সরাসরি Nexora Pay-এর পেমেন্ট পেজে চলে যান। সমর্থিত: Contact Form 7, WPForms, Elementor Pro Form, Gravity Forms, Fluent Forms।
[contact-form-7 id="…"]-এর id (সংখ্যা বা ৭ অক্ষরের কোড, দুটোই চলে)।Fixed amount দিয়ে Fixed amount (BDT) লিখুন। প্যাকেজ বা দাম ফর্ম থেকে এলে From a form field বেছে Amount field-এ সেই ফিল্ডের নাম/ID/লেবেল দিন। "1,500 Tk" বা বাংলা সংখ্যাও পড়া যায়।your-name, your-email, your-phone)।nfp_form_payment_created আর nfp_payment_completed হুক দিয়ে নিজের কাজ (ইমেইল, CRM) যোগ করতে পারেন।যেকোনো পেজ, পোস্ট বা Elementor-এর Shortcode widget-এ বসান:
[nexora_pay_button amount="500" label="Pay 500 Tk" description="Consultation fee" success_url="https://your-site/thanks/"]
অঙ্কটি ডিজিটাল সিগনেচার দিয়ে সুরক্ষিত, তাই ভিজিটর ব্রাউজারে বদলে কম টাকা দিতে পারেন না। brand আর class অ্যাট্রিবিউটও দেওয়া যায়।
Take money from service, order, admission or booking forms without WooCommerce. As soon as the form is submitted the customer goes straight to the Nexora Pay payment page. Supported: Contact Form 7, WPForms, Elementor Pro Form, Gravity Forms, Fluent Forms.
[contact-form-7 id="…"] (the number or the 7-character code both work).Fixed amount and fill Fixed amount (BDT). If the price or package comes from the form, choose From a form field and put that field's name/ID/label in Amount field. "1,500 Tk" and Bangla digits are read too.your-name, your-email, your-phone in CF7).nfp_form_payment_created and nfp_payment_completed.Place it on any page, post or Elementor Shortcode widget:
[nexora_pay_button amount="500" label="Pay 500 Tk" description="Consultation fee" success_url="https://your-site/thanks/"]
The amount is digitally signed, so a visitor cannot lower it in the browser. brand and class attributes are available too.
https://আপনার-সাইট/?nfpay_link=…।লিংকে নাম, ইমেইল, ফোন আগেই বসিয়ে দেওয়া যায়: ?nfpay_link=…&name=Rahim&email=a@b.com&phone=017…। খোলা অঙ্কের লিংকে &amount=1500-ও চলে। Facebook, WhatsApp, ইমেইল বা SMS-এ লিংকটি পাঠিয়ে দিলেই হয়।
invitee_full_name, invitee_email) নিজে থেকে পেমেন্ট পেজে বসে যায়।এই প্লাগইনগুলো WooCommerce দিয়ে পেমেন্ট নিতে পারে। প্লাগইনের সেটিংসে WooCommerce payment চালু করুন; WooCommerce-এ Nexora Pay গেটওয়ে (WooCommerce → Settings → Payments → Nexora Pay) চালু থাকলে বুকিংয়ের চেকআউটে bKash, Nagad, কার্ড সবই দেখা যাবে। WooCommerce না থাকলে বুকিং কনফার্মেশনে উপরের পেমেন্ট লিংক ব্যবহার করুন।
https://your-site/?nfpay_link=….Name, e-mail and phone can be filled in through the link: ?nfpay_link=…&name=Rahim&email=a@b.com&phone=017…. Open-amount links also accept &amount=1500. Send the link on Facebook, WhatsApp, e-mail or SMS.
invitee_full_name, invitee_email) are then filled in on the payment page.These plugins can take payment through WooCommerce. Turn on their WooCommerce payment option; with the Nexora Pay gateway on in WooCommerce (WooCommerce → Settings → Payments → Nexora Pay) the booking checkout offers bKash, Nagad, cards and the rest. Without WooCommerce, use a payment link on the booking confirmation.
Shopify স্টোরের অর্ডারের টাকা আপনার নিজের বিকাশ / নগদ / রকেট নম্বরে নেওয়া যায়, SMS দিয়ে নিজে থেকে যাচাই হয়, আর পেমেন্ট শেষে Shopify-তে অর্ডার নিজে থেকেই Paid হয়। WordPress লাগবে না: শুধু Shopify থাকলে Nexora Pay Standalone যেকোনো PHP হোস্টিংয়ের একটি সাবডোমেইনে বসিয়ে নিন।
Shopify নিজের ভেতরে বাইরের কোনো কোড চালাতে দেয় না, তাই Nexora Pay চলে আপনার নিজের হোস্টিংয়ে (যেমন pay.your-domain.com)। এটাই আপনার "পেমেন্ট সার্ভার": আপনার নম্বর রাখে, ফোনের অ্যাপের সাথে কথা বলে, পেমেন্ট পেজ দেখায়। Shopify আর Nexora Pay জোড়া থাকে একটি Shopify অ্যাপের Client ID / Client secret দিয়ে।
| জিনিস | বিস্তারিত |
|---|---|
| Shopify স্টোর | যেকোনো পেইড প্ল্যানে থাকতে হবে। ট্রায়াল / ডেভেলপমেন্ট স্টোরে Shopify ম্যানুয়াল পেমেন্টের অর্ডার নিতে দেয় না ("You've reached the limit for development store orders…")। স্টোরের মুদ্রা BDT। |
| Nexora Pay লাইসেন্স | License key + Secret key (কেনার পর ইমেইল ও থ্যাংক-ইউ পেজে পাবেন)। |
| পেমেন্ট সার্ভার | WordPress সাইট থাকলে Nexora Forward Pay প্লাগইন। না থাকলে Nexora Pay Standalone: PHP 7.4+ ও MySQL/MariaDB সহ যেকোনো হোস্টিং (Hostinger, cPanel ইত্যাদি), HTTPS (SSL) চালু। |
| অ্যান্ড্রয়েড ফোন | যে ফোনে পেমেন্ট নেওয়ার SIM আছে, তাতে Nexora Pay অ্যাপ (APK)। |
উদাহরণ Hostinger-এর; cPanel-এও নাম প্রায় একই।
pay.your-domain.com → সাজেশনটি বেছে Next। (cPanel: Domains → Create a new domain।)nexora-pay-standalone-x.zip দিন → Create website। Hostinger zip খুলে ফাইলগুলো সাবডোমেইনের মূল ফোল্ডারে রাখে, তাই ঠিকানা হয় https://pay.your-domain.com। (cPanel-এ File Manager দিয়ে zip আপলোড করে Extract করলে ঠিকানা হয় https://pay.your-domain.com/nexora-pay।)nxpay), একটি শক্ত Password দিয়ে Create। পুরো নাম তালিকায় দেখাবে, যেমন u123456789_nxpay; এটাই পরের ধাপে লাগবে। পাসওয়ার্ড লিখে রাখুন।https://pay.your-domain.com/install.php খুলুন। Database host localhost, Database name ও Database user (পুরো নাম, u123456789_nxpay), Database password, Business name, Time zone Asia/Dhaka, অ্যাডমিন Username, E-mail ও Password (৮+ অক্ষর) দিয়ে Install Nexora Pay চাপুন। "Installed" দেখালে Open the admin panel।https://pay.your-domain.com/admin.php-এ অ্যাডমিন ইউজারনেম ও পাসওয়ার্ড দিয়ে ঢুকুন।01XXXXXXXXX), Display name → Add gateway।install.php মুছে দিন, আর Standalone পেজে SMTP ইমেইল ও ৫ মিনিটের cron চালু করুন।bKash / Nagad / Rocket (Nexora Pay)। নামে Nexora শব্দটি থাকতেই হবে (ইমেইলের বাটন এই শব্দ দেখে দেখানো হয়)।১ জানুয়ারি ২০২৬ থেকে Shopify-তে পুরনো "Develop apps" দিয়ে নতুন অ্যাপ বানানো যায় না; এখন Dev Dashboard ব্যবহার করতে হয়।
dev.shopify.com/dashboard, একই Shopify লগইনে)।Nexora Pay।https://pay.your-domain.com)। Embed app in Shopify admin-এর টিক তুলে দিন।read_orders,write_orders।admin.php?page=nexora-pay&tab=forms&sub=shopify)।your-store.myshopify.com (Shopify Settings-এ স্টোরের নামের নিচে দেখায়)।<p>{{ email_body }}</p>SECRET-এর জায়গায় আপনার অ্যাডমিনে আসল ৩২ অক্ষরের কী থাকে।{% comment %} Nexora Pay - Pay now button {% endcomment %}
{% assign nx_gw = payment_gateway_names | join: "," %}{% for t in transactions %}{% assign nx_gw = nx_gw | append: "," | append: t.gateway %}{% endfor %}
{% assign nx_id = order.id | default: id %}
{% if nx_gw contains "Nexora" and financial_status != "paid" %}
<p style="margin:18px 0;"><a href="https://pay.your-domain.com/?nfpay_shopify={{ nx_id }}&k={{ nx_id | append: "|SECRET" | md5 }}" style="display:inline-block;background:#E2136E;color:#fff;padding:12px 22px;border-radius:8px;text-decoration:none;font-weight:bold;">Pay now - bKash / Nagad / Rocket</a></p>
{% endif %}
"Nexora" শব্দটি ধাপ ২-এর পেমেন্ট মেথডের নামে থাকতে হবে; অন্য পেমেন্ট মেথডের অর্ডারে বাটন দেখাবে না।k= অংশে অর্ডার নম্বর আর আপনার গোপন কী মিলিয়ে বানানো হ্যাশ থাকে। কী শুধু আপনার সার্ভারে থাকে, তাই অন্যের অর্ডার নম্বর বসিয়ে কেউ পেমেন্ট পেজ খুলতে পারে না। কাস্টমারের ইমেইল বা ফোন লাগে না, তাই Shopify-র "protected customer data" অনুমতি ছাড়াই চলে।nx_mail আছে) বসানো থাকলে সেটা মুছে নতুনটা দিন। পুরনো লিংকগুলোও কিছুদিন চলবে।| যা দেখছেন | সমাধান |
|---|---|
| "You've reached the limit for development store orders…" | স্টোর ট্রায়ালে আছে। Shopify-তে একটি প্ল্যান চালু করুন। |
| Save and test-এ সংযোগ হয় না | Shop domain-এ .myshopify.com ঠিকানা দিন (নিজের ডোমেইন নয়); অ্যাপটি Release ও Install হয়েছে কিনা দেখুন; Client secret আবার কপি করে পেস্ট করুন। |
| ইমেইলে Pay now বাটন নেই | পেমেন্ট মেথডের নামে Nexora আছে কিনা, আর কোডটি <p>{{ email_body }}</p>-এর পরে বসিয়ে Save করেছেন কিনা দেখুন। |
| "The order was not found." | লিংকের ঠিকানা ভুল Nexora Pay-এর দিকে যাচ্ছে, বা Shopify সংযোগ বন্ধ। ধাপ ৪ ও ধাপ ৫-এর ঠিকানা মিলিয়ে দেখুন। |
| "This payment link is not valid for the order." | ইমেইলের কোডটা পুরনো বা হাতে বদলানো। Integrations → Shopify থেকে কোড আবার কপি করে বসান। |
| "The order was not found." (নতুন অ্যাপে) | Nexora Pay 1.11.7 বা নতুন ভার্সনে আপডেট করুন; আগের ভার্সন কাস্টমারের তথ্যও চাইত, যা Shopify Dev Dashboard অ্যাপকে দেয় না। |
| মুদ্রা মেলে না | Shopify স্টোর আর Nexora Pay দুটোর মুদ্রা BDT করুন। |
| পেমেন্ট হলো কিন্তু Shopify-তে Paid হলো না | Nexora Pay-এর পেমেন্টের লগে "Shopify did not mark the order as paid" দেখুন; Scopes-এ write_orders আছে কিনা দেখুন। |
Orders from your Shopify store can be paid to your own bKash / Nagad / Rocket numbers, checked automatically from the SMS, and turn Paid in Shopify by themselves. No WordPress needed: with only a Shopify store, install Nexora Pay Standalone on a subdomain of any PHP hosting.
Shopify does not run outside code, so Nexora Pay runs on your own hosting (for example pay.your-domain.com). That is your "payment server": it holds your numbers, talks to the phone app and shows the payment page. Shopify and Nexora Pay are linked by a Shopify app's Client ID / Client secret.
| Item | Details |
|---|---|
| Shopify store | On any paid plan. Trial / development stores cannot take manual-payment orders ("You've reached the limit for development store orders…"). Store currency BDT. |
| Nexora Pay licence | License key + Secret key (in your purchase e-mail and on the thank-you page). |
| Payment server | A WordPress site: the Nexora Forward Pay plugin. No WordPress: Nexora Pay Standalone on any hosting with PHP 7.4+ and MySQL/MariaDB (Hostinger, cPanel …), HTTPS (SSL) on. |
| Android phone | The phone with the receiving SIM, running the Nexora Pay app (APK). |
The example uses Hostinger; cPanel names are almost the same.
pay.your-domain.com → pick the suggestion → Next. (cPanel: Domains → Create a new domain.)nexora-pay-standalone-x.zip → Create website. Hostinger unpacks the files into the subdomain's root, so the address is https://pay.your-domain.com. (With cPanel's File Manager upload + Extract, the address is https://pay.your-domain.com/nexora-pay.)nxpay), a strong Password → Create. The list shows the full names, such as u123456789_nxpay; you need those next. Note the password.https://pay.your-domain.com/install.php. Enter Database host localhost, the full Database name and Database user (u123456789_nxpay), the Database password, Business name, Time zone Asia/Dhaka, an admin Username, E-mail and Password (8+ characters) → Install Nexora Pay. On "Installed" press Open the admin panel.https://pay.your-domain.com/admin.php.01XXXXXXXXX), Display name → Add gateway.install.php from the server, and set up SMTP e-mail and the 5-minute cron on the Standalone page.bKash / Nagad / Rocket (Nexora Pay). The word Nexora must be in the name (the e-mail button looks for it).Since 1 January 2026 Shopify no longer allows new "Develop apps" apps; use the Dev Dashboard.
dev.shopify.com/dashboard with the same Shopify login).Nexora Pay.https://pay.your-domain.com). Untick Embed app in Shopify admin.read_orders,write_orders.admin.php?page=nexora-pay&tab=forms&sub=shopify).your-store.myshopify.com (shown under the store name in Shopify Settings).<p>{{ email_body }}</p>SECRET.{% comment %} Nexora Pay - Pay now button {% endcomment %}
{% assign nx_gw = payment_gateway_names | join: "," %}{% for t in transactions %}{% assign nx_gw = nx_gw | append: "," | append: t.gateway %}{% endfor %}
{% assign nx_id = order.id | default: id %}
{% if nx_gw contains "Nexora" and financial_status != "paid" %}
<p style="margin:18px 0;"><a href="https://pay.your-domain.com/?nfpay_shopify={{ nx_id }}&k={{ nx_id | append: "|SECRET" | md5 }}" style="display:inline-block;background:#E2136E;color:#fff;padding:12px 22px;border-radius:8px;text-decoration:none;font-weight:bold;">Pay now - bKash / Nagad / Rocket</a></p>
{% endif %}
"Nexora" must be in the step 2 method name; orders paid another way get no button.k= part is a hash of the order number and your secret key, which stays on your server, so nobody can open the payment page for someone else's order. It needs no customer e-mail or phone, so it works without Shopify's "protected customer data" permission.nx_mail) is in place, replace it with the new one. Old links keep working for a while.| You see | Fix |
|---|---|
| "You've reached the limit for development store orders…" | The store is on a trial. Choose a Shopify plan. |
| Save and test does not connect | Use the .myshopify.com address (not your own domain); check the app is Released and Installed; copy the Client secret again. |
| No Pay now button in the e-mail | Check the method name contains Nexora and the code sits after <p>{{ email_body }}</p> and was saved. |
| "The order was not found." | The link points to the wrong Nexora Pay, or the Shopify connection is off. Compare the addresses in steps 4 and 5. |
| "This payment link is not valid for the order." | The e-mail code is old or was edited. Copy it again from Integrations → Shopify. |
| "The order was not found." (new apps) | Update Nexora Pay to 1.11.7 or newer; older versions also asked for customer data, which Shopify does not give Dev Dashboard apps. |
| Currency mismatch | Set both the Shopify store and Nexora Pay to BDT. |
| Paid but not Paid in Shopify | Look for "Shopify did not mark the order as paid" in the payment's log; check the write_orders scope. |
nfp_live_…) আর Webhook secret (whsec_…) এখনই কপি করে রাখুন, পরে আর দেখা যায় না।whmcs-nexorapay.zip নামান।modules/gateways/nexorapay.php আর modules/gateways/callback/nexorapay.php।এরপর ইনভয়েসের Pay now চাপলে গ্রাহক Nexora Pay পেমেন্ট পেজে যান; পেমেন্ট নিশ্চিত হলে WHMCS-এ ইনভয়েস নিজে থেকেই Paid হয়। Callback ঠিকানা (…/modules/gateways/callback/nexorapay.php) মডিউল নিজেই পাঠায়, WordPress-এ আলাদা করে বসাতে হয় না।
nfp_live_…) and Webhook secret (whsec_…) now; they are not shown again.whmcs-nexorapay.zip.modules/gateways/nexorapay.php and modules/gateways/callback/nexorapay.php.From then on, Pay now on an invoice takes the customer to the Nexora Pay payment page, and a confirmed payment marks the invoice Paid in WHMCS. The module sends its own callback address (…/modules/gateways/callback/nexorapay.php), so nothing has to be entered in WordPress.
nexorapay.php নামিয়ে রাখুন amember/application/default/plugins/payment/nexorapay.php পথে।X-NFP-Signature) আর অঙ্ক মিলিয়ে তবেই অ্যাক্সেস চালু হয়।nexorapay.php from Integrations → Other platforms and put it at amember/application/default/plugins/payment/nexorapay.php.X-NFP-Signature) and the amount check out.আপনার সাইট WordPress না হলেও Nexora Pay চলবে। Nexora Pay Standalone হলো একই Nexora Forward Pay, শুধু WordPress ছাড়া: নিজের হোস্টিংয়ে একটি ফোল্ডারে বসে (self-hosted), নিজের ডাটাবেস, নিজের অ্যাডমিন প্যানেল। একই লাইসেন্স, একই অ্যান্ড্রয়েড অ্যাপ (APK), একই পেমেন্ট পেজ, একই API। কাস্টম PHP সাইট, Laravel, CodeIgniter, সাধারণ PHP স্ক্রিপ্ট, Shopify, WHMCS, aMember সবখানে ব্যবহার করা যায়।
| WordPress প্লাগইন | Standalone | |
|---|---|---|
| কোথায় চলে | আপনার WordPress সাইটে | যেকোনো PHP হোস্টিংয়ের একটি ফোল্ডারে (যেমন your-site.com/pay) |
| ফাইল | nexora-forward-pay-x.zip | nexora-pay-standalone-x.zip |
| লাইসেন্স, APK, পেমেন্ট পেজ, অ্যাডমিন প্যানেল | একই | |
| WooCommerce অর্ডার | সরাসরি | নেই (আপনার সাইট SDK/API দিয়ে যুক্ত হয়) |
| আপডেট | Plugins পেজে এক ক্লিকে | License → Updates-এ এক ক্লিকে |
public_html-এ ZIP আপলোড করে Extract করুন। nexora-pay ফোল্ডারের নাম চাইলে pay রাখুন; ঠিকানা হবে https://your-site.com/pay। আলাদা সাবডোমেইনেও (যেমন pay.your-site.com) রাখা যায়।https://your-site.com/pay/install.php খুলে ডাটাবেসের তথ্য, ব্যবসার নাম আর অ্যাডমিন ইউজারনেম/পাসওয়ার্ড দিন → Install।https://your-site.com/pay/admin.php-এ লগইন করুন। WordPress-এর মতোই পুরো Nexora Pay প্যানেল দেখবেন।php /home/USER/public_html/pay/cron.php।install.php মুছে দিন।config.php-তে Standalone ফোল্ডারের ঠিকানা (যেমন https://your-site.com/pay), Key ও Secret বসান।isPaid() দিয়ে নিশ্চিত হয়ে অর্ডার Paid করুন (নিচের "PHP SDK" অংশে কোড আছে)।https://your-site.com/pay/api/nfpay/v1)।/checkout ও /verify-এ POST করুন, হেডারে X-NFP-API-KEY।| অ্যাডমিন প্যানেল | https://your-site.com/pay/admin.php |
| API (অ্যাপ ও আপনার সাইট) | https://your-site.com/pay/api/nfpay/v1 |
| পেমেন্ট পেজ | https://your-site.com/pay/?nfpay=… |
| Cron | php …/pay/cron.php অথবা Standalone-এ দেওয়া cron URL |
nfp-backup-… ফোল্ডারে থাকে। ডাটা ও সেটিংস যা ছিল তাই থাকে।config.php-তে ডাটাবেসের পাসওয়ার্ড ও NFP_SA_SALT থাকে (সংরক্ষিত গোপন তথ্য এটি দিয়ে এনক্রিপ্ট হয়)। ব্যাকআপ রাখুন, SALT কখনো বদলাবেন না।php reset-password.php ইউজারনেম নতুনপাসওয়ার্ড।.htaccess কাজ করে। nginx হলে ZIP-এর nginx.conf.sample দেখুন।Nexora Pay works even when your site is not WordPress. Nexora Pay Standalone is the same Nexora Forward Pay without WordPress: it runs in one folder on your own hosting (self-hosted), with its own database and its own admin panel. Same licence, same Android app (APK), same payment page, same API. Use it with a custom PHP site, Laravel, CodeIgniter, a plain PHP script, Shopify, WHMCS or aMember.
| WordPress plugin | Standalone | |
|---|---|---|
| Runs | on your WordPress site | in a folder on any PHP hosting (e.g. your-site.com/pay) |
| File | nexora-forward-pay-x.zip | nexora-pay-standalone-x.zip |
| Licence, APK, payment page, admin panel | the same | |
| WooCommerce orders | built in | no (your site connects through the SDK / API) |
| Updates | one click on the Plugins screen | one click under License → Updates |
public_html and extract it. Rename the nexora-pay folder to pay if you like; the address becomes https://your-site.com/pay. A sub-domain (e.g. pay.your-site.com) works too.https://your-site.com/pay/install.php, enter the database details, your business name and an admin username / password → Install.https://your-site.com/pay/admin.php. You get the full Nexora Pay panel, as in WordPress.php /home/USER/public_html/pay/cron.php.install.php from the server.config.php with the Standalone folder address (e.g. https://your-site.com/pay), the key and the secret.isPaid() before marking the order paid (code in "PHP SDK" below).https://your-site.com/pay/api/nfpay/v1)./checkout and /verify on the same API address with the header X-NFP-API-KEY.| Admin panel | https://your-site.com/pay/admin.php |
| API (the app and your site) | https://your-site.com/pay/api/nfpay/v1 |
| Payment page | https://your-site.com/pay/?nfpay=… |
| Cron | php …/pay/cron.php or the cron URL shown under Standalone |
nfp-backup-… folder. Data and settings stay as they are.config.php holds the database password and NFP_SA_SALT (saved secrets are encrypted with it). Back it up and never change the salt.php reset-password.php username newpassword..htaccess. On nginx see nginx.conf.sample in the ZIP.Laravel, CodeIgniter, নিজের PHP সাইট বা অন্য যেকোনো প্ল্যাটফর্ম থেকে পেমেন্ট নিতে NexoraPay.php (PHP 7.4+, কোনো ডিপেন্ডেন্সি নেই) ব্যবহার করুন। ফাইলটি পাবেন Integrations → Other platforms-এ। অন্য ভাষায় (Node, Python, মোবাইল অ্যাপ) সরাসরি REST API ডাকুন, উপরের "API ও ওয়েবহুক" অংশ দেখুন।
require 'NexoraPay.php';
$pay = new NexoraPay('https://your-site.com', 'nfp_live_…', 'whsec_…'); // WordPress site, or the Standalone folder (https://your-site.com/pay)
// ১. পেমেন্ট তৈরি করে গ্রাহককে পাঠান
$res = $pay->create([
'amount' => 1500, 'full_name' => 'Rahim', 'email' => 'rahim@example.com', 'phone' => '017…',
'description' => 'Order #1001', 'metadata' => ['order_id' => 1001],
'redirect_url' => 'https://shop.example.com/paid', 'cancel_url' => 'https://shop.example.com/cart',
'webhook_url' => 'https://shop.example.com/nexora-webhook.php',
]);
header('Location: ' . $res['payment_url']);
// ২. webhook ফাইলে
$body = file_get_contents('php://input');
if ($pay->validWebhook($body, $_SERVER['HTTP_X_NFP_TIMESTAMP'], $_SERVER['HTTP_X_NFP_SIGNATURE'])) {
$data = json_decode($body, true);
$p = $pay->verify($data['invoice_id']);
if ($p['status'] === 'COMPLETED') { /* অর্ডার Paid করুন */ }
}
redirect_url-এ ফেরেন, সাথে ?invoice_id=…। শুধু ফেরত আসা দেখে পণ্য দেবেন না; verify() দিয়ে COMPLETED নিশ্চিত করুন।To take payments from Laravel, CodeIgniter, your own PHP site or any other platform, use NexoraPay.php (PHP 7.4+, no dependencies), found under Integrations → Other platforms. From other languages (Node, Python, mobile apps) call the REST API directly; see "API and webhooks" above.
require 'NexoraPay.php';
$pay = new NexoraPay('https://your-site.com', 'nfp_live_…', 'whsec_…'); // WordPress site, or the Standalone folder (https://your-site.com/pay)
// 1. Create a payment and send the customer to it
$res = $pay->create([
'amount' => 1500, 'full_name' => 'Rahim', 'email' => 'rahim@example.com', 'phone' => '017…',
'description' => 'Order #1001', 'metadata' => ['order_id' => 1001],
'redirect_url' => 'https://shop.example.com/paid', 'cancel_url' => 'https://shop.example.com/cart',
'webhook_url' => 'https://shop.example.com/nexora-webhook.php',
]);
header('Location: ' . $res['payment_url']);
// 2. In the webhook file
$body = file_get_contents('php://input');
if ($pay->validWebhook($body, $_SERVER['HTTP_X_NFP_TIMESTAMP'], $_SERVER['HTTP_X_NFP_SIGNATURE'])) {
$data = json_decode($body, true);
$p = $pay->verify($data['invoice_id']);
if ($p['status'] === 'COMPLETED') { /* mark the order paid */ }
}
redirect_url with ?invoice_id=…. Never deliver on the return alone; confirm COMPLETED with verify().bKash, NAGAD, 16216 (রকেট), upay।কোথায় যায়: সব তথ্য যায় শুধু আপনার নিজের সাইটে, HTTPS-এ, ফোনের কী দিয়ে স্বাক্ষর করে। অ্যাপ Nexora Forward বা অন্য কোনো তৃতীয় পক্ষের সার্ভারে কিছুই পাঠায় না।
বিস্তারিত: প্রাইভেসি পলিসি ও শর্তাবলি।
bKash, NAGAD, 16216 (Rocket), upay.Where it goes: everything goes only to your own site, over HTTPS, signed with the phone's key. The app sends nothing to Nexora Forward or to any other third-party server.
Details: Privacy Policy and Terms & Conditions.
যুক্ত করার সময় ফোন নিজের ভেতরে (Android Keystore; ফোনে সুবিধা থাকলে হার্ডওয়্যার-সুরক্ষিত অংশে) একটি গোপন কী তৈরি করে। কী-টি ফোন থেকে বের করা যায় না; সাইটে থাকে শুধু এর পাবলিক অংশ। তাই সাইটের ডেটাবেজ কারও হাতে গেলেও সে আপনার ফোন সেজে বার্তা পাঠাতে পারবে না।
ফোনের প্রতিটি অনুরোধে স্বাক্ষর, সময় ও একবার-ব্যবহারযোগ্য একটি সংখ্যা থাকে। স্বাক্ষর না মিললে, সময় ৫ মিনিটের বেশি পুরোনো হলে বা একই অনুরোধ দ্বিতীয়বার এলে সাইট তা বাতিল করে।
যুক্ত করার কোড একবারই কাজ করে এবং ১০ মিনিটে শেষ হয়। সাইটে থাকে শুধু কোডের হ্যাশ।
প্রতিটি টাকা আসার এসএমএসের ব্যালান্স আগের এসএমএসের ব্যালান্সের সঙ্গে মিলিয়ে দেখা হয়। না মিললে এসএমএসটি "review"-তে আটকে থাকে এবং আপনি অনুমোদন না করা পর্যন্ত কোনো পেমেন্ট নিশ্চিত করে না। বানানো এসএমএস ধরতে এটি সাহায্য করে।
একটি ট্রানজেকশন আইডি একবারই ব্যবহার হয়। দুটি অর্ডার একই এসএমএস দাবি করলে একটিই পায়। একই নম্বর ও একই অঙ্কে দুটি পেমেন্ট অপেক্ষায় থাকলে কোনোটিই নিজে থেকে নিশ্চিত হয় না; তখন ট্রানজেকশন আইডি চাওয়া হয়।
লাইসেন্স সার্ভার আপনার ডোমেইনের জন্য স্বল্পমেয়াদি একটি স্বাক্ষরিত সার্টিফিকেট দেয়। অ্যাপ সেটি নিজে যাচাই করে; বৈধ সার্টিফিকেট না পেলে যুক্ত হয় না এবং এসএমএস ফোনেই জমা রাখে। লাইসেন্সের উত্তর ও আপডেটের তথ্যও একই রকম স্বাক্ষর দিয়ে যাচাই হয়।
When pairing, the phone creates a secret key inside itself (the Android Keystore; in hardware-protected storage where the phone has it). The key cannot be taken out of the phone; the site holds only its public half. So even someone who obtains your site's database cannot pretend to be your phone.
Each request from the phone carries a signature, a time and a number that is used once. The site rejects it when the signature does not verify, when it is more than 5 minutes old, or when the same request arrives a second time.
The pairing code works once and ends after 10 minutes. The site keeps only a hash of it.
The balance in every "money received" SMS is compared with the balance of the SMS before it. If it does not add up, the SMS is held for "review" and cannot confirm a payment until you approve it. This helps to catch made-up SMS.
A transaction ID is used only once. If two orders claim the same SMS, only one gets it. If two payments wait for the same number and the same amount, neither is confirmed automatically; the transaction ID is asked for instead.
The licence server issues a short-lived signed certificate for your domain. The app checks it itself; without a valid certificate it does not pair and keeps SMS on the phone. Licence answers and update information are verified with the same kind of signature.
এমন একটা পেমেন্টের SMS এসেছে, যার জন্য তখন কোনো অপেক্ষমাণ পেমেন্ট ছিল না। যেমন কেউ সরাসরি আপনার নম্বরে টাকা পাঠিয়েছেন, বা অন্য কাজের টাকা। Nexora Pay এটাকে "Unused" করে রেখে দেয়, মুছে না।
Nexora Pay অ্যাডমিন → Standalone পেজে আপনার সাইটের জন্য তৈরি cron লাইন দেখায় (যেমন domains/your-domain.com/public_html/pay/cron.php)। Hostinger hPanel → Advanced → Cron Jobs → Type PHP → Command-এ ওই পাথ → সময় প্রতি ৫ মিনিট (*/5 * * * *) → Save। cPanel-এ Cron Jobs-এ পুরো php /home/…/cron.php লাইনটা দিন। cron মেয়াদ শেষ হওয়া পেমেন্ট বন্ধ করা, ইমেইল আর পরিষ্কারের কাজ করে; পেমেন্ট যাচাই এর ওপর নির্ভর করে না।
"অ্যান্ড্রয়েড অ্যাপ ইনস্টল" অংশের ২ নম্বর ধাপ অনুসরণ করুন (USB/adb, অথবা ইনস্টলের সময়টুকু স্ক্যান বন্ধ রাখা)। অ্যাপ সরিয়ে দেওয়া হলে আবার ইনস্টল করে নতুন QR কোড দিয়ে যুক্ত করুন; সাইটের পুরোনো ডিভাইসটি Remove করে দিন।
কম পাঠালে পেমেন্ট নিশ্চিত হয় না। বেশি পাঠালে এবং গ্রাহক ট্রানজেকশন আইডি দিলে (সেটিংসে "হুবহু" বাধ্যতামূলক না থাকলে) পেমেন্ট নিশ্চিত হয়। বাকি টাকা নেওয়া, বাড়তি টাকা ফেরত দেওয়া বা হাতে সম্পন্ন করার সিদ্ধান্ত আপনার; Payments পাতা থেকে কারণ লিখে করতে পারবেন।
ব্যালান্স আগের এসএমএসের সঙ্গে মেলেনি, অথবা এসএমএসের সময় গ্রহণযোগ্য সীমার বাইরে ছিল। এটি তখনও হতে পারে, যখন মাঝের কোনো এসএমএস ফোনে আসেনি বা দেরিতে এসেছে। Nexora Pay → SMS & Devices → Balance check-এ গিয়ে নিজের মোবাইল ব্যাংকিং অ্যাপে লেনদেনটি সত্যিই আছে কি না দেখুন; থাকলে Approve চাপুন, না থাকলে Trash চাপুন।
লাইসেন্স সক্রিয় আছে কি না দেখুন, তারপর Nexora Pay → License → Updates → Check now চাপুন। "could not be verified" দেখালে সার্ভারের তারিখ-সময় ঠিক আছে কি না দেখুন; না মিটলে সাপোর্টে লিখুন।
A payment SMS arrived while no payment was waiting for it, for example someone sent money to your number directly, or for something else. Nexora Pay keeps it as "Unused" instead of throwing it away.
Nexora Pay admin → Standalone shows the cron line made for your site (for example domains/your-domain.com/public_html/pay/cron.php). Hostinger hPanel → Advanced → Cron Jobs → Type PHP → that path as the command → every 5 minutes (*/5 * * * *) → Save. On cPanel use the full php /home/…/cron.php line under Cron Jobs. The cron expires old payments, sends e-mails and cleans up; payment checking does not depend on it.
Follow step 2 of "Installing the Android app" (USB/adb, or pausing the scan during installation). If the app was removed, install it again and pair it with a new QR code; remove the old device on the site.
A lower amount does not confirm the payment. A higher amount confirms it when the customer submits the transaction ID (unless "exactly" is required in the settings). Whether you collect the rest, return the extra or complete the payment by hand is your decision; you can do it under Payments, with a reason.
Its balance did not continue from the previous SMS, or its time was outside the accepted range. This can also happen when an SMS in between never reached the phone or arrived late. Open Nexora Pay → SMS & Devices → Balance check and look in your own mobile-banking app whether the transaction is really there; if it is, press Approve; if not, press Trash.
Check that the licence is active, then press Nexora Pay → License → Updates → Check now. If it says "could not be verified", check the date and time of your server; if that does not help, write to support.
সমাধান না মিললে আমাদের লিখুন: support@nexoraforward.com। দ্রুত সাহায্য পেতে জানান:
If you cannot solve it, write to us: support@nexoraforward.com. To get help quickly, tell us: