0
Nexora Forward Pay

ডকুমেন্টেশনDocumentation

নিজের বিকাশ, নগদ, রকেট বা উপায় নম্বরে পেমেন্ট নিন এবং নিজের ফোনে আসা এসএমএস থেকে তা স্বয়ংক্রিয়ভাবে যাচাই করুন। কেনা থেকে প্রথম পরীক্ষামূলক পেমেন্ট পর্যন্ত সব ধাপ এখানে আছে।

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.

  • bKash
  • Nagad
  • Rocket
  • Upay
  • ব্যাংকBank
  • WooCommerce
  • API

এটি কী এবং কাদের জন্যWhat it is and who it is for

Nexora Forward Pay একটি ওয়ার্ডপ্রেস প্লাগইন, যা আপনার নিজের ওয়েবসাইটেই একটি পেমেন্ট গেটওয়ে চালু করে। গ্রাহক আপনার নিজের বিকাশ, নগদ, রকেট বা উপায় নম্বরে টাকা পাঠান; টাকা আসার এসএমএস আপনার নিজের ফোনে এলে সঙ্গী অ্যান্ড্রয়েড অ্যাপ Nexora Pay Connect সেটি আপনার সাইটে পৌঁছে দেয়, আর সাইট নিজে থেকেই পেমেন্ট মিলিয়ে অর্ডার সম্পন্ন করে।

টাকা সরাসরি গ্রাহকের অ্যাকাউন্ট থেকে আপনার অ্যাকাউন্টে যায়। মাঝখানে আমরা বা অন্য কেউ টাকা ধরে রাখি না, আর আপনার পেমেন্টের তথ্য আপনার নিজের সার্ভারেই থাকে।

অনলাইন দোকান

WooCommerce চেকআউটে বিকাশ, নগদ, রকেট, উপায় ও ব্যাংক ট্রান্সফার যোগ করতে চান।

ফ্রিল্যান্সার ও সার্ভিস

ইনভয়েস বা পেমেন্ট লিংক পাঠিয়ে টাকা নিতে চান, দোকান ছাড়াই।

কোর্স, সদস্যপদ, অনুদান

নিজের সাইট বা অ্যাপ থেকে API দিয়ে পেমেন্ট তৈরি ও যাচাই করতে চান।

মনে রাখুন: Nexora Forward Pay একটি সফটওয়্যার। এটি ব্যাংক, পেমেন্ট সার্ভিস প্রোভাইডার বা পেমেন্ট অ্যাগ্রিগেটর নয়। আপনি যে মোবাইল ব্যাংকিং অ্যাকাউন্টে টাকা নেবেন, সেটি ব্যবসায়িক কাজে ব্যবহারের অনুমতি সংশ্লিষ্ট প্রতিষ্ঠানের নিয়ম অনুযায়ী আপনার থাকতে হবে।

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.

Online shops

You want bKash, Nagad, Rocket, Upay and bank transfer in your WooCommerce checkout.

Freelancers and services

You want to get paid by invoice or payment link, without running a shop.

Courses, memberships, donations

You want to create and verify payments from your own site or app through an API.

Please note: Nexora Forward Pay is software. It is not a bank, a payment service provider or a payment aggregator. You must be allowed, under the provider's own rules, to use the mobile-banking account that receives the money for business.

ফিচারFeatures

  • স্বয়ংক্রিয় যাচাই। গ্রাহক যে নম্বর থেকে টাকা পাঠাবেন সেটি লেখেন; এসএমএস এলে পেমেন্ট নিজে থেকেই নিশ্চিত হয়।
  • বিকাশ, নগদ, রকেট, উপায়। পার্সোনাল, এজেন্ট ও মার্চেন্ট নম্বর; সঙ্গে ব্যাংক ট্রান্সফার (আপনি নিজে অনুমোদন করেন)।
  • নিজস্ব পেমেন্ট পেজ। আপনার নাম, লোগো ও রঙে; বাংলা বা ইংরেজিতে; মোবাইলে মানানসই।
  • WooCommerce। পেমেন্ট নিশ্চিত হলে অর্ডার নিজে থেকেই "পেইড" হয়। WooCommerce ছাড়াও প্লাগইন চলে।
  • পেমেন্ট লিংক ও ইনভয়েস। লিংক শেয়ার করুন বা ইনভয়েস ই-মেইল করুন।
  • একাধিক ব্র্যান্ড। এক ইনস্টলেশনে আলাদা নাম, লোগো, রঙ, গেটওয়ে ও API কী।
  • চার্জ ও সীমা। প্রতিটি গেটওয়েতে শতাংশ বা নির্দিষ্ট চার্জ, সর্বনিম্ন ও সর্বোচ্চ অঙ্ক।
  • রিপোর্ট ও গ্রাহক তালিকা। দৈনিক হিসাব, পদ্ধতি অনুযায়ী ভাগ, CSV এক্সপোর্ট, গ্রাহক ব্লক করার সুবিধা।
  • API ও ওয়েবহুক। অন্য সাইট বা নিজের কোড থেকে পেমেন্ট তৈরি ও যাচাই।
  • জালিয়াতি ঠেকানোর নিয়ম। ব্যালান্স মিলিয়ে দেখা, একটি ট্রানজেকশন আইডি একবারই ব্যবহার, সন্দেহজনক এসএমএস আলাদা করে রাখা।
  • স্বয়ংক্রিয় আপডেট। নতুন ভার্সন ওয়ার্ডপ্রেসের Plugins পাতায় দেখা যায়, এক ক্লিকে আপডেট।
  • Automatic verification. The customer enters the number they pay from; when the SMS arrives the payment is confirmed by itself.
  • bKash, Nagad, Rocket, Upay. Personal, agent and merchant numbers, plus bank transfer (which you approve yourself).
  • Your own payment page. With your name, logo and colour, in Bangla or English, made for phones.
  • WooCommerce. A confirmed payment marks the order as paid. The plugin also works without WooCommerce.
  • Payment links and invoices. Share a link or e-mail an invoice.
  • Several brands. One installation, separate names, logos, colours, gateways and API keys.
  • Charges and limits. A percentage or fixed charge, and a minimum and maximum amount, per gateway.
  • Reports and customers. Daily totals, split by method, CSV export, and a way to block a customer.
  • API and webhooks. Create and verify payments from another site or your own code.
  • Rules against fraud. Balance check, a transaction ID can be used only once, doubtful SMS are held for review.
  • Automatic updates. New versions appear on the WordPress Plugins screen and install in one click.

সুবিধাBenefits

  • টাকা সরাসরি আপনার কাছে। কোনো মধ্যবর্তী অ্যাকাউন্ট নেই, তাই টাকা তোলার জন্য অপেক্ষাও নেই।
  • হাতে মিলিয়ে দেখার কাজ কমে। এসএমএস দেখে অর্ডার খুঁজে "পেইড" করার কাজটি সাইট নিজেই করে।
  • গ্রাহকের জন্য সহজ। মূল ধাপে ট্রানজেকশন আইডি টাইপ করতে হয় না; শুধু নম্বর লিখে টাকা পাঠালেই হয়।
  • তথ্য আপনার নিয়ন্ত্রণে। পেমেন্ট, গ্রাহক ও এসএমএসের তথ্য আপনার নিজের ওয়ার্ডপ্রেস ডেটাবেজে থাকে।
  • প্রতি লেনদেনে আমাদের কোনো কমিশন নেই। আপনি লাইসেন্সের দাম দেন; মোবাইল ব্যাংকিং প্রতিষ্ঠানের নিজস্ব চার্জ থাকলে সেটি তাদের নিয়মে প্রযোজ্য।
সীমাবদ্ধতাও জেনে নিন: যাচাই নির্ভর করে আপনার ফোনে এসএমএস আসার ওপর। ফোন বন্ধ, নেটওয়ার্কের বাইরে বা ইন্টারনেট ছাড়া থাকলে সেই সময়ের পেমেন্ট নিজে থেকে নিশ্চিত হবে না; ফোন অনলাইনে ফিরলে জমে থাকা এসএমএস পাঠানো হয়।
  • The money comes straight to you. There is no account in the middle, so there is no waiting for a payout.
  • Less checking by hand. Reading the SMS, finding the order and marking it paid is done by the site.
  • Easy for the customer. In the main flow there is no transaction ID to type: they enter their number and send the money.
  • Your data stays with you. Payments, customers and SMS data are stored in your own WordPress database.
  • No commission to us per transaction. You pay for the licence; any charge of the mobile-banking provider applies under their own rules.
Know the limits too: verification depends on the SMS reaching your phone. While the phone is switched off, out of coverage or without internet, payments are not confirmed automatically; SMS that arrived in the meantime are sent when the phone is back online.

যা যা লাগবেRequirements

ওয়ার্ডপ্রেস৬.০ বা নতুন
PHP৭.৪ বা নতুন
HTTPSসাইটে বৈধ SSL সার্টিফিকেট থাকতে হবে। অ্যাপ https:// ছাড়া কোনো সাইটের সঙ্গে যুক্ত হয় না।
WooCommerceঐচ্ছিক। দোকানের চেকআউটে ব্যবহার করতে চাইলে লাগবে; পেমেন্ট লিংক, ইনভয়েস ও API এটি ছাড়াই চলে।
অ্যান্ড্রয়েড ফোনঅ্যান্ড্রয়েড ৮.০ বা নতুন। যে সিমে বিকাশ, নগদ, রকেট বা উপায়ের টাকা আসার এসএমএস আসে, সেই সিম এই ফোনেই থাকতে হবে।
ফোন অনলাইনফোন চালু, চার্জে এবং ইন্টারনেটে (ওয়াই-ফাই বা মোবাইল ডেটা) যুক্ত থাকতে হবে। তারিখ ও সময় "স্বয়ংক্রিয়" রাখুন।
লাইসেন্সসাইটে একটি সক্রিয় Nexora Forward Pay লাইসেন্স। লাইসেন্স সক্রিয় না থাকলে অ্যাপ যুক্ত হয় না এবং নতুন পেমেন্ট তৈরি হয় না।

আইফোনের জন্য অ্যাপ নেই: iOS কোনো অ্যাপকে আগত এসএমএস পড়তে দেয় না।

WordPress6.0 or newer
PHP7.4 or newer
HTTPSThe site needs a valid SSL certificate. The app does not connect to a site that is not https://.
WooCommerceOptional. Needed for the shop checkout; payment links, invoices and the API work without it.
Android phoneAndroid 8.0 or newer. The SIM that receives your bKash, Nagad, Rocket or Upay payment SMS must be in this phone.
Phone onlineThe phone must stay switched on, charged and connected to the internet (Wi-Fi or mobile data). Keep date and time on "automatic".
LicenceAn 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.

লাইসেন্স কেনা ও প্যাকেজBuying a licence and the tiers

লাইসেন্স কেনা যায় Nexora Forward ওয়েবসাইট থেকে। প্যাকেজ ঠিক হয় কয়টি ডোমেইনে প্লাগইন চালাবেন তার ভিত্তিতে; প্রতিটি প্যাকেজে সব ফিচার থাকে।

Starter১ডোমেইন
Basic২ডোমেইন
Standard৩ডোমেইন
Business১০ডোমেইন
  • একটি ডোমেইন মানে একটি সাইটের ঠিকানা। www থাকা বা না থাকা একই ডোমেইন ধরা হয়; আলাদা সাবডোমেইন (যেমন shop.example.com) আলাদা ডোমেইন।
  • বর্তমান দাম ও মেয়াদের বিকল্প (মাসিক, বার্ষিক বা লাইফটাইম) কেনার পাতায় দেখানো হয়।
  • পেমেন্ট নিশ্চিত হলে লাইসেন্স নিজে থেকেই তৈরি হয়। License Key, Secret Key অর্ডারের ধন্যবাদ পাতায় দেখানো হয় এবং আপনার ই-মেইলে পাঠানো হয়। প্লাগইন ও অ্যাপ লগইন করা অবস্থায় এই পাতার ডাউনলোড অংশ থেকে নামানো যায়।
  • লাইসেন্স যে ডোমেইনে চালু হয় সেই ডোমেইনেই লক থাকে; Deactivate করলে ডোমেইনটি খালি হয় না। সাইট বদলাতে চাইলে পুরোনো সাইটে Nexora Pay → License → Domain Change Request থেকে নতুন ডোমেইন লিখে অনুরোধ পাঠান। অ্যাডমিন অনুমোদন দিলে নতুন সাইটে একই License Key ও Secret Key দিয়ে লাইসেন্স চালু করুন। প্রথম পরিবর্তন বিনামূল্যে; পরের প্রতিটির জন্য বর্তমান প্যাকেজ মূল্যের ২৫%।

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.

Starter1domain
Basic2domains
Standard3domains
Business10domains
  • A domain is one site address. With or without www is the same domain; a different sub-domain (for example shop.example.com) is a separate domain.
  • Current prices and the available terms (monthly, yearly or lifetime) are shown on the purchase page.
  • When your payment is confirmed the licence is created automatically. The License Key, the Secret Key are shown on the order's thank-you page and sent to your e-mail address. The plugin and the app are downloaded from the download section of this page while you are logged in.
  • A licence stays locked to the domain it was activated on; Deactivate does not free that domain. To move to another site, send the new domain from Nexora Pay → License → Domain Change Request on the old site. Once the admin approves it, activate the licence on the new site with the same License Key and Secret Key. The first change is free; every later change costs 25% of the current package price.

প্লাগইন ও অ্যাপ ডাউনলোডDownloading the plugin and the app

প্লাগইনের ZIP ফাইল এবং অ্যান্ড্রয়েড অ্যাপের APK ফাইল শুধু তাঁরাই পান, যাঁরা Nexora Forward Pay কিনেছেন।

  1. যে অ্যাকাউন্ট দিয়ে লাইসেন্স কিনেছেন, সেটি দিয়ে এই সাইটে লগইন করুন।
  2. এই পাতায় ফিরে আসুন। নিচে প্লাগইন ZIP নামান ও অ্যাপ (APK) নামান বোতাম দুটি দেখা যাবে; সব সময় সর্বশেষ ভার্সন দেওয়া হয়।
  3. লগইন না করলে বা এই অ্যাকাউন্টে কেনার তথ্য না থাকলে বোতামের জায়গায় অ্যাডমিনের সাথে যোগাযোগের বার্তা দেখা যাবে।

ফাইল দুটি শুধু আপনার নিজের ব্যবহারের জন্য; অন্য কাউকে দেবেন না। লাইসেন্সের ই-মেইলেও প্লাগইনের একটি ব্যক্তিগত ডাউনলোড লিংক থাকে, যা ৩ দিন পর্যন্ত কাজ করে।

The plugin ZIP and the APK of the Android app are available only to customers who bought Nexora Forward Pay.

  1. Log in to this site with the account you bought the licence with.
  2. Come back to this page. The Download plugin ZIP and Download the app (APK) buttons appear below; they always deliver the latest version.
  3. If you are not logged in, or no purchase is found for the account, a message asking you to contact the admin is shown instead of the buttons.

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.

প্লাগইনের ZIP ও APK ফাইল পেতে অনুগ্রহ করে অ্যাডমিনের সাথে যোগাযোগ করুন।To get the plugin ZIP and the APK file, please contact the admin.আগেই কিনে থাকলে যে অ্যাকাউন্ট দিয়ে কিনেছেন সেটিতে লগইন করুন; ডাউনলোডের বোতাম এখানেই দেখাবে।If you have already bought it, log in with the account you bought it with; the download buttons appear here.

প্লাগইন ইনস্টলInstalling the plugin

  1. ওয়ার্ডপ্রেস অ্যাডমিনে Plugins → Add New Plugin → Upload Plugin খুলুন।
  2. নামানো nexora-forward-pay-x.y.z.zip ফাইলটি বেছে Install Now চাপুন। ZIP ফাইল খুলবেন না, যেমন আছে তেমনই আপলোড করুন।
  3. Activate Plugin চাপুন। বাঁ দিকের মেনুতে Nexora Pay দেখা যাবে।

প্লাগইন চালু হলে নিজের কয়েকটি ডেটাবেজ টেবিল তৈরি করে (পেমেন্ট, গেটওয়ে, এসএমএস, ডিভাইস ইত্যাদি)। ওয়ার্ডপ্রেসের অন্য কোনো টেবিল বদলায় না।

  1. In WordPress admin open Plugins → Add New Plugin → Upload Plugin.
  2. Choose the downloaded nexora-forward-pay-x.y.z.zip and press Install Now. Do not unpack the ZIP; upload it as it is.
  3. Press Activate Plugin. Nexora Pay appears in the left menu.

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.

লাইসেন্স চালু করাActivating the licence

  1. Nexora Pay → License খুলুন।
  2. ই-মেইল বা ধন্যবাদ পাতা থেকে License key ও Secret key কপি করে বসান।
  3. Activate চাপুন। অবস্থা Active হলে কাজ শেষ; ওপরের কোণে "Licence active" দেখাবে।
  • প্লাগইন দিনে একবার লাইসেন্স সার্ভারের সঙ্গে লাইসেন্স মিলিয়ে নেয়। সার্ভারের সঙ্গে যোগাযোগ না হলেও সর্বশেষ সফল যাচাইয়ের পর ৭ দিন পর্যন্ত কাজ চলে।
  • লাইসেন্সের মেয়াদ শেষ হলে বা লাইসেন্স সক্রিয় না থাকলে নতুন পেমেন্ট তৈরি হয় না এবং অ্যাপ এসএমএস পাঠানো বন্ধ রাখে। আগের পেমেন্টের রেকর্ড যেমন ছিল তেমনই থাকে; মেয়াদ নবায়ন করলে আবার চালু হয়।
  • "Product does not match" দেখালে বুঝবেন অন্য পণ্যের (যেমন Nexora Forward Pro) কী বসানো হয়েছে। Pay-এর নিজের কী ব্যবহার করুন।
  1. Open Nexora Pay → License.
  2. Copy the License key and the Secret key from the e-mail or the thank-you page and paste them in.
  3. Press Activate. When the status says Active you are done; the top corner shows "Licence active".
  • The plugin checks the licence with the licence server once a day. If the server cannot be reached, the plugin keeps working for up to 7 days after the last successful check.
  • When the licence has expired or is not active, new payments cannot be created and the app stops forwarding SMS. Existing payment records stay as they are; everything resumes when the licence is renewed.
  • "Product does not match" means a key of another product (for example Nexora Forward Pro) was entered. Use the key issued for Pay.

স্বয়ংক্রিয় আপডেটAutomatic updates

ভার্সন ১.৫.০ থেকে প্লাগইন নিজেই নতুন ভার্সনের খোঁজ রাখে। সাইটে সক্রিয় লাইসেন্স থাকলেই আপডেট পাওয়া যায়।

Plugins পাতায়

নতুন ভার্সন এলে ওয়ার্ডপ্রেসের Plugins পাতায় Nexora Forward Pay-এর নিচে "নতুন ভার্সন আছে" বার্তা দেখায়। View details চাপলে পরিবর্তনের তালিকা, আর Update now চাপলে আপডেট হয়ে যায়।

নিজে থেকে ইনস্টল

Nexora Pay → License → Updates কার্ডে Install updates automatically চালু করলে ওয়ার্ডপ্রেস নতুন ভার্সন নিজেই বসিয়ে নেয় (সাধারণত প্রকাশের ১২ ঘণ্টার মধ্যে)। শুরুতে এটি বন্ধ থাকে।

এখনই খুঁজে দেখা

একই কার্ডে ইনস্টল করা ভার্সন, সর্বশেষ ভার্সন ও শেষ কবে খোঁজা হয়েছে তা দেখায়। Check now চাপলে তখনই লাইসেন্স সার্ভারে খোঁজ নেওয়া হয়।

আপডেট কীভাবে যাচাই হয়:

  • আপডেটের তথ্য আমাদের ডিজিটাল স্বাক্ষরসহ আসে এবং আপনার ডোমেইন ও লাইসেন্সের জন্য নির্দিষ্ট থাকে। স্বাক্ষর না মিললে প্লাগইন সেই তথ্য উপেক্ষা করে।
  • ফাইল শুধু লাইসেন্স সার্ভার থেকে HTTPS-এ নামানো হয়। নামানো ফাইলের SHA-256 চেকসাম স্বাক্ষরিত তথ্যের সঙ্গে না মিললে কিছুই ইনস্টল হয় না।
  • ফাইল বসানোর কাজটি ওয়ার্ডপ্রেসের নিজস্ব আপডেট ব্যবস্থাই করে। আপডেটে আপনার সেটিংস, গেটওয়ে, পেমেন্টের রেকর্ড ও যুক্ত ফোন অপরিবর্তিত থাকে।

স্বয়ংক্রিয় আপডেট কাজ না করলে অ্যাকাউন্ট থেকে নতুন 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.

On the Plugins screen

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.

Install by itself

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.

Check right now

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:

  • The update information carries our digital signature and is tied to your domain and licence. If the signature does not verify, the plugin ignores it.
  • The file is downloaded only from the licence server, over HTTPS. If the SHA-256 checksum of the downloaded file does not match the signed information, nothing is installed.
  • WordPress' own updater puts the files in place. Your settings, gateways, payment records and paired phones are not changed by an update.

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.

গেটওয়ে যোগ করাAdding gateways

গেটওয়ে হলো সেই নম্বর বা অ্যাকাউন্ট, যেখানে গ্রাহক টাকা পাঠাবেন। Nexora Pay → Gateways → Add gateway থেকে যোগ করুন।

অ্যাকাউন্টের ধরনগ্রাহক যা করেনযাচাই
PersonalSend Moneyএসএমএস থেকে স্বয়ংক্রিয়
AgentCash Outএসএমএস থেকে স্বয়ংক্রিয়
MerchantPaymentএসএমএস থেকে স্বয়ংক্রিয়
Bank accountব্যাংকে জমা বা ট্রান্সফার, তারপর রেফারেন্স নম্বর লেখেনআপনি নিজে দেখে অনুমোদন করেন
  • Number / account number: মোবাইল ব্যাংকিংয়ের ক্ষেত্রে ০১ দিয়ে শুরু ১১ সংখ্যার নম্বর। এই নম্বরের সিম যুক্ত ফোনেই থাকতে হবে।
  • Charge (%) ও Fixed charge: মূল অঙ্কের সঙ্গে যোগ হয়। যেমন ক্যাশ আউটের খরচ গ্রাহকের কাছ থেকে নিতে চাইলে ১.৮৫ লিখুন। গ্রাহককে চার্জসহ মোট অঙ্ক দেখানো হয়।
  • Minimum ও Maximum amount: এই সীমার বাইরের অঙ্কে গেটওয়েটি ব্যবহার করা যায় না। ০ মানে সীমা নেই।
  • Display name, Extra instructions, Order: গ্রাহক যে নাম ও নির্দেশনা দেখবেন এবং তালিকায় কোনটি আগে থাকবে।
  • Brand: "All brands" রাখলে গেটওয়েটি সব পেমেন্ট পেজে দেখায়।
যাচাইয়ের নিয়ম ঠিক করা যায় Nexora Pay → Settings থেকে: এসএমএসের অঙ্ক হুবহু মিলতে হবে কি না, ব্যালান্স মিলিয়ে দেখা, একটি এসএমএস কত ঘণ্টা পর্যন্ত ব্যবহারযোগ্য (শুরুতে ২৪ ঘণ্টা), এবং পেমেন্ট পাতা কত মিনিট খোলা থাকবে (শুরুতে ৬০ মিনিট)।

A gateway is the number or account your customers send money to. Add one under Nexora Pay → Gateways → Add gateway.

Account typeWhat the customer doesVerification
PersonalSend MoneyAutomatic, from the SMS
AgentCash OutAutomatic, from the SMS
MerchantPaymentAutomatic, from the SMS
Bank accountDeposits or transfers at the bank, then enters the reference numberYou check and approve it yourself
  • Number / account number: for mobile banking, 11 digits starting with 01. The SIM of this number must be in the paired phone.
  • Charge (%) and Fixed charge: added on top of the amount. For example, enter 1.85 to pass the cash-out cost on to the customer. The customer is shown the total including the charge.
  • Minimum and Maximum amount: the gateway is not offered for amounts outside these limits. 0 means no limit.
  • Display name, Extra instructions, Order: the name and note the customer sees, and which gateway is listed first.
  • Brand: a gateway on "All brands" is offered on every payment page.
The verification rules are set under Nexora Pay → Settings: whether the SMS amount must match exactly, the balance check, for how many hours an SMS can be used (24 by default), and for how many minutes a payment page stays open (60 by default).

অ্যান্ড্রয়েড অ্যাপ ইনস্টলInstalling the Android app

Nexora Pay Connect অ্যাপটি সেই ফোনে বসাতে হবে, যে ফোনে পেমেন্টের এসএমএস আসে। নিচের ধাপগুলো মন দিয়ে পড়ুন; বেশির ভাগ সমস্যা এখানকার কোনো একটি ধাপ বাদ পড়ার কারণে হয়।

১. APK কোথায় পাবেন

অ্যাপটি APK ফাইল হিসেবে দেওয়া হয়। লাইসেন্স কেনা অ্যাকাউন্টে লগইন করে এই পাতার ডাউনলোড অংশের "অ্যাপ (APK) নামান" বোতাম থেকে সর্বশেষ APK নামিয়ে নিন। বোতামটি দেখা না গেলে অ্যাডমিনের সাথে যোগাযোগ করুন (support@nexoraforward.com)। অন্য কোনো ওয়েবসাইট, গ্রুপ বা অপরিচিত কারও দেওয়া APK ইনস্টল করবেন না।

২. Google Play Protect বাধা দিলে

Play Store-এর বাইরে থেকে ইনস্টল করা যে অ্যাপ এসএমএসের অনুমতি চায়, Google Play Protect সেটিকে সতর্কবার্তা দেখাতে বা আটকে দিতে পারে। এটি Google-এর সাধারণ নিয়ম; শুধু এই অ্যাপের জন্য নয়। ফোন ও অঞ্চলভেদে "More details → Install anyway" দেখা যেতে পারে, আবার ইনস্টল পুরোপুরি আটকেও যেতে পারে। আটকে গেলে নিচের দুটি উপায়ের একটি ব্যবহার করুন।

উপায় ক: কম্পিউটার থেকে USB (adb) দিয়ে

  1. ফোনে Settings → About phone-এ "Build number"-এ সাতবার চাপ দিয়ে Developer options চালু করুন।
  2. Developer options-এ USB debugging চালু করুন। "Verify apps over USB" থাকলে ইনস্টলের সময়টুকু বন্ধ রাখুন।
  3. কম্পিউটারে Google-এর "Android SDK Platform-Tools" নামিয়ে ফোন USB কেব্‌লে যুক্ত করুন এবং ফোনে "Allow USB debugging" অনুমোদন দিন।
  4. কমান্ড চালান: adb install nexora-pay-connect-x.y.z.apk
  5. ইনস্টল শেষে USB debugging আবার বন্ধ করে দিন।

উপায় খ: ইনস্টলের সময়টুকু Play Protect স্ক্যান বন্ধ রেখে

  1. Play Store খুলে ওপরে প্রোফাইল ছবিতে চাপুন, তারপর Play Protect → ⚙ Settings।
  2. Scan apps with Play Protect বন্ধ করুন।
  3. APK ফাইল খুলে ইনস্টল করুন ("Install unknown apps" চাইলে শুধু এই একবারের জন্য অনুমতি দিন)।
  4. ইনস্টল শেষ হওয়ামাত্র স্ক্যান আবার চালু করুন।
সতর্কতা: Play Protect স্ক্যান বন্ধ থাকলে সেই সময়ে আপনার ফোনের সুরক্ষা কমে যায়। তাই শুধু আমাদের দেওয়া APK-ই ইনস্টল করুন, ওই সময়ে অন্য কিছু ইনস্টল করবেন না, এবং কাজ শেষে স্ক্যান চালু করতে ভুলবেন না। স্ক্যান আবার চালু করার পর Play Protect অ্যাপটি নিয়ে আবার সতর্কবার্তা দেখাতে পারে।

৩. "Allow restricted settings" (অ্যান্ড্রয়েড ১৩ ও নতুন)

অ্যান্ড্রয়েড ১৩ থেকে Play Store-এর বাইরে থেকে বসানো অ্যাপকে এসএমএসের অনুমতি দিতে গেলে "Restricted setting" বার্তা আসতে পারে। তখন:

  1. বার্তাটি বন্ধ করুন।
  2. Settings → Apps → Nexora Pay Connect খুলুন।
  3. ওপরের ডান কোণের তিন-বিন্দু (⋮) মেনু থেকে Allow restricted settings চাপুন এবং ফোনের পিন বা আঙুলের ছাপ দিন।
  4. অ্যাপে ফিরে আবার অনুমতি দিন।

মেনুটি সাধারণত তখনই দেখা যায়, যখন আপনি একবার অনুমতি দিতে গিয়ে "Restricted setting" বার্তাটি পেয়েছেন।

৪. এসএমএসের অনুমতি, এবং কেন লাগে

অ্যাপ একটিই সংবেদনশীল অনুমতি চায়: এসএমএস গ্রহণ (RECEIVE_SMS)। টাকা আসার এসএমএস ফোনে পৌঁছানোর মুহূর্তে সেটি আপনার সাইটে পাঠানোই এর কাজ; এই অনুমতি ছাড়া স্বয়ংক্রিয় যাচাই সম্ভব নয়। অ্যাপ ফোনের পুরোনো ইনবক্স পড়ে না এবং কোনো এসএমএস পাঠাতে পারে না। কোন এসএমএস পাঠানো হয় তা নিচের "অ্যাপ কী পাঠায়" অংশে আছে।

৫. নোটিফিকেশনের অনুমতি

অ্যাপ সচল থাকার জন্য একটি নীরব, স্থায়ী নোটিফিকেশন দেখায় ("Processing messages in the background")। অ্যান্ড্রয়েড ১৩ ও নতুন সংস্করণে এর জন্য নোটিফিকেশনের অনুমতি চাওয়া হয়; অনুমতি দিন। এই নোটিফিকেশন কোনো শব্দ করে না, এবং এটি থাকলে ফোন অ্যাপটিকে সহজে বন্ধ করে দেয় না।

৬. ব্যাটারি ও অটোস্টার্ট সেটিংস

অনেক ফোন ব্যাটারি বাঁচাতে পেছনে চলা অ্যাপ বন্ধ করে দেয়; তখন এসএমএস দেরিতে পৌঁছায় বা পৌঁছায়ই না। অ্যাপের Open battery settings বোতাম দিয়ে অ্যাপটিকে ব্যাটারি অপ্টিমাইজেশনের বাইরে রাখুন, তারপর আপনার ফোনের ব্র্যান্ড অনুযায়ী নিচের সেটিংস ঠিক করুন। মেনুর নাম সংস্করণভেদে একটু আলাদা হতে পারে।

ফোনযা করবেন
Xiaomi / Redmi / POCOSettings → Apps → Manage apps → Nexora Pay Connect: Autostart চালু; Battery saver → No restrictions। সাম্প্রতিক অ্যাপের তালিকায় অ্যাপটি চেপে ধরে তালা (lock) দিন।
vivo / iQOOSettings → Battery → Background power consumption management: অ্যাপটির জন্য পেছনে চলা অনুমোদন দিন। Settings → Apps → Autostart (বা i Manager → App manager → Autostart manager): চালু।
Oppo / Realme / OnePlusSettings → Apps → App management → Nexora Pay Connect → Battery usage: Allow background activity ও Allow auto launch চালু। সাম্প্রতিক অ্যাপের তালিকায় তালা দিন।
SamsungSettings → Apps → Nexora Pay Connect → Battery: Unrestricted। Settings → Battery → Background usage limits → Never sleeping apps-এ অ্যাপটি যোগ করুন।

৭. অ্যাপ কখনো Force stop করবেন না

  • Force stop করলে অ্যান্ড্রয়েড অ্যাপটিকে আর এসএমএস দেয় না, যতক্ষণ না আপনি নিজে অ্যাপটি আবার খোলেন। "ক্লিনার" বা "বুস্টার" অ্যাপও একই কাজ করে; অ্যাপটিকে সেগুলোর বাইরে রাখুন।
  • ফোন রিস্টার্ট হলে অ্যাপ নিজে থেকেই চালু হওয়ার কথা (এ জন্যই অটোস্টার্ট অনুমতি লাগে)। রিস্টার্টের পর একবার অ্যাপ খুলে "Connected" দেখে নিন।
  • ফোন চার্জে রাখুন, ইন্টারনেট চালু রাখুন, তারিখ-সময় "স্বয়ংক্রিয়" রাখুন। ফোনের সময় ৫ মিনিটের বেশি এদিক-ওদিক হলে সাইট অনুরোধ গ্রহণ করে না।

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.

1. Where to get the APK

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.

2. If Google Play Protect blocks it

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.

Way A: from a computer over USB (adb)

  1. On the phone, open Settings → About phone and tap "Build number" seven times to enable Developer options.
  2. In Developer options switch on USB debugging. If there is a "Verify apps over USB" switch, keep it off during the installation.
  3. Download Google's "Android SDK Platform-Tools" on the computer, connect the phone by USB cable and confirm "Allow USB debugging" on the phone.
  4. Run: adb install nexora-pay-connect-x.y.z.apk
  5. Switch USB debugging off again when the app is installed.

Way B: pause Play Protect scanning during the installation

  1. Open the Play Store, tap your profile picture, then Play Protect → ⚙ Settings.
  2. Switch off Scan apps with Play Protect.
  3. Open the APK file and install it (if asked for "Install unknown apps", allow it for this one time).
  4. Switch scanning back on as soon as the installation has finished.
Be careful: while Play Protect scanning is off, your phone is less protected. Install only the APK you received from us, install nothing else during that time, and do not forget to switch scanning back on. After you switch it back on, Play Protect may show a warning about the app again.

3. "Allow restricted settings" (Android 13 and newer)

From Android 13, granting SMS access to an app that was installed from outside the Play Store can show a "Restricted setting" message. Then:

  1. Close the message.
  2. Open Settings → Apps → Nexora Pay Connect.
  3. Tap the three-dot menu (⋮) in the top right corner, choose Allow restricted settings and confirm with your PIN or fingerprint.
  4. Go back to the app and grant the permission again.

The menu entry usually appears only after you have tried to grant the permission once and seen the "Restricted setting" message.

4. The SMS permission, and why it is needed

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.

5. The notification permission

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.

6. Battery and autostart settings

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.

PhoneWhat to set
Xiaomi / Redmi / POCOSettings → 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 / iQOOSettings → 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 / OnePlusSettings → Apps → App management → Nexora Pay Connect → Battery usage: Allow background activity and Allow auto launch on. Lock the app in the recent-apps list.
SamsungSettings → Apps → Nexora Pay Connect → Battery: Unrestricted. Add the app under Settings → Battery → Background usage limits → Never sleeping apps.

7. Never force-stop the app

  • After a Force stop, Android no longer delivers SMS to the app until you open it again yourself. "Cleaner" and "booster" apps do the same; exclude the app from them.
  • After a restart of the phone the app should start by itself (that is what the autostart permission is for). Open it once after a restart and check that it says "Connected".
  • Keep the phone charged and online, and keep date and time on "automatic". The site rejects requests when the phone's clock is more than 5 minutes off.

QR কোড দিয়ে ফোন যুক্ত করাPairing the phone by QR code

  1. সাইটে Nexora Pay → SMS & Devices → Devices খুলে Show QR code চাপুন।
  2. ফোনে Nexora Pay Connect খুলে Scan QR code চাপুন এবং পর্দার QR কোডটি স্ক্যান করুন। ক্যামেরা ব্যবহার করতে না চাইলে কোডের নিচের লেখাটি কপি করে অ্যাপে পেস্ট করুন।
  3. অ্যাপে Connected দেখালে এসএমএসের অনুমতি দিন এবং ব্যাটারি সেটিংস ঠিক করুন (ওপরের অংশ দেখুন)।
  4. Send test ping চাপুন। সাইটের ওপরের কোণে "Phone online" দেখালে সংযোগ ঠিক আছে।
  • QR কোড একবারই কাজ করে এবং ১০ মিনিট পর বাতিল হয়ে যায়। এটিকে পাসওয়ার্ডের মতো গোপন রাখুন; স্ক্রিনশট বা ছবি কাউকে পাঠাবেন না। অন্য কেউ দেখে ফেলেছে মনে হলে Refresh QR code চাপুন।
  • সাইটে সক্রিয় লাইসেন্স না থাকলে অ্যাপ যুক্ত হয় না এবং বার্তা দেখায়।
  • ফোন বদলালে বা হারালে সাইটের Devices তালিকা থেকে Disconnect বা Remove চাপুন; সেই ফোন থেকে আর কিছু গ্রহণ করা হবে না।
  • সাইট ফোনের শেষ যোগাযোগের সময় দেখায়। অ্যাপ প্রায় ১৫ মিনিট পরপর একটি ছোট সংকেত পাঠায়; প্রায় ২০ মিনিট কোনো সংকেত না এলে ফোনটিকে "offline" দেখানো হয়।
  1. On the site open Nexora Pay → SMS & Devices → Devices and press Show QR code.
  2. On the phone open Nexora Pay Connect, tap Scan QR code and scan the code on the screen. If you prefer not to use the camera, copy the text below the code and paste it into the app.
  3. When the app says Connected, grant the SMS permission and set the battery settings (see the section above).
  4. Tap Send test ping. When the top corner of the site shows "Phone online", the connection works.
  • The QR code works once and expires after 10 minutes. Treat it like a password; do not send anyone a screenshot or photo of it. If someone else may have seen it, press Refresh QR code.
  • If the site has no active licence, the app does not pair and tells you so.
  • If you change or lose the phone, press Disconnect or Remove in the site's Devices list; nothing is accepted from that phone any more.
  • The site shows when the phone was last in contact. The app sends a small signal about every 15 minutes; after about 20 minutes without one the phone is shown as "offline".

WooCommerce সেটআপWooCommerce setup

  1. WooCommerce → Settings → Payments খুলুন।
  2. Nexora Forward Pay চালু করুন, তারপর Manage চেপে চেকআউটে যে শিরোনাম ও বিবরণ দেখাবে তা লিখুন।
  3. একটি পরীক্ষামূলক অর্ডার দিয়ে অল্প টাকা পাঠিয়ে দেখুন অর্ডারটি নিজে থেকে "Processing" বা "Completed" হয় কি না।
  • পদ্ধতিটি চেকআউটে তখনই দেখায়, যখন লাইসেন্স সক্রিয় থাকে এবং অন্তত একটি গেটওয়ে চালু থাকে।
  • অর্ডার দিলে গ্রাহক পেমেন্ট পাতায় যান; পেমেন্ট নিশ্চিত হলে অর্ডার "পেইড" হয় এবং অর্ডার নোটে পদ্ধতি ও ট্রানজেকশন আইডি লেখা থাকে।
  • পেমেন্টের অঙ্ক অর্ডারের মোট অঙ্কের সঙ্গে না মিললে অর্ডার "On hold" হয়, যাতে আপনি নিজে দেখে নিতে পারেন।
  • WooCommerce-এর High-Performance Order Storage (HPOS) সমর্থিত।
  1. Open WooCommerce → Settings → Payments.
  2. Enable Nexora Forward Pay, then press Manage and enter the title and description shown in the checkout.
  3. Place a test order, send a small amount and check that the order moves to "Processing" or "Completed" by itself.
  • The method is offered in the checkout only while the licence is active and at least one gateway is switched on.
  • After placing the order the customer is taken to the payment page; when the payment is confirmed the order is marked as paid and the order note records the method and the transaction ID.
  • If the paid amount does not match the order total, the order is put "On hold" so that you can check it yourself.
  • WooCommerce High-Performance Order Storage (HPOS) is supported.

গ্রাহক যেভাবে পেমেন্ট করেনHow a payment works for the customer

  1. পদ্ধতি বেছে নেন। পেমেন্ট পাতায় আপনার চালু করা গেটওয়েগুলো দেখায় (বিকাশ, নগদ, রকেট, উপায়, ব্যাংক)।
  2. নিজের নম্বর লেখেন। যে নম্বর থেকে টাকা পাঠাবেন, সেই ১১ সংখ্যার নম্বর।
  3. হুবহু অঙ্কটি পাঠান। পাতায় আপনার নম্বর, কী করতে হবে (Send Money, Cash Out বা Payment) এবং চার্জসহ মোট অঙ্ক দেখায়। গ্রাহক ঠিক সেই অঙ্কটিই ওই নম্বর থেকে পাঠান।
  4. নিজে থেকে নিশ্চিত হয়। পাতাটি অপেক্ষা করে। আপনার ফোনে এসএমএস এলে পেমেন্ট নিশ্চিত হয় এবং গ্রাহক সাইটে ফিরে যান। সাধারণত কয়েক সেকেন্ড থেকে কয়েক মিনিট লাগে।

ট্রানজেকশন আইডি দিয়ে (বিকল্প পথ)

যাচাইয়ে দেরি হলে পাতায় Submit transaction ID দেখায়। গ্রাহক তাঁর এসএমএসের TrxID লিখলে সেই আইডি দিয়ে মিলিয়ে দেখা হয়। একটি আইডি একবারই ব্যবহার করা যায়, আর ভুল চেষ্টার সংখ্যা সীমিত (শুরুতে ৮ বার)।

রকেট

রকেটের এসএমএসে সাধারণত প্রেরকের পুরো নম্বর থাকে না, তাই নম্বর দিয়ে মেলানো যায় না। রকেটের পেমেন্টে গ্রাহককে ট্রানজেকশন আইডি দিতে হয়।

  • ভুল অঙ্ক পাঠালে: নম্বর দিয়ে মেলানোর সময় অঙ্ক হুবহু মিলতে হয়, তাই পেমেন্ট নিজে থেকে নিশ্চিত হবে না। গ্রাহক ট্রানজেকশন আইডি দিলে এসএমএসের অঙ্ক পাওনার সমান বা বেশি হলেই গ্রহণ করা হয় (সেটিংসে "হুবহু" বাধ্যতামূলক করা যায়)। কম পাঠালে গ্রহণ হয় না; আপনি নিজে দেখে সিদ্ধান্ত নেবেন।
  • ব্যাংক: গ্রাহক রেফারেন্স নম্বর জমা দেন; আপনি ই-মেইলে জানতে পারেন এবং Nexora Pay → Payments থেকে নিজে অনুমোদন করেন।
  • খোলা কিন্তু অপরিশোধিত পেমেন্ট পাতা নির্দিষ্ট সময় পর (শুরুতে ৬০ মিনিট) বাতিল হয়।
  1. They choose a method. The payment page lists the gateways you switched on (bKash, Nagad, Rocket, Upay, bank).
  2. They enter their own number. The 11-digit number they will pay from.
  3. They send the exact amount. The page shows your number, what to do (Send Money, Cash Out or Payment) and the total including any charge. The customer sends exactly that amount from that number.
  4. It is confirmed by itself. The page waits. When the SMS reaches your phone the payment is confirmed and the customer is sent back to your site. This usually takes a few seconds to a few minutes.

By transaction ID (the fallback)

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).

Rocket

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.

  • A wrong amount: matching by number needs the exact amount, so the payment is not confirmed automatically. With a transaction ID, the SMS amount is accepted when it is equal to or higher than the amount due (you can require "exactly" in the settings). A lower amount is not accepted; you decide what to do with it.
  • Bank: the customer submits the reference number; you are notified by e-mail and approve it yourself under Nexora Pay → Payments.
  • An opened but unpaid payment page is cancelled after a set time (60 minutes by default).

পেমেন্ট লিংক, ইনভয়েস, ব্র্যান্ড, রিপোর্টPayment links, invoices, brands, reports

Payment Links

একটি লিংক বানিয়ে ফেসবুক, হোয়াটসঅ্যাপ বা ই-মেইলে শেয়ার করুন। অঙ্ক নির্দিষ্ট রাখতে পারেন, অথবা সর্বনিম্ন-সর্বোচ্চ সীমার মধ্যে গ্রাহককে লিখতে দিতে পারেন। লিংক যেকোনো সময় বন্ধ করা যায়।

Invoices

গ্রাহকের নাম ও আইটেম দিয়ে ইনভয়েস বানান; E-mail link বোতামে গ্রাহকের ই-মেইলে পেমেন্টের লিংক চলে যায়। পরিশোধ হলে ইনভয়েসের অবস্থা নিজে থেকেই বদলায়।

Brands

একই ইনস্টলেশনে একাধিক ব্যবসা চালাতে প্রতিটির জন্য আলাদা নাম, লোগো, রঙ, সাপোর্ট নম্বর, ভাষা, গেটওয়ে ও API কী রাখুন।

Reports ও Customers

তারিখ ও ব্র্যান্ড ধরে মোট সংগ্রহ, পদ্ধতি অনুযায়ী ভাগ এবং CSV এক্সপোর্ট। গ্রাহকের পেমেন্টের ইতিহাস দেখুন, নোট রাখুন, প্রয়োজনে কোনো ই-মেইল বা নম্বর ব্লক করুন।

Payments পাতায় প্রতিটি পেমেন্টের পূর্ণ ইতিহাস থাকে। সেখান থেকে হাতে সম্পন্ন (কারণ লিখে), বাতিল বা রিফান্ড হিসেবে চিহ্নিত করা যায়। রিফান্ড হিসেবে চিহ্নিত করা শুধু রেকর্ড বদলায়; টাকা ফেরত আপনাকেই নিজের মোবাইল ব্যাংকিং অ্যাপ থেকে পাঠাতে হবে।

Payment Links

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.

Invoices

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.

Brands

To run several businesses from one installation, give each its own name, logo, colour, support number, language, gateways and API keys.

Reports and Customers

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 ও ওয়েবহুক (সংক্ষেপে)API and webhooks (summary)

অন্য সাইট, মোবাইল অ্যাপ বা নিজের কোড থেকে পেমেন্ট নিতে 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 দিয়ে অবস্থা নিশ্চিত করুন।
  • API কী ও ওয়েবহুক সিক্রেট একবারই দেখানো হয়। সাইটে কী-এর শুধু হ্যাশ থাকে; সিক্রেট এনক্রিপ্ট করে রাখা হয়। একটি কী শুধু নিজের তৈরি পেমেন্টই পড়তে পারে।

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.

TaskRequestResult
Create a paymentPOST /wp-json/nfpay/v1/checkout
header X-NFP-API-KEY; body full_name, email, amount, metadata, redirect_url, cancel_url, webhook_url
payment_url and invoice_id
Verify a paymentPOST /wp-json/nfpay/v1/verify
body invoice_id
The payment status (COMPLETED, PENDING and so on)
  • When a payment is completed, a JSON POST is sent to your 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.
  • Even after a webhook, confirm the status with /verify before you deliver goods or services.
  • An API key and its webhook secret are shown only once. The site stores only a hash of the key; the secret is stored encrypted. A key can read only the payments it created.

কার্ড ও অনলাইন গেটওয়ে (Visa, Mastercard, PayPal)Cards and online gateways (Visa, Mastercard, PayPal)

মোবাইল ব্যাংকিংয়ের পাশাপাশি কার্ড (Visa, Mastercard, Amex), PayPal আর দেশি অনলাইন গেটওয়েও একই পেমেন্ট পেজে দেখানো যায়। কার্ডের নম্বর আপনার সাইটে কখনো আসে না: গ্রাহক প্রোভাইডারের নিজের নিরাপদ পেজে পেমেন্ট করেন, তারপর আপনার সাইটে ফিরে আসেন।

Providerযা নেয়কোথা থেকে কী পাবেনকোন মুদ্রায় চার্জ
Card (Stripe)Visa, Mastercard, Amex ও আন্তর্জাতিক কার্ডStripe Dashboard → Developers → API keys থেকে Secret key (sk_test_… বা sk_live_…)। Client ID লাগে না।সাইটের মুদ্রা, অথবা অন্য মুদ্রা + রেট
PayPalPayPal ব্যালান্স ও কার্ডdeveloper.paypal.com → Apps & Credentials → একটি App বানিয়ে Client ID ও SecretUSD (PayPal BDT নেয় না), সাথে রেট
SSLCommerzদেশি কার্ড, মোবাইল ব্যাংকিং, ইন্টারনেট ব্যাংকিংSSLCommerz থেকে দেওয়া Store ID ও Store Password (স্যান্ডবক্সের জন্য আলাদা)সবসময় BDT
aamarPayদেশি কার্ড, মোবাইল ব্যাংকিংaamarPay থেকে দেওয়া Store ID ও Signature Keyসবসময় BDT
  1. Nexora Pay → Setup → Gateways → Add gateway খুলুন।
  2. Provider থেকে Card (Stripe), PayPal, SSLCommerz বা aamarPay বেছে নিন। অ্যাকাউন্টের ধরন নিজে থেকেই "Online gateway" হয়ে যায়।
  3. Online gateway credentials অংশে Mode দিন: পরীক্ষার জন্য Sandbox (test), আসল টাকার জন্য Live। Stripe-এ মোড কী দেখে নিজেই বোঝা যায়।
  4. Client ID / Store ID আর Secret key / Store password ঘরে উপরের টেবিলের তথ্য বসান।
  5. সাইটের মুদ্রা BDT হলে আর PayPal বা অন্য মুদ্রায় চার্জ নিতে চাইলে Charge in currency-এ মুদ্রা (যেমন USD) আর Exchange rate-এ ১ ইউনিটে কত টাকা (যেমন 122) লিখুন।
  6. Display name (যেমন "Visa / Mastercard"), লোগো আর চাইলে Charge (%) দিন, তারপর Save and test connection চাপুন। সংযোগ ঠিক থাকলে সবুজ বার্তা আসে।
  • প্রোভাইডারের ড্যাশবোর্ডে কোনো webhook বা IPN URL বসাতে হয় না। গ্রাহক ফিরে এলে প্লাগইন নিজেই প্রোভাইডারের API থেকে ফলাফল যাচাই করে; কেউ মাঝপথে ব্রাউজার বন্ধ করলেও শেষ ২ দিনের খোলা পেমেন্ট নিয়মিত আবার যাচাই হয়।
  • ফেরার ঠিকানা আপনার সাইটের হোম পেজ (https://আপনার-সাইট/?nfpay_online=…)। কোনো প্রোভাইডার "allowed return URL" চাইলে সাইটের ডোমেইন দিন।
  • গেটওয়েটি পেমেন্ট পেজে তখনই দেখায় যখন কী সঠিক আর পেমেন্টের মুদ্রা সাইটের মুদ্রার সাথে মেলে।
পরামর্শ: Live করার আগে Sandbox মোডে একটি পুরো পেমেন্ট (পরীক্ষার কার্ড দিয়ে) করে দেখুন, অর্ডার বা ইনভয়েস Paid হচ্ছে কি না। তারপর Live কী বসিয়ে মোড বদলান।

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.

ProviderAcceptsWhere to get the credentialsCharged in
Card (Stripe)Visa, Mastercard, Amex and international cardsStripe 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
PayPalPayPal balance and cardsdeveloper.paypal.com → Apps & Credentials → create an app: Client ID and SecretUSD (PayPal does not take BDT), with a rate
SSLCommerzLocal cards, mobile banking, internet bankingThe Store ID and Store Password SSLCommerz gives you (separate ones for sandbox)Always BDT
aamarPayLocal cards, mobile bankingThe Store ID and Signature Key aamarPay gives youAlways BDT
  1. Open Nexora Pay → Setup → Gateways → Add gateway.
  2. Pick Card (Stripe), PayPal, SSLCommerz or aamarPay under Provider. The account type switches to "Online gateway" by itself.
  3. Under Online gateway credentials, set Mode: Sandbox (test) for testing, Live for real money. For Stripe the mode is read from the key.
  4. Fill Client ID / Store ID and Secret key / Store password from the table above.
  5. If your site currency is BDT and you charge PayPal (or any provider) in another currency, enter it under Charge in currency (for example USD) and how many Taka make 1 unit under Exchange rate (for example 122).
  6. Set a Display name (for example "Visa / Mastercard"), a logo and, if you like, a Charge (%), then press Save and test connection. A green message means the credentials work.
  • No webhook or IPN URL has to be entered in the provider's dashboard. When the customer returns, the plugin asks the provider's API for the result itself, and open online payments from the last 2 days are re-checked regularly in case someone closed the browser half-way.
  • The return address is your home page (https://your-site/?nfpay_online=…). If a provider asks for an allowed return URL, give your site's domain.
  • A gateway is shown on the payment page only when its credentials work and the payment currency matches the site currency.
Tip: before going live, make one complete payment in Sandbox mode (with a test card) and check that the order or invoice turns Paid. Then enter the live keys and switch the mode.

ব্যাংক জমা (স্বয়ংক্রিয় যাচাই, স্লিপ) ও PayoneerBank deposits (automatic check, slip) and Payoneer

যে মাধ্যমের এসএমএস বা API নেই, সেটি Bank transfer ধরনের গেটওয়ে হিসেবে যোগ করুন। গ্রাহক টাকা পাঠিয়ে রেফারেন্স নম্বর লেখেন বা জমার স্লিপ দেন, আর আপনি দেখে অনুমোদন করেন।

  1. Setup → Gateways → Add gateway খুলে Provider = Bank transfer দিন।
  2. Number / account number-এ অ্যাকাউন্ট নম্বর, আর Bank details-এ Bank name, Account holder, Branch / routing লিখুন।
  3. Bank verification অংশে চাইলে Allow deposit slip (৫ MB পর্যন্ত ছবি) চালু করুন। ব্যাংক যদি টাকা আসার এসএমএস পাঠায়, SMS sender IDs আর Last digits of the account in the SMS দিলে মিলে যাওয়া পেমেন্ট নিজে থেকেই নিশ্চিত হয়।
  4. Unique amount চালু করলে প্রতিটি পেমেন্টে কয়েক পয়সা/টাকা আলাদা অঙ্ক দেখানো হয়, ফলে একই অঙ্কের দুটি জমা আলাদা করা সহজ হয়।
  5. রেফারেন্স বা স্লিপ দিয়ে আসা পেমেন্ট Money → Payments-এ অপেক্ষায় থাকে; মিলিয়ে দেখে Complete করুন।

ব্যাংক জমা স্বয়ংক্রিয়ভাবে যাচাই (যেমন DBBL, 16216)

মোবাইল ব্যাংকিং যাচাই হয় গ্রাহকের নম্বর মিলিয়ে। ব্যাংকের SMS-এ সাধারণত পাঠানোর নম্বর থাকে না, তাই ব্যাংক জমা মেলানো হয় অঙ্ক, আপনার অ্যাকাউন্টের শেষ সংখ্যা আর সময় দিয়ে:

  1. যুক্ত ফোনের সিমে আপনার ব্যাংক অ্যাকাউন্টের SMS অ্যালার্ট চালু থাকতে হবে (DBBL-এর অ্যালার্ট আসে 16216 থেকে)।
  2. গেটওয়ের Bank verification-এ Preset থেকে ব্যাংক বেছে নিন, বা SMS sender IDs-এ নিজে লিখুন (DBBL: 16216)।
  3. Last digits of the account in the SMS-এ অ্যাকাউন্ট নম্বর দিন (পুরো নম্বর বা অন্তত শেষ ৩-৪ সংখ্যা)। SMS-এ যেভাবে লুকানো থাকুক (163***8660), শেষের সংখ্যা মিলিয়ে নেওয়া হয়। DBBL-এ এটি বাধ্যতামূলক, কারণ Rocket-এর SMS-ও 16216 থেকে আসে; অ্যাকাউন্ট নম্বর মিললে তবেই SMS-টি ব্যাংক জমা হিসেবে ধরা হয়, না মিললে Rocket পেমেন্ট হিসেবে।
  4. Unique amount চালু করুন আর Largest offset-এ 9 দিন। তাহলে একই সময়ে দুজন একই দামের অর্ডার দিলে দ্বিতীয়জনকে ১-৯ টাকা বেশি বা আলাদা অঙ্ক দেখানো হয় (যেমন ৬,৮৪০ আর ৬,৮৪৩), ফলে কোন জমা কার তা নিশ্চিতভাবে বোঝা যায়। ১-এর কম দিলে পয়সায় আলাদা হয়, যা ক্যাশ জমায় অসুবিধা।
  5. Waiting time for the SMS (যেমন ৬০ মিনিট) পর্যন্ত পেমেন্ট অপেক্ষা করে। গ্রাহক এর মধ্যে টাকা জমা দিলে ব্যাংকের SMS এলেই পেমেন্ট নিজে থেকে সম্পন্ন হয়।
  • পেমেন্ট নিজে থেকে সম্পন্ন হয় শুধু যখন ঠিক একটি অপেক্ষমাণ পেমেন্টের অঙ্ক SMS-এর অঙ্কের সাথে মেলে। একাধিক মিললে, বা অঙ্ক না মিললে, SMS-টি SMS & Devices-এ রিভিউতে যায়, আপনি হাতে মিলিয়ে নেন।
  • SMS-এ রেফারেন্স থাকলে আর গ্রাহকও রেফারেন্স লিখলে দুটো মিলতে হয়। গ্রাহক স্লিপ বা রেফারেন্স দিলে পেমেন্ট সময় পেরোলেও বাতিল হয় না, আপনার সিদ্ধান্তের অপেক্ষায় থাকে।

Payoneer যেভাবে যোগ করবেন

Payoneer-এর আলাদা API সংযোগ নেই; একে হাতে যাচাইয়ের মাধ্যম হিসেবে চালান:

  • Provider = Bank transfer, Display name = Payoneer, আর Payoneer-এর লোগো দিন।
  • Number / account number-এ আপনার Payoneer অ্যাকাউন্টের ইমেইল বা রিসিভিং অ্যাকাউন্ট নম্বর লিখুন।
  • Extra instructions-এ লিখুন কীভাবে পাঠাতে হবে (যেমন "Payoneer থেকে এই ইমেইলে Request/Send করুন, তারপর Transaction ID লিখুন")।
  • টাকা Payoneer-এ পৌঁছালে পেমেন্টটি হাতে Complete করুন। সাধারণত USD-তে নেন বলে Minimum amount ঠিক করে দিন।
হাতে যাচাইয়ের পেমেন্ট নিজে থেকে নিশ্চিত হয় না। টাকা অ্যাকাউন্টে আসার আগে কখনো Complete করবেন না।

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.

  1. Open Setup → Gateways → Add gateway and set Provider = Bank transfer.
  2. Enter the account number under Number / account number, and Bank name, Account holder and Branch / routing under Bank details.
  3. Under Bank verification, turn on Allow deposit slip (images up to 5 MB) if you want. If your bank sends an SMS for incoming money, fill SMS sender IDs and Last digits of the account in the SMS and matching payments confirm themselves.
  4. Unique amount shows each payment a slightly different total, so two deposits of the same price are easy to tell apart.
  5. Payments sent with a reference or slip wait under Money → Payments; check them and press Complete.

Verifying bank deposits automatically (for example DBBL, 16216)

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:

  1. The SIM in the paired phone must receive your bank account's SMS alerts (DBBL alerts come from 16216).
  2. Under the gateway's Bank verification, pick the bank under Preset, or type it under SMS sender IDs (DBBL: 16216).
  3. Enter the account number under Last digits of the account in the SMS (the whole number or at least the last 3-4 digits). However the SMS masks it (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.
  4. Turn on Unique amount with 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.
  5. The payment waits for the Waiting time for the SMS (for example 60 minutes). If the customer deposits within it, the payment completes by itself when the bank SMS arrives.
  • A payment completes by itself only when exactly one waiting payment has the credited amount. If several fit, or none, the SMS goes to review under SMS & Devices for you to match by hand.
  • When both the SMS and the customer give a reference, they must match. A payment with a slip or reference does not expire; it waits for your decision.

Adding Payoneer

Payoneer has no API connection here; run it as a hand-checked method:

  • Provider = Bank transfer, Display name = Payoneer, with the Payoneer logo.
  • Put your Payoneer account e-mail or receiving account number in Number / account number.
  • Explain how to pay under Extra instructions (for example "Send to this e-mail from Payoneer, then enter the Transaction ID").
  • Complete the payment by hand once the money is in Payoneer. As it is usually taken in USD, set a Minimum amount.
Hand-checked payments never confirm themselves. Never press Complete before the money is in your account.

যেকোনো ফর্মে পেমেন্ট (CF7, WPForms, Elementor …)Payments in any form (CF7, WPForms, Elementor …)

WooCommerce ছাড়াই সার্ভিস বিজনেস, অর্ডার ফর্ম, ভর্তি বা বুকিং ফর্ম থেকে টাকা নিতে পারবেন। ফর্ম সাবমিট হলেই গ্রাহক সরাসরি Nexora Pay-এর পেমেন্ট পেজে চলে যান। সমর্থিত: Contact Form 7, WPForms, Elementor Pro Form, Gravity Forms, Fluent Forms।

  1. Nexora Pay → Integrations → Forms & Pay button খুলে Connect a form চাপুন।
  2. Form plugin বেছে নিন আর Form ID দিন:
    • Contact Form 7: শর্টকোডের [contact-form-7 id="…"]-এর id (সংখ্যা বা ৭ অক্ষরের কোড, দুটোই চলে)।
    • WPForms, Gravity, Fluent: ফর্মের ID।
    • Elementor: Form widget-এর Form Name।
  3. Amount: সব সাবমিশনে একই দাম হলে Fixed amount দিয়ে Fixed amount (BDT) লিখুন। প্যাকেজ বা দাম ফর্ম থেকে এলে From a form field বেছে Amount field-এ সেই ফিল্ডের নাম/ID/লেবেল দিন। "1,500 Tk" বা বাংলা সংখ্যাও পড়া যায়।
  4. Name field, E-mail field, Phone field-এ ফর্মের সংশ্লিষ্ট ফিল্ডের নাম দিন (যেমন CF7-এ your-name, your-email, your-phone)।
  5. Payment description, পেমেন্টের পর কোথায় যাবে (After payment go to) আর Brand দিন, On টিক দিয়ে সেভ করুন।
  6. ফর্মটি একবার পূরণ করে পরীক্ষা করুন: সাবমিটের পর পেমেন্ট পেজ খুললে সংযোগ ঠিক আছে।
  • ফর্ম এন্ট্রির নম্বর পেমেন্টের সাথে সংরক্ষিত থাকে (Money → Payments-এ দেখা যায়), তাই কোন এন্ট্রির টাকা এসেছে মিলিয়ে নিতে পারবেন। ফর্ম প্লাগইনের নিজের এন্ট্রি তালিকায় "Paid" লেখা বসে না।
  • ডেভেলপাররা nfp_form_payment_created আর nfp_payment_completed হুক দিয়ে নিজের কাজ (ইমেইল, CRM) যোগ করতে পারেন।

Pay বাটন (ফর্ম ছাড়াই)

যেকোনো পেজ, পোস্ট বা 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.

  1. Open Nexora Pay → Integrations → Forms & Pay button and press Connect a form.
  2. Pick the Form plugin and enter the Form ID:
    • Contact Form 7: the id in [contact-form-7 id="…"] (the number or the 7-character code both work).
    • WPForms, Gravity, Fluent: the form ID.
    • Elementor: the Form Name of the Form widget.
  3. Amount: if every submission costs the same, choose 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.
  4. Fill Name field, E-mail field and Phone field with the form's field names (for example your-name, your-email, your-phone in CF7).
  5. Set the Payment description, where to go after paying (After payment go to) and the Brand, tick On and save.
  6. Test it once: if the payment page opens after you submit, the connection works.
  • The form entry number is stored with the payment (visible under Money → Payments), so you can tell which entry has paid. The form plugin's own entry list does not show "Paid".
  • Developers can hook their own steps (e-mail, CRM) into nfp_form_payment_created and nfp_payment_completed.

Pay button (no form)

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.

বুকিং: Calendly, Amelia ও পেমেন্ট লিংকBooking: Calendly, Amelia and payment links

পেমেন্ট লিংক তৈরি

  1. Nexora Pay → Money → Payment Links → New payment link খুলুন।
  2. Title, Description আর Brand দিন। দাম ঠিক থাকলে Fixed amount, গ্রাহক নিজে অঙ্ক দেবেন এমন হলে The customer decides (চাইলে Minimum / Maximum)।
  3. Active টিক দিয়ে Create payment link চাপুন, তারপর Copy link। লিংকটি দেখতে https://আপনার-সাইট/?nfpay_link=…।

লিংকে নাম, ইমেইল, ফোন আগেই বসিয়ে দেওয়া যায়: ?nfpay_link=…&name=Rahim&email=a@b.com&phone=017…। খোলা অঙ্কের লিংকে &amount=1500-ও চলে। Facebook, WhatsApp, ইমেইল বা SMS-এ লিংকটি পাঠিয়ে দিলেই হয়।

Calendly

  1. Calendly-তে Event type খুলে Booking page options → Confirmation page-এ যান।
  2. Redirect to an external site বেছে নিন আর উপরের পেমেন্ট লিংকটি বসান।
  3. Pass event details to your redirected page টিক দিন। এতে অতিথির নাম ও ইমেইল (invitee_full_name, invitee_email) নিজে থেকে পেমেন্ট পেজে বসে যায়।

Amelia, Bookly ও অন্য বুকিং প্লাগইন

এই প্লাগইনগুলো WooCommerce দিয়ে পেমেন্ট নিতে পারে। প্লাগইনের সেটিংসে WooCommerce payment চালু করুন; WooCommerce-এ Nexora Pay গেটওয়ে (WooCommerce → Settings → Payments → Nexora Pay) চালু থাকলে বুকিংয়ের চেকআউটে bKash, Nagad, কার্ড সবই দেখা যাবে। WooCommerce না থাকলে বুকিং কনফার্মেশনে উপরের পেমেন্ট লিংক ব্যবহার করুন।

Creating a payment link

  1. Open Nexora Pay → Money → Payment Links → New payment link.
  2. Enter a Title, Description and Brand. Choose Fixed amount for a set price, or The customer decides (with an optional Minimum / Maximum).
  3. Tick Active, press Create payment link, then Copy link. It looks like 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.

Calendly

  1. In Calendly, open the Event type and go to Booking page options → Confirmation page.
  2. Choose Redirect to an external site and paste the payment link.
  3. Tick Pass event details to your redirected page. The invitee's name and e-mail (invitee_full_name, invitee_email) are then filled in on the payment page.

Amelia, Bookly and other booking plugins

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 স্টোর (WordPress ছাড়াও): ধাপে ধাপে পুরো সেটআপShopify stores (also without WordPress): full step-by-step setup

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 দিয়ে।

  1. গ্রাহক Shopify চেকআউটে bKash / Nagad / Rocket (Nexora Pay) বেছে অর্ডার দেন। অর্ডার থাকে "Payment pending"।
  2. অর্ডার কনফার্মেশন ইমেইলে একটি Pay now বাটন যায়।
  3. বাটন চাপলে আপনার Nexora Pay-এর পেমেন্ট পেজ খোলে, অঙ্ক Shopify থেকে নিজে আসে।
  4. গ্রাহক টাকা পাঠান, আপনার ফোনের Nexora Pay অ্যাপ SMS মিলিয়ে পেমেন্ট যাচাই করে।
  5. Nexora Pay Shopify-তে অর্ডারটি Paid করে দেয়।

যা লাগবে

জিনিসবিস্তারিত
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)।

ধাপ ১: Nexora Pay Standalone বসানো (WordPress না থাকলে)

উদাহরণ Hostinger-এর; cPanel-এও নাম প্রায় একই।

  1. সাবডোমেইন: hPanel → Websites → Create site → PHP/HTML website → সাবডোমেইন লিখুন, যেমন pay.your-domain.com → সাজেশনটি বেছে Next। (cPanel: Domains → Create a new domain।)
  2. ফাইল আপলোড: Upload website files → Next → Upload চেপে 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।)
  3. ডাটাবেস: Websites → (সাবডোমেইন) → Databases → Management → Database name ও Username দিন (যেমন nxpay), একটি শক্ত Password দিয়ে Create। পুরো নাম তালিকায় দেখাবে, যেমন u123456789_nxpay; এটাই পরের ধাপে লাগবে। পাসওয়ার্ড লিখে রাখুন।
  4. Install: ব্রাউজারে 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।
  5. লগইন: https://pay.your-domain.com/admin.php-এ অ্যাডমিন ইউজারনেম ও পাসওয়ার্ড দিয়ে ঢুকুন।
  6. লাইসেন্স: ড্যাশবোর্ডের Activate licence (বা License) → License key ও Secret key পেস্ট → Activate। উপরে সবুজ "Licence active" দেখাবে।
  7. গেটওয়ে: Gateways → Add gateway → Provider (bKash / Nagad / Rocket / Upay), Account type (Personal / Agent / Merchant), নম্বর (01XXXXXXXXX), Display name → Add gateway।
  8. ফোন সংযোগ: SMS & Devices → Connect app-এ QR কোড আসবে। ফোনে Nexora Pay অ্যাপ খুলে QR স্ক্যান করুন। উপরে "Phone online" দেখালে ঠিক আছে।
  9. নিরাপত্তার জন্য সার্ভার থেকে install.php মুছে দিন, আর Standalone পেজে SMTP ইমেইল ও ৫ মিনিটের cron চালু করুন।
WordPress সাইট থাকলে ধাপ ১-এর বদলে সেই সাইটে Nexora Forward Pay প্লাগইন বসান; নিচের ধাপগুলো একই, শুধু ঠিকানা হবে আপনার WordPress সাইটের।

ধাপ ২: Shopify-তে পেমেন্ট মেথড

  1. Shopify Admin → Settings → Payments → Manual payment methods → + Manual payment method → Create custom payment method।
  2. Custom payment method name: bKash / Nagad / Rocket (Nexora Pay)। নামে Nexora শব্দটি থাকতেই হবে (ইমেইলের বাটন এই শব্দ দেখে দেখানো হয়)।
  3. Additional details (চেকআউটে দেখায়), যেমন: "বিকাশ, নগদ, রকেট বা উপায় দিয়ে পেমেন্ট করুন। অর্ডারের পর পেমেন্ট পেজ খুলবে, পেমেন্ট সাথে সাথে অটো যাচাই হবে।"
  4. Payment instructions (অর্ডারের পর দেখায়), যেমন: "ইমেইলের Pay now বাটনে চাপ দিয়ে পেমেন্ট সম্পন্ন করুন। পেমেন্ট হলে অর্ডার নিজে থেকেই Paid হবে।"
  5. Activate চাপুন।

ধাপ ৩: Shopify অ্যাপ বানিয়ে Client ID ও Client secret নেওয়া

১ জানুয়ারি ২০২৬ থেকে Shopify-তে পুরনো "Develop apps" দিয়ে নতুন অ্যাপ বানানো যায় না; এখন Dev Dashboard ব্যবহার করতে হয়।

  1. Shopify Admin → Settings → Apps → Develop apps → Build apps in Dev Dashboard (বা সরাসরি dev.shopify.com/dashboard, একই Shopify লগইনে)।
  2. Create an app → App name: Nexora Pay।
  3. App URL: আপনার Nexora Pay-এর ঠিকানা (যেমন https://pay.your-domain.com)। Embed app in Shopify admin-এর টিক তুলে দিন।
  4. Scopes: read_orders,write_orders।
  5. উপরে ডানে Create app → Release।
  6. Apps তালিকায় Nexora Pay-এর পাশে ⋮ → Install app → আপনার স্টোর বেছে নিন → Install। ("This app hasn't been reviewed" দেখাবে; এটা আপনার নিজের অ্যাপ, সমস্যা নেই।)
  7. অ্যাপ → App settings → Client ID ও Client secret কপি করুন। Client secret কাউকে দেবেন না।

ধাপ ৪: Nexora Pay-তে Shopify সংযোগ

  1. Nexora Pay অ্যাডমিন → Integrations → Shopify (Standalone-এ admin.php?page=nexora-pay&tab=forms&sub=shopify)।
  2. Shop domain: your-store.myshopify.com (Shopify Settings-এ স্টোরের নামের নিচে দেখায়)।
  3. Client ID ও Client secret পেস্ট করুন। Legacy access token ফাঁকা রাখুন।
  4. Shopify connection on টিক দিয়ে Save and test। "Saved. Connected to "আপনার স্টোর" (currency BDT)" দেখালে সংযোগ ঠিক আছে। Nexora Pay ২৪ ঘণ্টার টোকেন নিজেই আনে ও নবায়ন করে।

ধাপ ৫: অর্ডার ইমেইলে Pay now বাটন

  1. Shopify Admin → Settings → Notifications → Customer notifications → Order confirmation → Edit code।
  2. Email body (HTML)-এ এই লাইনটি খুঁজুন (Ctrl+F): <p>{{ email_body }}</p>
  3. Nexora Pay অ্যাডমিন → Integrations → Shopify পেজের নিচে "Order e-mail snippet" বক্সে আপনার সাইটের জন্য তৈরি কোড থাকে (ঠিকানা আর আপনার গোপন কী আগে থেকেই বসানো)। Copy snippet চাপুন।
  4. Shopify-র ওই লাইনের ঠিক পরের লাইনে কোডটি পেস্ট করুন। নিজে কিছু বদলাবেন না। নিচের কোডটি শুধু দেখতে কেমন তার নমুনা; SECRET-এর জায়গায় আপনার অ্যাডমিনে আসল ৩২ অক্ষরের কী থাকে।
  5. উপরে Save চাপুন। "Notification template saved" দেখাবে।
{% 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" শব্দটি ধাপ ২-এর পেমেন্ট মেথডের নামে থাকতে হবে; অন্য পেমেন্ট মেথডের অর্ডারে বাটন দেখাবে না।
  • অর্ডার আগেই Paid হলে বাটন দেখাবে না।
  • k= অংশে অর্ডার নম্বর আর আপনার গোপন কী মিলিয়ে বানানো হ্যাশ থাকে। কী শুধু আপনার সার্ভারে থাকে, তাই অন্যের অর্ডার নম্বর বসিয়ে কেউ পেমেন্ট পেজ খুলতে পারে না। কাস্টমারের ইমেইল বা ফোন লাগে না, তাই Shopify-র "protected customer data" অনুমতি ছাড়াই চলে।
  • পুরনো কোড (যেখানে nx_mail আছে) বসানো থাকলে সেটা মুছে নতুনটা দিন। পুরনো লিংকগুলোও কিছুদিন চলবে।

ধাপ ৬: টেস্ট অর্ডার

  1. স্টোরে একটি কম দামের প্রোডাক্ট দিয়ে অর্ডার দিন, পেমেন্ট মেথড bKash / Nagad / Rocket (Nexora Pay)।
  2. অর্ডার কনফার্মেশন ইমেইলে Pay now চাপুন: আপনার Nexora Pay-এর পেমেন্ট পেজ খুলবে, অঙ্ক Shopify থেকে আসবে।
  3. পেমেন্ট করুন। ফোনের অ্যাপ SMS পেলে পেমেন্ট Completed হবে, আর Shopify-তে অর্ডার Paid হবে।
  4. ইমেইল ছাড়াই পরীক্ষা: Shopify-তে Orders → Create order → প্রোডাক্ট ও কাস্টমার দিন → Payment due later টিক → Create order। তারপর অর্ডার পেজে More actions → Resend confirmation দিয়ে নিজের ইমেইলে পাঠিয়ে Pay now চাপুন।
  5. TrxID লাগে না: কাস্টমার যে নম্বর থেকে টাকা পাঠাবেন সেটা পেমেন্ট পেজে দেন; SMS এলে নম্বর আর অঙ্ক মিলিয়ে পেমেন্ট নিজে থেকেই Completed হয়। TrxID ঘরটা ঐচ্ছিক।

সমস্যা হলে

যা দেখছেনসমাধান
"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 আছে কিনা দেখুন।
  • একটি Nexora Pay = একটি Shopify স্টোর। প্রতিটি গ্রাহক নিজের Nexora Pay (নিজের লাইসেন্স, নিজের নম্বর, নিজের ফোন) চালান এবং নিজের Client ID / secret বসান; কারও তথ্য অন্যের সাথে মেশে না।
  • একই স্টোর দুটি Nexora Pay-এর সাথে একসাথে জোড়া রাখবেন না; পুরনোটিতে "Shopify connection on" বন্ধ করুন।
  • অর্ডার Paid করার সফল বা ব্যর্থ চেষ্টা Security → Activity log-এ থাকে।

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.

How it works

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.

  1. The customer picks bKash / Nagad / Rocket (Nexora Pay) at the Shopify checkout. The order waits as "Payment pending".
  2. The order confirmation e-mail carries a Pay now button.
  3. The button opens your Nexora Pay payment page; the amount comes from Shopify.
  4. The customer sends the money; the Nexora Pay app on your phone matches the SMS and confirms the payment.
  5. Nexora Pay marks the order Paid in Shopify.

What you need

ItemDetails
Shopify storeOn 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 licenceLicense key + Secret key (in your purchase e-mail and on the thank-you page).
Payment serverA 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 phoneThe phone with the receiving SIM, running the Nexora Pay app (APK).

Step 1: Install Nexora Pay Standalone (when you have no WordPress)

The example uses Hostinger; cPanel names are almost the same.

  1. Subdomain: hPanel → Websites → Create site → PHP/HTML website → type a subdomain such as pay.your-domain.com → pick the suggestion → Next. (cPanel: Domains → Create a new domain.)
  2. Upload: Upload website files → Next → Upload 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.)
  3. Database: Websites → (subdomain) → Databases → Management → enter a Database name and Username (e.g. nxpay), a strong Password → Create. The list shows the full names, such as u123456789_nxpay; you need those next. Note the password.
  4. Install: open 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.
  5. Log in at https://pay.your-domain.com/admin.php.
  6. Licence: Activate licence on the dashboard (or License) → paste the License key and Secret key → Activate. "Licence active" turns green.
  7. Gateway: Gateways → Add gateway → Provider (bKash / Nagad / Rocket / Upay), Account type (Personal / Agent / Merchant), number (01XXXXXXXXX), Display name → Add gateway.
  8. Phone: SMS & Devices → Connect app shows a QR code; scan it with the Nexora Pay app. "Phone online" appears.
  9. For safety delete install.php from the server, and set up SMTP e-mail and the 5-minute cron on the Standalone page.
With a WordPress site, install the Nexora Forward Pay plugin there instead of step 1; the steps below are the same, the address is just your WordPress site.

Step 2: Payment method in Shopify

  1. Shopify admin → Settings → Payments → Manual payment methods → + Manual payment method → Create custom payment method.
  2. Custom payment method name: bKash / Nagad / Rocket (Nexora Pay). The word Nexora must be in the name (the e-mail button looks for it).
  3. Additional details (shown at checkout), e.g. "Pay with bKash, Nagad, Rocket or Upay. After the order a payment page opens and the payment is verified instantly."
  4. Payment instructions (shown after the order), e.g. "Press Pay now in the e-mail to complete the payment. The order turns Paid by itself."
  5. Press Activate.

Step 3: Create the Shopify app and get the Client ID and Client secret

Since 1 January 2026 Shopify no longer allows new "Develop apps" apps; use the Dev Dashboard.

  1. Shopify admin → Settings → Apps → Develop apps → Build apps in Dev Dashboard (or dev.shopify.com/dashboard with the same Shopify login).
  2. Create an app → App name: Nexora Pay.
  3. App URL: your Nexora Pay address (e.g. https://pay.your-domain.com). Untick Embed app in Shopify admin.
  4. Scopes: read_orders,write_orders.
  5. Top right Create app → Release.
  6. In Apps, the ⋮ next to Nexora Pay → Install app → pick your store → Install. ("This app hasn't been reviewed" is shown; it is your own app.)
  7. App → App settings → copy the Client ID and Client secret. Never share the Client secret.

Step 4: Connect Shopify in Nexora Pay

  1. Nexora Pay admin → Integrations → Shopify (Standalone: admin.php?page=nexora-pay&tab=forms&sub=shopify).
  2. Shop domain: your-store.myshopify.com (shown under the store name in Shopify Settings).
  3. Paste the Client ID and Client secret. Leave Legacy access token empty.
  4. Tick Shopify connection on → Save and test. "Saved. Connected to "your store" (currency BDT)" means it works. Nexora Pay fetches and renews the 24-hour token itself.

Step 5: Pay now button in the order e-mail

  1. Shopify admin → Settings → Notifications → Customer notifications → Order confirmation → Edit code.
  2. In Email body (HTML) find (Ctrl+F): <p>{{ email_body }}</p>
  3. In Nexora Pay admin → Integrations → Shopify, the "Order e-mail snippet" box holds the code made for your site (your address and secret key already filled in). Press Copy snippet.
  4. Paste it on the next line in Shopify without changing anything. The code below only shows the shape; your admin has your real 32-character key where it says SECRET.
  5. Press Save. "Notification template saved" appears.
{% 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 %}
  • The word "Nexora" must be in the step 2 method name; orders paid another way get no button.
  • No button once the order is already paid.
  • The 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.
  • If the old code (with nx_mail) is in place, replace it with the new one. Old links keep working for a while.

Step 6: Test order

  1. Order a cheap product in your store with bKash / Nagad / Rocket (Nexora Pay).
  2. Press Pay now in the confirmation e-mail: your Nexora Pay payment page opens with the amount from Shopify.
  3. Pay. When the phone app receives the SMS the payment is Completed and the Shopify order turns Paid.
  4. Without e-mail: Shopify Orders → Create order → product and customer → tick Payment due later → Create order, then on the order page use More actions → Resend confirmation to your own e-mail and press Pay now.
  5. No TrxID needed: the customer enters the number they pay from; when the SMS arrives the number and amount are matched and the payment completes by itself. The TrxID field is optional.

Troubleshooting

You seeFix
"You've reached the limit for development store orders…"The store is on a trial. Choose a Shopify plan.
Save and test does not connectUse 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-mailCheck 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 mismatchSet both the Shopify store and Nexora Pay to BDT.
Paid but not Paid in ShopifyLook for "Shopify did not mark the order as paid" in the payment's log; check the write_orders scope.
  • One Nexora Pay = one Shopify store. Every merchant runs their own Nexora Pay (own licence, numbers and phone) with their own Client ID / secret; nothing is shared.
  • Do not connect one store to two Nexora Pay installs; switch "Shopify connection on" off in the old one.
  • Every attempt to mark an order paid, successful or not, is written to Security → Activity log.

WHMCS (হোস্টিং বিলিং)WHMCS (hosting billing)

  1. WordPress-এ Nexora Pay → Developers → API Keys থেকে একটি কী তৈরি করুন (Label: "WHMCS")। API key (nfp_live_…) আর Webhook secret (whsec_…) এখনই কপি করে রাখুন, পরে আর দেখা যায় না।
  2. Integrations → Other platforms → WHMCS gateway module থেকে Download চেপে whmcs-nexorapay.zip নামান।
  3. ZIP খুলে ফাইল দুটো WHMCS-এর মূল ফোল্ডারে একই পথে রাখুন: modules/gateways/nexorapay.php আর modules/gateways/callback/nexorapay.php।
  4. WHMCS Admin → Setup → Payments → Payment Gateways → All Payment Gateways-এ Nexora Pay চালু করুন।
  5. Nexora Pay site URL (আপনার WordPress সাইটের ঠিকানা), API key আর Webhook secret বসিয়ে সেভ করুন।

এরপর ইনভয়েসের Pay now চাপলে গ্রাহক Nexora Pay পেমেন্ট পেজে যান; পেমেন্ট নিশ্চিত হলে WHMCS-এ ইনভয়েস নিজে থেকেই Paid হয়। Callback ঠিকানা (…/modules/gateways/callback/nexorapay.php) মডিউল নিজেই পাঠায়, WordPress-এ আলাদা করে বসাতে হয় না।

  1. In WordPress, create a key under Nexora Pay → Developers → API Keys (Label: "WHMCS"). Copy the API key (nfp_live_…) and Webhook secret (whsec_…) now; they are not shown again.
  2. Under Integrations → Other platforms → WHMCS gateway module, press Download to get whmcs-nexorapay.zip.
  3. Unzip it and put both files at the same paths in your WHMCS root: modules/gateways/nexorapay.php and modules/gateways/callback/nexorapay.php.
  4. In WHMCS admin, turn on Nexora Pay under Setup → Payments → Payment Gateways → All Payment Gateways.
  5. Enter the Nexora Pay site URL (your WordPress site), the API key and the Webhook secret, and save.

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.

aMember Pro (মেম্বারশিপ)aMember Pro (memberships)

  1. WHMCS-এর মতোই Developers → API Keys থেকে একটি কী তৈরি করে API key ও Webhook secret কপি করুন।
  2. Integrations → Other platforms থেকে aMember প্লাগইন ফাইল nexorapay.php নামিয়ে রাখুন amember/application/default/plugins/payment/nexorapay.php পথে।
  3. aMember Admin → Setup/Configuration → Plugins-এ Payment plugins থেকে Nexora Pay চালু করুন।
  4. প্লাগইনের সেটিংসে Nexora Pay site URL, API key আর Webhook secret দিয়ে সেভ করুন।
  • BDT ও USD মুদ্রা চলে। প্রতিটি পেমেন্ট আলাদা (রিকারিং/অটো-রিনিউ নয়)। এই সংযোগটি এখনো BETA।
  • IPN ঠিকানা প্লাগইন নিজেই পাঠায়; সিগনেচার (X-NFP-Signature) আর অঙ্ক মিলিয়ে তবেই অ্যাক্সেস চালু হয়।
  1. As with WHMCS, create a key under Developers → API Keys and copy the API key and Webhook secret.
  2. Download the aMember plugin file nexorapay.php from Integrations → Other platforms and put it at amember/application/default/plugins/payment/nexorapay.php.
  3. In aMember admin, enable Nexora Pay among the payment plugins under Setup/Configuration → Plugins.
  4. Enter the Nexora Pay site URL, API key and Webhook secret in the plugin settings and save.
  • BDT and USD are supported. Each payment is one-off (not recurring/auto-renew). This connection is still BETA.
  • The plugin sends its own IPN address; access is granted only after the signature (X-NFP-Signature) and the amount check out.

WordPress ছাড়া: কাস্টম সাইট, PHP স্ক্রিপ্ট (Nexora Pay Standalone)Without WordPress: custom site, PHP script (Nexora Pay Standalone)

আপনার সাইট 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.zipnexora-pay-standalone-x.zip
লাইসেন্স, APK, পেমেন্ট পেজ, অ্যাডমিন প্যানেলএকই
WooCommerce অর্ডারসরাসরিনেই (আপনার সাইট SDK/API দিয়ে যুক্ত হয়)
আপডেটPlugins পেজে এক ক্লিকেLicense → Updates-এ এক ক্লিকে

যা লাগবে

  • PHP 7.4 বা নতুন (curl, openssl, mbstring, mysqli; এক-ক্লিক আপডেটের জন্য zip)। সাধারণ cPanel হোস্টিংয়ে সবই থাকে।
  • একটি খালি MySQL / MariaDB ডাটাবেস।
  • HTTPS (SSL): ফোনের অ্যাপ শুধু https ঠিকানায় কানেক্ট হয়।
  • যে অ্যান্ড্রয়েড ফোনে পেমেন্টের SMS আসে।

ধাপে ধাপে সেটআপ (১০ মিনিট)

  1. এই পাতার ডাউনলোড অংশ থেকে Standalone ZIP আর APK নামান (যে অ্যাকাউন্ট দিয়ে কিনেছেন সেটিতে লগইন থাকতে হবে)।
  2. cPanel → File Manager-এ public_html-এ ZIP আপলোড করে Extract করুন। nexora-pay ফোল্ডারের নাম চাইলে pay রাখুন; ঠিকানা হবে https://your-site.com/pay। আলাদা সাবডোমেইনেও (যেমন pay.your-site.com) রাখা যায়।
  3. cPanel → MySQL Databases-এ একটি ডাটাবেস আর ইউজার বানিয়ে ইউজারকে ডাটাবেসে ALL PRIVILEGES দিন।
  4. ব্রাউজারে https://your-site.com/pay/install.php খুলে ডাটাবেসের তথ্য, ব্যবসার নাম আর অ্যাডমিন ইউজারনেম/পাসওয়ার্ড দিন → Install।
  5. https://your-site.com/pay/admin.php-এ লগইন করুন। WordPress-এর মতোই পুরো Nexora Pay প্যানেল দেখবেন।
  6. License: কেনার মেইলের License Key ও Secret Key বসিয়ে Activate করুন। লাইসেন্স এই ডোমেইনে বসে।
  7. Gateways: আপনার বিকাশ / নগদ / রকেট / উপায় নম্বর যোগ করুন (Personal, Agent বা Merchant)।
  8. SMS & Devices → Connect app: ফোনে APK ইনস্টল করে অ্যাপ থেকে QR কোড স্ক্যান করুন। ফোন অনলাইন দেখালে কানেক্ট হয়ে গেছে।
  9. Standalone: SMTP (হোস্টিংয়ের মেইল বা Gmail) সেট করে Send test দিন, আর cPanel → Cron Jobs-এ ৫ মিনিট পরপর এই কমান্ড দিন: php /home/USER/public_html/pay/cron.php।
  10. সার্ভার থেকে install.php মুছে দিন।

আপনার সাইটকে যুক্ত করা

  1. Developers → API Keys → Create key: Key আর Webhook secret কপি করুন (একবারই দেখায়)।
  2. Developers → Integrations & Docs থেকে PHP SDK নামিয়ে আপনার সাইটে রাখুন, config.php-তে Standalone ফোল্ডারের ঠিকানা (যেমন https://your-site.com/pay), Key ও Secret বসান।
  3. চেকআউটে পেমেন্ট তৈরি করে গ্রাহককে পেমেন্ট পেজে পাঠান; ফেরত পেজ আর webhook-এ isPaid() দিয়ে নিশ্চিত হয়ে অর্ডার Paid করুন (নিচের "PHP SDK" অংশে কোড আছে)।
  • কোড ছাড়া: Payment Links থেকে লিংক বানিয়ে যেকোনো "Pay now" বাটনে বসান।
  • Shopify: Integrations → Shopify। পুরো ধাপে ধাপে গাইড: Shopify স্টোর।
  • WHMCS / aMember: মডিউলের "site URL" ঘরে Standalone-এর API ঠিকানা দিন (Standalone → System check-এ লেখা থাকে, যেমন https://your-site.com/pay/api/nfpay/v1)।
  • অন্য ভাষা (Node, Python, .NET, মোবাইল অ্যাপ): একই API ঠিকানায় /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=…
Cronphp …/pay/cron.php অথবা Standalone-এ দেওয়া cron URL

আপডেট ও নিরাপত্তা

  • নতুন ভার্সন এলে License → Updates → Install update now। ফাইল লাইসেন্স সার্ভার থেকে নামে, চেকসাম মিলিয়ে বসে, আগের ভার্সন nfp-backup-… ফোল্ডারে থাকে। ডাটা ও সেটিংস যা ছিল তাই থাকে।
  • config.php-তে ডাটাবেসের পাসওয়ার্ড ও NFP_SA_SALT থাকে (সংরক্ষিত গোপন তথ্য এটি দিয়ে এনক্রিপ্ট হয়)। ব্যাকআপ রাখুন, SALT কখনো বদলাবেন না।
  • পাসওয়ার্ড ভুলে গেলে সার্ভারে: php reset-password.php ইউজারনেম নতুনপাসওয়ার্ড।
  • Apache/LiteSpeed-এ সঙ্গের .htaccess কাজ করে। nginx হলে ZIP-এর nginx.conf.sample দেখুন।
প্রশ্ন: "আপনাদের সার্ভিস কি Self Hosted? নিজের হোস্টিংয়ে সেটআপ করা যাবে? WordPress ছাড়া সম্ভব?" উত্তর: হ্যাঁ। WordPress থাকলে প্লাগইন, না থাকলে Standalone। দুটোই আপনার নিজের হোস্টিংয়ে চলে; টাকা সরাসরি আপনার নিজের নম্বরে আসে।

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 pluginStandalone
Runson your WordPress sitein a folder on any PHP hosting (e.g. your-site.com/pay)
Filenexora-forward-pay-x.zipnexora-pay-standalone-x.zip
Licence, APK, payment page, admin panelthe same
WooCommerce ordersbuilt inno (your site connects through the SDK / API)
Updatesone click on the Plugins screenone click under License → Updates

You need

  • PHP 7.4 or newer (curl, openssl, mbstring, mysqli; zip for one-click updates). Normal cPanel hosting has all of these.
  • One empty MySQL / MariaDB database.
  • HTTPS (SSL): the phone app only connects to https addresses.
  • The Android phone that receives the payment SMS.

Set-up, step by step (10 minutes)

  1. Get the Standalone ZIP and the APK from the download section of this page (logged in with the account you bought with).
  2. cPanel → File Manager: upload the ZIP to 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.
  3. cPanel → MySQL Databases: create a database and a user, and give the user ALL PRIVILEGES on it.
  4. Open https://your-site.com/pay/install.php, enter the database details, your business name and an admin username / password → Install.
  5. Log in at https://your-site.com/pay/admin.php. You get the full Nexora Pay panel, as in WordPress.
  6. License: enter the License Key and Secret Key from your purchase e-mail and activate. The licence is bound to this domain.
  7. Gateways: add your bKash / Nagad / Rocket / Upay numbers (personal, agent or merchant).
  8. SMS & Devices → Connect app: install the APK on the phone and scan the QR code from the app. When the phone shows online, it is connected.
  9. Standalone: set up SMTP (your hosting mail or Gmail) and press Send test; in cPanel → Cron Jobs add, every 5 minutes: php /home/USER/public_html/pay/cron.php.
  10. Delete install.php from the server.

Connect your website

  1. Developers → API Keys → Create key: copy the key and the webhook secret (shown once).
  2. Download the PHP SDK under Developers → Integrations & Docs, put it on your site and fill in config.php with the Standalone folder address (e.g. https://your-site.com/pay), the key and the secret.
  3. At checkout create a payment and send the customer to the payment page; on the return page and in the webhook confirm with isPaid() before marking the order paid (code in "PHP SDK" below).
  • No code: create a link under Payment Links and put it on any "Pay now" button.
  • Shopify: Integrations → Shopify. Full step-by-step guide: Shopify stores.
  • WHMCS / aMember: put the Standalone API address in the module's "site URL" field (shown under Standalone → System check, e.g. https://your-site.com/pay/api/nfpay/v1).
  • Other languages (Node, Python, .NET, mobile apps): POST to /checkout and /verify on the same API address with the header X-NFP-API-KEY.

Addresses

Admin panelhttps://your-site.com/pay/admin.php
API (the app and your site)https://your-site.com/pay/api/nfpay/v1
Payment pagehttps://your-site.com/pay/?nfpay=…
Cronphp …/pay/cron.php or the cron URL shown under Standalone

Updates and security

  • When a new version is out: License → Updates → Install update now. It is downloaded from the licence server, its checksum is verified, and the previous version is kept in an 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.
  • Forgot the password: on the server run php reset-password.php username newpassword.
  • Apache / LiteSpeed use the included .htaccess. On nginx see nginx.conf.sample in the ZIP.
Q: "Is your service self-hosted? Can I set it up on my own hosting? Is it possible without WordPress?" A: Yes. With WordPress use the plugin, without WordPress use Standalone. Both run on your own hosting, and the money goes straight to your own numbers.

যেকোনো সাইট বা অ্যাপ: PHP SDKAny site or app: the PHP SDK

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 নিশ্চিত করুন।
  • ওয়েবহুক ব্যর্থ হলে ৪, ১৬, ৬৪ ও ২৫৬ মিনিট পর আবার পাঠানো হয়। পরীক্ষা করতে Developers → Webhooks → Send a test webhook ব্যবহার করুন।

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 */ }
}
  • After paying, the customer returns to redirect_url with ?invoice_id=…. Never deliver on the return alone; confirm COMPLETED with verify().
  • A failed webhook is retried after 4, 16, 64 and 256 minutes. Use Developers → Webhooks → Send a test webhook to try it.

অ্যাপ কী পাঠায়, এবং ব্যবহারের নিয়মWhat the app sends, and the rules for using it

যা পাঠানো হয়

  • শুধু সেই এসএমএস, যার প্রেরক আপনার সাইটের অনুমোদিত তালিকায় আছে। শুরুতে তালিকায় থাকে: bKash, NAGAD, 16216 (রকেট), upay।
  • প্রতিটি এসএমএসের প্রেরক, লেখা ও সময়।
  • ফোন যুক্ত করার সময়: ফোনের নির্মাতা ও মডেল, অ্যাপের ভার্সন এবং ফোনে তৈরি হওয়া একটি পাবলিক কী।
  • প্রায় ১৫ মিনিট পরপর: ব্যাটারির শতাংশ, অ্যাপের ভার্সন এবং কয়টি এসএমএস পাঠানোর অপেক্ষায় আছে।

যা পাঠানো হয় না

  • অন্য কোনো প্রেরকের এসএমএস: ব্যক্তিগত বার্তা, ব্যাংকের বার্তা, অন্য অ্যাপের OTP।
  • ফোনের পুরোনো ইনবক্স।
  • কন্টাক্ট, কল লগ, অবস্থান (লোকেশন), ছবি বা ফাইল।
  • বিজ্ঞাপন আইডি বা কোনো অ্যানালিটিক্স তথ্য; অ্যাপে এ ধরনের কোনো SDK নেই।

কোথায় যায়: সব তথ্য যায় শুধু আপনার নিজের সাইটে, HTTPS-এ, ফোনের কী দিয়ে স্বাক্ষর করে। অ্যাপ Nexora Forward বা অন্য কোনো তৃতীয় পক্ষের সার্ভারে কিছুই পাঠায় না।

একটি বিষয় স্পষ্ট করে বলা দরকার: অনুমোদিত প্রেরকের যেসব এসএমএসে ট্রানজেকশন আইডি আছে, শুধু সেগুলোই আপনার সাইটে যায়। এর মধ্যে টাকা পাঠানোর (আউটগোয়িং) বার্তাও পড়ে; সাইট সেগুলো থেকে শুধু ব্যালেন্স হিসাব রাখে, পেমেন্ট হিসেবে জমা করে না। OTP, অফার ও অন্যান্য বার্তায় ট্রানজেকশন আইডি থাকে না, তাই অ্যাপ সেগুলো ফোনেই ফেলে দেয় (অ্যাপ সংস্করণ 1.2.0 থেকে)।

ব্যবহারের নিয়ম

  • শুধু নিজের সিম ও নিজের ফোনে অ্যাপ ব্যবহার করুন। অন্য কারও ফোনে তাঁর অজান্তে অ্যাপ বসানো নিষিদ্ধ এবং বেআইনি।
  • শুধু সেই অ্যাকাউন্টে টাকা নিন, যার মালিক আপনি এবং যা ব্যবসায়িক কাজে ব্যবহারের অনুমতি আপনার আছে।
  • ফোনটি সুরক্ষিত রাখুন: স্ক্রিন লক দিন, অপরিচিত অ্যাপ বসাবেন না, ফোন অন্যের হাতে দেবেন না। যে ফোন হাতে পায়, সে আপনার মোবাইল ব্যাংকিং অ্যাকাউন্টের কাছেও পৌঁছে যেতে পারে।
  • অনুমোদিত প্রেরকের তালিকায় শুধু মোবাইল ব্যাংকিংয়ের প্রেরক রাখুন। অন্য প্রেরক যোগ করলে তাদের বার্তাও আপনার সাইটে যাবে।
  • একটি লাইসেন্স যতগুলো ডোমেইনের জন্য কেনা, ততগুলো ডোমেইনেই ব্যবহার করুন।
  • ওয়ার্ডপ্রেস অ্যাডমিন অ্যাকাউন্টে শক্ত পাসওয়ার্ড ও সম্ভব হলে দুই ধাপের যাচাই ব্যবহার করুন; অ্যাডমিন যা দেখতে পান, তার মধ্যে এসএমএসের লেখাও আছে।

বিস্তারিত: প্রাইভেসি পলিসি ও শর্তাবলি।

What is sent

  • Only SMS whose sender is on your site's allow-list. By default the list is: bKash, NAGAD, 16216 (Rocket), upay.
  • For each of those SMS: the sender, the text and the time.
  • When pairing: the phone's manufacturer and model, the app version and a public key created on the phone.
  • About every 15 minutes: the battery percentage, the app version and how many SMS are waiting to be sent.

What is not sent

  • SMS from any other sender: personal messages, bank messages, one-time codes of other apps.
  • The phone's existing inbox.
  • Contacts, call log, location, photos or files.
  • An advertising ID or any analytics data; the app contains no such SDK.

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.

One thing should be said plainly: of the messages from an allow-listed sender, only those that contain a transaction ID go to your site. That includes "money sent" messages; the site uses those only to keep the balance check correct and never stores them as payments. Verification codes (OTP), offers and other messages carry no transaction ID, so the app drops them on the phone (from app version 1.2.0).

Rules for using it

  • Use the app only with your own SIM and your own phone. Installing it on someone else's phone without their knowledge is forbidden and illegal.
  • Receive money only to accounts that you own and are allowed to use for business.
  • Keep the phone secure: use a screen lock, do not install unknown apps, do not hand the phone to others. Whoever holds the phone may also be able to reach your mobile-banking account.
  • Keep only mobile-banking senders on the allow-list. If you add other senders, their messages are sent to your site too.
  • Use a licence on as many domains as it was bought for, and no more.
  • Protect your WordPress admin account with a strong password and, where possible, two-step login; what an administrator can see includes the SMS text.

Details: Privacy Policy and Terms & Conditions.

নিরাপত্তা, সহজ ভাষায়The security model in plain words

ফোনের কী ফোনেই থাকে

যুক্ত করার সময় ফোন নিজের ভেতরে (Android Keystore; ফোনে সুবিধা থাকলে হার্ডওয়্যার-সুরক্ষিত অংশে) একটি গোপন কী তৈরি করে। কী-টি ফোন থেকে বের করা যায় না; সাইটে থাকে শুধু এর পাবলিক অংশ। তাই সাইটের ডেটাবেজ কারও হাতে গেলেও সে আপনার ফোন সেজে বার্তা পাঠাতে পারবে না।

প্রতিটি বার্তা স্বাক্ষরিত

ফোনের প্রতিটি অনুরোধে স্বাক্ষর, সময় ও একবার-ব্যবহারযোগ্য একটি সংখ্যা থাকে। স্বাক্ষর না মিললে, সময় ৫ মিনিটের বেশি পুরোনো হলে বা একই অনুরোধ দ্বিতীয়বার এলে সাইট তা বাতিল করে।

একবার-ব্যবহারযোগ্য QR কোড

যুক্ত করার কোড একবারই কাজ করে এবং ১০ মিনিটে শেষ হয়। সাইটে থাকে শুধু কোডের হ্যাশ।

ব্যালান্স মিলিয়ে দেখা

প্রতিটি টাকা আসার এসএমএসের ব্যালান্স আগের এসএমএসের ব্যালান্সের সঙ্গে মিলিয়ে দেখা হয়। না মিললে এসএমএসটি "review"-তে আটকে থাকে এবং আপনি অনুমোদন না করা পর্যন্ত কোনো পেমেন্ট নিশ্চিত করে না। বানানো এসএমএস ধরতে এটি সাহায্য করে।

একটি এসএমএস, একটি পেমেন্ট

একটি ট্রানজেকশন আইডি একবারই ব্যবহার হয়। দুটি অর্ডার একই এসএমএস দাবি করলে একটিই পায়। একই নম্বর ও একই অঙ্কে দুটি পেমেন্ট অপেক্ষায় থাকলে কোনোটিই নিজে থেকে নিশ্চিত হয় না; তখন ট্রানজেকশন আইডি চাওয়া হয়।

লাইসেন্স সার্টিফিকেট

লাইসেন্স সার্ভার আপনার ডোমেইনের জন্য স্বল্পমেয়াদি একটি স্বাক্ষরিত সার্টিফিকেট দেয়। অ্যাপ সেটি নিজে যাচাই করে; বৈধ সার্টিফিকেট না পেলে যুক্ত হয় না এবং এসএমএস ফোনেই জমা রাখে। লাইসেন্সের উত্তর ও আপডেটের তথ্যও একই রকম স্বাক্ষর দিয়ে যাচাই হয়।

যা এই ব্যবস্থা ঠেকাতে পারে না: আপনার ফোন বা ওয়ার্ডপ্রেস অ্যাডমিন অ্যাকাউন্ট অন্যের নিয়ন্ত্রণে চলে গেলে, অথবা কেউ আপনার অ্যাকাউন্টে সত্যিই টাকা পাঠিয়ে পরে মোবাইল ব্যাংকিং প্রতিষ্ঠানের কাছে অভিযোগ করলে। কোনো সফটওয়্যারই শতভাগ নিরাপত্তার নিশ্চয়তা দিতে পারে না; বড় অঙ্কের অর্ডারে পণ্য পাঠানোর আগে নিজের অ্যাকাউন্টে টাকাটি দেখে নেওয়া ভালো।

The phone's key stays in the phone

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.

Every message is signed

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.

One-time QR code

The pairing code works once and ends after 10 minutes. The site keeps only a hash of it.

Balance check

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.

One SMS, one payment

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.

Licence certificate

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.

What this cannot prevent: someone else taking control of your phone or your WordPress admin account, or a person who really sends money to your account and later complains to the mobile-banking provider. No software can promise complete security; for large orders it is wise to look at the money in your own account before you ship.

সমস্যা ও সমাধানTroubleshooting

SMS-এ "Unused" লেখা কেন?

এমন একটা পেমেন্টের SMS এসেছে, যার জন্য তখন কোনো অপেক্ষমাণ পেমেন্ট ছিল না। যেমন কেউ সরাসরি আপনার নম্বরে টাকা পাঠিয়েছেন, বা অন্য কাজের টাকা। Nexora Pay এটাকে "Unused" করে রেখে দেয়, মুছে না।

  • পরে একই নম্বর থেকে একই অঙ্কের পেমেন্ট শুরু হলে, বা কাস্টমার এর TrxID দিলে, এই SMS দিয়েই পেমেন্ট মিলে যায়।
  • অন্য কাজের টাকা হলে কিছু করার নেই; চাইলে SMS & Devices থেকে Trash করতে পারেন।
  • অ্যাপে "Ignored" মানে পেমেন্ট নয় এমন SMS (OTP, অফার), যা সার্ভারে পাঠানো হয়নি। "Failed" মানে পাঠাতে গিয়ে নেটওয়ার্ক সমস্যা; অ্যাপ নিজে আবার চেষ্টা করে।
Standalone: cron কোথায় বসাবো?

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 মেয়াদ শেষ হওয়া পেমেন্ট বন্ধ করা, ইমেইল আর পরিষ্কারের কাজ করে; পেমেন্ট যাচাই এর ওপর নির্ভর করে না।

পেমেন্ট নিজে থেকে যাচাই হচ্ছে না
  • সাইটের ওপরের কোণে "Phone online" দেখাচ্ছে কি না দেখুন। না দেখালে নিচের "ফোন অফলাইন" অংশ দেখুন।
  • Nexora Pay → SMS & Devices-এ এসএমএসটি এসেছে কি না দেখুন। না এলে: ফোনে এসএমএসটি আদৌ এসেছে কি? অ্যাপে এসএমএসের অনুমতি আছে কি? প্রেরকের নাম অনুমোদিত তালিকার সঙ্গে হুবহু মেলে কি?
  • এসএমএস এসেছে, কিন্তু মেলেনি: গ্রাহক কি অন্য নম্বর থেকে বা অন্য অঙ্ক পাঠিয়েছেন? Payments পাতা থেকে পেমেন্টটি খুলে গ্রাহকের ট্রানজেকশন আইডি দিয়ে মিলিয়ে নিন, অথবা কারণ লিখে হাতে সম্পন্ন করুন।
  • গেটওয়ের নম্বরের সিম কি যুক্ত ফোনেই আছে?
ফোন অফলাইন দেখাচ্ছে
  • ফোন চালু ও ইন্টারনেটে যুক্ত আছে কি না দেখুন; অ্যাপ খুলে Send test ping চাপুন।
  • অ্যাপ "Last problem" দেখালে বার্তাটি পড়ুন। সময়ের সমস্যা হলে তারিখ-সময় "স্বয়ংক্রিয়" করুন।
  • ব্যাটারি ও অটোস্টার্ট সেটিংস আবার দেখে নিন; ফোনের আপডেটের পর এগুলো অনেক সময় আগের অবস্থায় ফিরে যায়।
  • অ্যাপ Force stop হয়ে থাকলে একবার খুললেই আবার চালু হবে। জমে থাকা এসএমএস ফোনে থেকে যায় এবং সংযোগ ফিরলে পাঠানো হয়।
লাইসেন্স সক্রিয় হচ্ছে না বা "not active" দেখাচ্ছে
  • License key ও Secret key দুটিই পুরোটা কপি হয়েছে কি না দেখুন; আগে-পরে ফাঁকা জায়গা যেন না থাকে।
  • লাইসেন্সটি কি অন্য ডোমেইনে চালু আছে? পুরোনো সাইটের License পাতা থেকে Domain Change Request পাঠান (এই সাইটের License পাতাতেও বক্সটি দেখাবে), অথবা বেশি ডোমেইনের প্যাকেজ নিন।
  • মেয়াদ শেষ হয়েছে কি? নবায়নের পর Refresh চাপুন।
  • আপনার সার্ভার থেকে লাইসেন্স সার্ভারে HTTPS সংযোগ যেতে পারছে কি না হোস্টিংকে জিজ্ঞেস করুন। সার্ভারের ঘড়ি ভুল থাকলেও যাচাই ব্যর্থ হয়।
  • অ্যাপে "The site licence is not active" দেখালে সাইটে লাইসেন্স ঠিক করে অ্যাপে Sync now চাপুন।
Play Protect অ্যাপ ইনস্টল করতে দিচ্ছে না বা সরিয়ে দিয়েছে

"অ্যান্ড্রয়েড অ্যাপ ইনস্টল" অংশের ২ নম্বর ধাপ অনুসরণ করুন (USB/adb, অথবা ইনস্টলের সময়টুকু স্ক্যান বন্ধ রাখা)। অ্যাপ সরিয়ে দেওয়া হলে আবার ইনস্টল করে নতুন QR কোড দিয়ে যুক্ত করুন; সাইটের পুরোনো ডিভাইসটি Remove করে দিন।

গ্রাহক ভুল অঙ্ক পাঠিয়েছেন

কম পাঠালে পেমেন্ট নিশ্চিত হয় না। বেশি পাঠালে এবং গ্রাহক ট্রানজেকশন আইডি দিলে (সেটিংসে "হুবহু" বাধ্যতামূলক না থাকলে) পেমেন্ট নিশ্চিত হয়। বাকি টাকা নেওয়া, বাড়তি টাকা ফেরত দেওয়া বা হাতে সম্পন্ন করার সিদ্ধান্ত আপনার; Payments পাতা থেকে কারণ লিখে করতে পারবেন।

এসএমএস "review"-তে আটকে আছে

ব্যালান্স আগের এসএমএসের সঙ্গে মেলেনি, অথবা এসএমএসের সময় গ্রহণযোগ্য সীমার বাইরে ছিল। এটি তখনও হতে পারে, যখন মাঝের কোনো এসএমএস ফোনে আসেনি বা দেরিতে এসেছে। Nexora Pay → SMS & Devices → Balance check-এ গিয়ে নিজের মোবাইল ব্যাংকিং অ্যাপে লেনদেনটি সত্যিই আছে কি না দেখুন; থাকলে Approve চাপুন, না থাকলে Trash চাপুন।

আপডেট দেখাচ্ছে না

লাইসেন্স সক্রিয় আছে কি না দেখুন, তারপর Nexora Pay → License → Updates → Check now চাপুন। "could not be verified" দেখালে সার্ভারের তারিখ-সময় ঠিক আছে কি না দেখুন; না মিটলে সাপোর্টে লিখুন।

Why does an SMS say "Unused"?

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.

  • If a payment from the same number with the same amount starts later, or the customer gives its TrxID, the payment is matched with this SMS.
  • If the money was for something else there is nothing to do; you can Trash it under SMS & Devices.
  • "Ignored" in the app means non-payment SMS (OTP, offers) that were not sent to the server. "Failed" means a network problem while sending; the app retries by itself.
Standalone: where does the cron go?

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.

A payment is not verified automatically
  • Check that the top corner of the site shows "Phone online". If not, see "The phone is shown as offline" below.
  • Look under Nexora Pay → SMS & Devices whether the SMS arrived. If not: did the SMS reach the phone at all? Does the app have the SMS permission? Does the sender name match the allow-list exactly?
  • The SMS arrived but did not match: did the customer pay from another number or send another amount? Open the payment under Payments and match it with the customer's transaction ID, or complete it by hand with a reason.
  • Is the SIM of the gateway number in the paired phone?
The phone is shown as offline
  • Check that the phone is on and connected to the internet; open the app and tap Send test ping.
  • If the app shows a "Last problem", read it. For a clock problem set date and time to "automatic".
  • Check the battery and autostart settings again; a system update of the phone often resets them.
  • If the app was force-stopped, opening it once starts it again. Waiting SMS stay on the phone and are sent when the connection is back.
The licence does not activate or says "not active"
  • Check that both the License key and the Secret key were copied completely, without spaces before or after.
  • Is the licence active on another domain? Send a Domain Change Request from the License screen (on the old site, or on this site: the box appears after the refused activation), or move to a tier with more domains.
  • Has it expired? After renewing, press Refresh.
  • Ask your host whether your server can make HTTPS connections to the licence server. A wrong server clock also makes verification fail.
  • If the app says "The site licence is not active", fix the licence on the site and tap Sync now in the app.
Play Protect does not let me install the app, or removed 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.

The customer sent the wrong amount

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.

An SMS is held for review

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.

No update is shown

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

সমাধান না মিললে আমাদের লিখুন: support@nexoraforward.com। দ্রুত সাহায্য পেতে জানান:

  • সাইটের ঠিকানা, প্লাগইনের ভার্সন ও অ্যাপের ভার্সন;
  • ফোনের ব্র্যান্ড, মডেল ও অ্যান্ড্রয়েড সংস্করণ;
  • কী করতে গিয়ে কী হয়েছে, সম্ভব হলে স্ক্রিনশটসহ।
কখনো পাঠাবেন না: Secret key, API কী, QR কোডের ছবি, মোবাইল ব্যাংকিংয়ের পিন বা OTP। আমরা এগুলো কখনো চাই না।

If you cannot solve it, write to us: support@nexoraforward.com. To get help quickly, tell us:

  • the site address, the plugin version and the app version;
  • the phone's brand, model and Android version;
  • what you did and what happened, with a screenshot if possible.
Never send us: the Secret key, an API key, a picture of the QR code, your mobile-banking PIN or a one-time code. We never ask for them.
0