مراحل انجام تراکنش در وب سرویس پرداخت نکست پی
در مقاله قبل در مورد مقدمه راهنما وب سرویس پرداخت نکست پی و انواع سرویس درگاه پرداخت نکست پی صحبت کردیم در این مقاله مراحل تراکنش با API درگاه پرداخت نکست پی را توضیح میدهیم.
سیکل کلی و چرخۀ انجام یک تراکنش
- درخواست ایجاد تراکنش توسط سایت پذیرنده و اخذ کد تراکنش از سرور های نکست پی
- هدایت پرداخت کننده به همراه کد تراکنش به نکست پی و سپس بانک عامل
- تکمیل پرداخت توسط پرداخت کننده و بازگشت از بانک عامل و هدایت وی به سایت پذیرنده
- استعالم گیری وضعیت و صحت تراکنش از سرور های نکست پی ، توسط سایت پذیرنده . درنهایت تحویل یا عدم تحویل محصول به خریدار بر اساس وضعیت تراکنش
مرحله 1 : ایجاد تراکنش
این مرحله به منزله شروع اتصال و آغاز عملیات پرداخت است . در این مرحله ، از سرور پذیرنده باید پارامتر های زیر به سرور نکست پی ارسال شود تا برای عملیات پرداخت (( یک کد تراکنش )) صادر شود .
نام پارامتر | مثال برای مقدار | توضیحات مقدار پارامتر |
api_key | d13cfbb-3e9a-4a69-8b8d-dc6574a24fb64 | همان کلید API است که از طرف نکست پی برای وب سایت پذیرنده صادر شده است |
id_order | 123456 | (( شماره سفارش )) مورد نظر پذیرنده است |
amount | 6000 | مبلغ تراکنش بر حسب (( تومان)) که باید
عددی ((صحیح)) و بزرگتر از 100تومان باشد |
callback_uri | http://example.com/back.php | آدرس بازگشتی پذیرنده پس از پایان تراکنش پرداخت کننده به این آدرس هدایت مبشود |
تمامی پارامتر های فوق و مقادیر مربوطه باید در یک آرایه با مشخص کردن (( نام پارامتر )) و ((مقدار پارامتر)) تعیین شود و سپس این آرایه در تابع TokenGenerator از آدرس http://api.nextpay.org/gateway/token.wsdl فراخوانی شود.
نکته : عالوه بر آدرس https://api.nextpay.org/gateway/token.wsdl درصورتی که از پروتکل http وصرفا از متد های POST و GET استفاده می کنید می توانید از آدرس جایگزین https://api.nextpay.org/gateway/token.http . استفاده کنید
خروجی به شکل Object در TokenGeneratorResult شامل 2 مورد خواهد بود . این موارد شامل ((trans_ id )) و )) code )) میباشد . مقدار tans_ id در واقع )) کد تراکنش(( می باشد و مقدار code بیانگر ))وضعیت تراکنش(( است که اگر مقدار code برابر با عدد ((1-)) باشد بیانگر این است که تراکنش ساخته شده و منتظر ارسال به بانک است . اگر کدی به غیر از 1 -ارائه شود ، قابل ارسال به بانک نیست و بیانگر سایر وضعیت های تراکنش است که لیست این کد ها د ضمیمه ر این لینک آمده .
پیشنهاد می شود که پذیرنده در این مرحله جهت پیگیری های بعدی ، مقادیر trans_ id داخلی خود و amount و trans_ id و code را در دیتابیس داخلی خود ذخیره کند تا در آینده بتوان تراکنش را پیگیری و بررسی کرد.
در ادامه یک مثال عملی را در زبان PHP آورده ایم
مثال در PHP برای دستور ایجاد تراکنش :
$parameters = array ( “api_key”=> $api_id,
“order_id”=> $order_id,
“amount”=> $price,
“callback_uri”=> $callback );
$client = new SoapClient(‘http://api.nextpay.org/gateway/token.wsdl’);
$token_obj = $client->TokenGenerator($parameters);
$trans_id=$token_obj->TokenGeneratorResult->trans_id;
$code=$token_obj->TokenGeneratorResult->code;
مرحله 2 : ارسال به بانک
https://api.nextpay.org/gateway/payment/***********
مثال
http://api.nextpay.org/gateway/payment/1246f3ea-0f6c-4806-b586-a88bc63ca76f
مثال برای هدایت خریدار به درگاه عامل و صفحه بانک :
<script>window.location=’http://api.nextpay.org/gateway/payment/***********’;
</script>
پس از این کار ، پرداخت کننده به بانک عامل منتقل میشود و باید اطالعات خود را وارد کرده و خرید را انجام دهد .
مرحله 3 : تکمیل پرداخت توسط پرداخت کننده
در این مرحله ، خریدار در سایت بانک و درگاه عامل مربوطه ، با وارد کردن اطالعات کارت خود ، خرید را انجام داده و پرداخت را تکمیل می کند . جهت رعایت موارد امنیتی ، همیشه به پرداخت کنندگان یادآوری کنید که در این مرحله در آدرس بار مرورگر خود باید آدرسی دقیقا برابر با ***/ir.shaparak ***.مشاهده کنند و به نحوه نوشته شدن کلمه شاپرک دقت کنند تا در دام کالهبرداران و صفحات جعلی و فیشینگ گرفتار نشوند . هر آدرس دیگری غیر از ir.shaparak فاقد اعتبار و اصالت است .
پس از تکمیل پرداخت ، نکست پی ، خریدار را به سایت پذیرنده هدایت میکند .
مرحله 4 : انتقال خریدار به سایت پذیرنده ، استعالم وضعیت و بررسی صحت پرداخت
در این بخش از عملیات، پس از موفق یا ناموفق بودن خرید ، پرداخت کننده به سایت پذیرنده ( uri_callback ) به همراه 2 پارامتر trans_ id و trans_ id از طریق متد POST فرستاده میشود. در این مرحله پیشنهاد میشود که پذیرنده ، وجود یا عدم وجود 2 پارامتر مذکور را در دیتابیس خود بررسی کند ( زیرا این 2 پارامتر همان 2 پارامتری هستند که در مرحله 1 پیشنهاد شد که آن ها را در دیتابیس خود پیش از ارسال به بانک ، وارد کنید تا بتوان در آینده تراکنش را پیگیری و بررسی کرد . بنابراین اگر در مرحله 1 آنها را ذخیره کرده باشید ، در این مرحله (چهارم ) می توانید بررسی کنید که آیا قبال این مقادیر در دیتابیس وجود دارند یا نه ؟ که اگر وجود نداشته باشند به این معنی است که این تراکنش را شما ایجاد نکرده اید و تراکنش توسط کاربر دستکاری شده و معیوب است و میتوانید همینجا فرآیند خرید را متوقف کرده و آن را ناموفق اعالم کنید !!! و اگر آن 2 پارامتر وجود داشته باشد در واقع شما مطمئن میشوید که این تراکنش قطعا مربوط به شماست و می توانید فرایند را به درستی ادامه دهید )
در ادامه باید بالفاصله صحت تراکنش و وضعیت موفق بودن یا نبودن تراکنش را از سرور های نکست پی استعالم بگیرید .برای استعالم گرفتن از وضعیت پرداخت و بررسی موفق بودن یا نبودن آن ، باید پارمتر های زیر را به نکست پی ارسال کنید تا نکست پی به عنوان پاسخ ، وضعیت پرداخت مورد نظر را به شما ارسال کند
نام پارامتر | مثال برای مقدار | توضیحات مقدار پارامتر |
api_key | d13cfbb-3e9a-4a69-8b8d-dc6574a24fb64 | همان کلید API است که از طرف نکست پی برای وب سایت پذیرنده صادر شده است |
id_order | 123456 | (( شماره سفارش )) مورد نظر پذیرنده است |
amount | 6000 | مبلغ تراکنش بر حسب (( تومان)) که باید
عددی ((صحیح)) باشد |
trans_id | f3ea-0f6c-4806-b586-a88bc63ca76f1246 | کد تراکنش مورد نظر |
توجه
تمامی پارامتر های فوق و مقادیر مربوطه باید در یک آرایه با مشخص کردن (( نام پارامتر )) و (( مقدار پارامتر )) تعیین شود و سپس این آرایه در تابع PaymentVerification از آدرس http://api.nextpay.org/gateway/verify.wsdl فراخوانی شود.
نکته : عالوه بر آدرس http://api.nextpay.org/gateway/verify.wsdl درصورتی که از پروتکل http وصرفا از متد های POST و GET استفاده می کنید می توانید از آدرس جایگزین http://api.nextpay.org/gateway/verify.http استفاده کنید
خروجی به شکل Object در PaymentVerificationResult شامل پارامتری با نام (( code )) میباشد این مقدار بیانگر (( وضعیت تراکنش)) است که اگر مقدار code برابر با عدد صفر ((0 )) باشد بیانگر این است که تراکنش موفقیت آمیز بوده است و مبلغ آن از حساب پرداخت کننده کسر شده و در موجودی شما ( پذیرنده ) افزوده شده است . اگر کدی به غیر از 0 ارائه شود ، بیانگر خطا و دالیل ناموفق بودن تراکنش است که لیست این کد ها در ضمیمه آمده است .
پیشنهاد می شود که پذیرنده در این مرحله ، وضعیت تراکنش مورد نظر را در دیتابیس خود جستجو کند و برای پرداختی که قبال یک بار با موفقیت انجام شده و تکراری است ، اجازه ندهد که پرداخت کننده ، محصول یا خدمات مورد نظر را ((بارها و بارها )) با رفرش کردن صفحه دریافت کند .
مثال در PHP برای دستور استعالم وضعیت تراکنش :
$parameters = array ( “api_key”=> $api_id,
“order_id”=> $order_id,
“amount”=> $price,
“trans_id”=> $trans_id );
$client = new SoapClient(‘http://api.nextpay.org/gateway/verify.wsdl’);
$verify_obj = $client->PaymentVerification($parameters);
$code =$verify_obj->PaymentVerificationResult->code;
If ($code==”0”)
{ echo “تراکنش باموفقیت انجام شد” ;
} else { echo “تراکنش ناموفق بود” ; }
برای دریافت راهنمای کامل میتوانید از این لینک اقدام نمایید