سلام
از اونجایی که قول داده بودم و فقط و و فقط برای اینکه قول داده بودم وقتی فهمیدم چیزایی رو که لازمه اینجا بزارم بقیه هم استفاده کنن این کار رو میکنم.
دوستان همونطوری که میبینید و از همون کد بالا مشاهدش خیلی راحته شما بعد از بستن قرار داد با بانک پارسیان برای ارتباط با بخش پرداخت فقط کافیه تو اون کد بالا یک پین کد رو که خود بانک به شما میده رو به جای pin قرار بدید. و یک orderid لازمه که باید یونیک همون یکتا باشه که با دوتابع رندو اسرند میتونید این متغییر رو ایجاد کنید. بعد متغییر $amount همون مقدار پولیه که طرفتون باید پرداخت کنه. با ارسال این متغییر ها صفحه مربوط به پرداخت بانک پارسیان براتون باز میشه که براحتی طرف براتون پول رو واریز میکنه. من همین جا داکیومنت خود بانک پارسیان رو براتون قرار میدم. وقتی این رو بخونید و کلاس nusoap رو از یه جا مثل سورس فورج دانلود و در جای لازم قرار بدید. شما همه کار ها رو کردید. فقط کافیه با استفاده از متغییر های برگشتی کار های لازم رو توی سایت انجام بدید. بله چیزی که ما انقدر سختمون بود به هم یاد بدیم همین چیز راحت و ساده بود. البته باید موقع برنامه نویسی دقت کنید که کدتون رو یه مقدار امن کنید . هر چند با توجه به مراحلی که انجام میشه و اینکه خود دروازه پرداخت چک میکنه که IP فرستنده این متغییر ها همون IP سایت شما هست یانه دیگه ترس زیادی برای این کار وجود نداره هرچند به هر حال خودتون باید به فکر امنیت کدتون باشید نه دیگران.
نمیخوام بیش از این بحث کنم ولی واقعا قرار دادن این اطلاعات برای بقیه انقدر سخت بود.
راهنماي اتصال به سرويس دروازه پرداخت: (نسخه1.2 )
نکات عمومي
• در هر عمليات بانکي از سوي فروشنده، يک کد unique (واحد براي همان فروشنده) تحت نام OrderId، ميبايست به دروازه پرداخت ارسال گردد، جزئيات ارسال آن در توضيحات هر تراکنش بيان خواهد شد.
• پين (pin) فروشنده، شناساگر و نيز کد رمز وي بوده و فروشنده آنلاين ملزم به نگهداري امن اين کد ميباشد، اين کد براي اجراي هر عمليات لازم است.
• پس از اجراي هر عمليات يک کد وضعيت (status) به معني وضعيت فراخواني آن متد، به eShop برگردانده ميشود، که بسته به آن کد فرايند هاي خاص آن بايد صورت گيرد. کد صفر به معني موفقيت آميز بودن عمليات است، ساير کدها براي هر متد در توضيحات متد آمده است.
پرداخت مشتري (Sale)
با انجام اين تراکنش پول از حساب مشتري کم شده و پس از عمليات تسويه حساب به حساب فروشنده واريز ميشود. انجام کامل اين تراکنش مستلزم طي کامل چرخه پرداخت بوده و چنانچه اين روند به آخرين وضعيت (موفقيت و پايان عمليات) منجر نشود، کل عمليات Rollback خواهد شد.
مراحل پرداخت مشتري:
1- پس از پايان فاز انتخاب کالا، مشتري آمادگي خود را براي پرداخت پول از طريق حساب بانک پارسيان اعلام ميکند، در اين زمان eShop متد زير را از وب سرويس دروازه پرداخت صدا ميزند:
PinPaymentRequest(pin,amount,orderId,callbackUrl,ref authority,ref status)
Pin (string): پين فروشنده
Amount (integer): رقم پرداخت
OrderId (integer): کد عمليات
CallbackUrl (string): صفحه بازگشت مشتري، پس از انجام عمل پرداخت
Authority (long integer): کد عملياتي دروازه پرداخت که يک کد تصادفي و واحد براي تمامي عمليات آنلاين با
سايتها ميباشد، فروشگاه آنلاين ملزم به ثبت و نگهداري اين کد ميباشد.
Status (byte): کد وضعيت
0: موفق
20, 22: پين فروشنده درست نميباشد
30: عمليات قبلا با موفقيت انجام شده است
34: شماره تراکنش فروشنده درست نميباشد
2- در صورت موفقيت آميز بودن متد فوق، eShop کاربر را به سايت دروازه پرداخت redirect ميکند، authority بعنوان پارامتر Query String با نام au، بايد در انتهاي URL سايت دروازه پرداخت قرار گيرد، بعنوان مثال:
https://www.pec24.com/pecpaymentgateway/default.aspx?au=791684761124
از زمان ارسال کاربر به سايت پرداخت، زمان محدودي (حدود 10 دقيقه) مشتري مهلت دارد که عمليات پرداخت خود را در سايت پرداخت بانک، انجام دهد، در غير اينصورت authority کد expire ميشود و در صورت درخواست مجدد، eShop مجددا براي وي درخواست authority کد ميکند.
3- پس از انجام عمليات و يا انصراف، کاربر توسط دروازه پرداخت به سايت فروشگاه آنلاين بازميگردد و کد authority و status عمليات بعنوان Query String به eShop ارسال ميشود. در صورتي که status صفر باشد، eShop ميبايست مجددا از سرور دروازه پرداخت صحت انجام عمليات را سئوال نمايد.
PinPaymentEnquiry(pin, authority, ref status)
چنانچه تا قبل از فراخواني اين متد ارتباط اينترنتي کاربر قطع شود، دروازه پرداخت بصورت اتوماتيک پرداخت وي را ابطال ميکند.
ابطال عمليات (Void)
فروشنده (merchant) ميتواند عمليات پرداخت را تا قبل از تسويه حساب ابطال کند، بدون آنکه هيچگونه بار مالي براي مشتري داشته باشد.
PinVoidPayment(pin, orderId, orderToVoid, ref status)
برگشت عمليات (Reversal)
در صورت بروز اتفاقات ناخواسته، که عمدتا ناشي از نقايص فني و يا قطع ارتباط کاربر با فروشگاه آنلاين، ميباشد، فروشنده ملزم به برگشت عمليات خواهد بود، همانطور که در عمليات Sale توضيح داده شد، در آخرين مرحله eShop از دروازه پرداخت استعلام عمليات خواهد کرد؛ از اين لحظه به بعد چنانچه فروشنده متوجه شود به هر دليلي مشتريش نتيجه عمليات پرداخت خود را مشاهده نکرده، فروشنده عمليات برگشت را انجام ميدهد.
PinReversal(pin, orderId, orderToReversal, ref status)
برگرداندن تمام يا بخشی از مبلغ عمليات (Refund)
فروشنده (merchant) ميتواند در صورت نياز تمام يا بخشي از مبلغ عمليات انجام شده را به حتی بعد از تسويه حساب به مشتری برگرداند، به همين دليل فروشنده بايد دقت مضاعفی به اين مساله داشته باشد.
PinRefundPayment(pin, orderId, orderToRefund, amount, ref status)
تسويه حساب (Settlement)
تسویه حساب به صورت اتوماتیک و روزانه انجام می گیرد. و صورتحساب از طریق بخش مالی و طبق قرارداد به فروشگاه تحویل می گردد.
---------------------------------------------------------------------------------------------
اگه این کار هارو بکنید هیچ مشکلی ندارید من خودم یه تراکنش 1 ریالی برای آزمایش انجام دادم. کد بالا هم فهمیدنش و استفادش اصلا سخت نیست. البته من بعد از فهمیدن اون کد دارم یه کد دیگه برای خودم مینویسم که اختصاصی باشه ولی خوب من از همین اول کار کشیدم و وقتی فهمیدم حالا دارم کامل خودم مینویسم
--------------------------------------------------------------------------------------------
قضاوت ارزش این اطلاعات رو به عهده خودتون میزارم
با دلی مالامال از اندوه این انجمن ها رو ترک میکنم باشد که به خاطره ای بپیوندم!!!!!!!!!
خداحافظ مجید آنلاین