نمایش نتایج 1 تا 6 از 6

نام تاپیک: نمونه کد اتصال به بانک ملی (سداد)

  1. #1

    نمونه کد اتصال به بانک ملی (سداد)

    سلام
    دنبال نمونه کد VB.NET برای اتصال به بانک ملی میگیردم.
    خود بانک C#‎ و MVC در اختیارم قرار داده که طبیعتا به درد من نمیخوره. توی نتم هم سرچ زیادی زدم هرچی هست نمونه های قدیمی و منسوخ شدس.
    اگر کسی نمونه کدی جدید داره لطف کنه.
    ممنون میشم.

  2. #2

    نقل قول: نمونه کد اتصال به بانک ملی (سداد)

    خودم تونستم انجامش بدم
    فقط الان ی مسئله ای که برام اینکه برای Post و Redirect به پیج بانک میاد و تمامی پارامترها توی متغیری به اسم FormBody میریزه و بعد با input 'submit' ارجاع میده به صفحه بانک، الان چطوری میشه اینو با Behind code کنترلش کرد؟


        <%=FormBody %>
    <input type='submit' name='Submit Query' id="Submit2" />


    باید بگم که کدهای بالای توی Form (چه با runat=server و چه بدون اون) کار نمیکنه چرا که در این متغییر تگ های HTML دارن تولید میشن و سپس post میشن

            FormBody = MerchantHelpers.PaymentUtility(ServiceUrl, PaymentUrl, MerchantId, _                                                                            10000, 35, tranKey, _
    TerminalId, ReturnURL, AdditionalInfo, _
    requestKey)
    آخرین ویرایش به وسیله Ali_M.Eghbaldar : چهارشنبه 14 خرداد 1399 در 09:54 صبح

  3. #3

    نقل قول: نمونه کد اتصال به بانک ملی (سداد)

    ممنون از دوستانی که کمک کردند. خب ما یادگرفتیم خودمون همه چیز راس و ریس کنیم بگذریم ...
    از اونجایی که دوست ندارم کسِ دیگه ای چند روز وقتش گرفته بشه، روند استفاده از کدهای (شاهکار) سداد میذارم. امیدوارم بدردتون بخوره

    1) اضافه کردن DLL های EPS.MerchantHelper ، EPS.MerchantHelper.XmlSerializers ، EPSMerchantHelper.XmlSerializers و EPSMerchantV2_DLLVersion به پوشه ی Bin

    2) اضافه کردن کلیدهای زیر جهت امنیت بیشتر در تگ appSetting فایل web.config (البته میتونید اینارو توی behindcode هم بذارید ولی توصیه نمیکنم)
      <add key="MerchantId" value="**********"/>
    <add key="Terminal" value="**********"/>
    <add key="TranKey" value="**********"/>
    <add key="ServiceURL" value="https://sadad.shaparak.ir/services/MerchantUtility.asmx"/>
    <add key="ReturnURL" value="صفحه ای که میخواهید از بانک برگشت داده شود"/>
    <add key="PaymentURL" value="https://sadad.shaparak.ir/purchase"/>


    3) فراخوانی توابع کلاس EPS
    Imports EPS.MerchantHelper


    4) با دستورات زیر کلید اصلی (قبل از رفتن به صفحه بانک) ایجاد میشه و آماده Fire شدن هست (حالا من اینو صرفا برای تست توی page_load نوشتم شما میتونید هرجایی بنویسید)

    Protected FormBody As String = ""

    Protected Sub Page_Load(sender As Object, e As System.EventArgs) Handles Me.Load
    Dim ServiceUrl As String = ConfigurationManager.AppSettings("ServiceURL")
    Dim PaymentUrl As String = ConfigurationManager.AppSettings("PaymentURL")
    Dim MerchantId As String = ConfigurationManager.AppSettings("MerchantId")
    Dim tranKey As String = ConfigurationManager.AppSettings("TranKey")
    Dim TerminalId As String = ConfigurationManager.AppSettings("Terminal")
    Dim ReturnURL As String = ConfigurationManager.AppSettings("ReturnURL")
    Dim AdditionalInfo As String = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")


    Dim requestKey As String ' request key


    FormBody = MerchantHelpers.PaymentUtility(ServiceUrl, PaymentUrl, MerchantId, _
    10000, 35, tranKey, _
    TerminalId, ReturnURL, AdditionalInfo, _
    requestKey)
    lblRequest.Text = requestKey


    '''''''''''''''
    Session("ServiceURL") = ServiceUrl
    Session("TranKey") = tranKey
    Session("MerchantID") = MerchantId
    Session("Terminal") = TerminalId
    Session("AmountTrans") = "10000"
    Session("RequestKey") = requestKey
    Session("AdditionalInfo") = AdditionalInfo


    End Sub


    5) از اونجایی که طبق کدنویسی شاهکار سداد، تگ های ACTION در متغییر FORMBODY بصورت HTML تشکیل میشه و بیشترین مشکل خود منم با این قسمت بود (چون بصورت معمول قابلیت fire شدن نداره)، خود سداد از input submit استفاده میکنه ولی خوب این برای حالتی که بخوایم از behindcode استفاده کنم مقدور نیست پس میشه دو تا کلک رشتی زد:
    یک: مقدار متغیر FORMBODY توی کنترل literal ریخت و خودبخود هم fire میشه ولی شرط این حالت اینکه که از قبل، متغیر در page_load پر شده باشه وگرنه کاربر مجبوره دو بار fire کنه که خوب مناسب نیست.
     Protected Sub Button1_Click(sender As Object, e As System.EventArgs) Handles Button1.Click        Literal1.Text = FormBody
    End Sub


    دو: اگر بخوایم در یک مرحله، هم متغیر پر بشه و هم fire صورت بگیره باید از response.write بصورت زیر استفاده کرد:
                    Response.Clear()                Dim sb As New StringBuilder
    sb.Append(FormBody)
    sb.Append("<html>")
    sb.AppendFormat("<body onload='document.forms[0].submit()'>")
    sb.Append(FormBody)
    sb.Append("</body>")
    sb.Append("</html>")
    Response.Write(sb.ToString())
    Response.End()


    ولی...
    اگر کدهای کسی در Updatepanel باشه دیگه دردسر بیشتر میشه چون response.write توی updatepanle کار نمیکنه. نگران نباشید اونم حل کردم.
    ابتدا تابع جاوای زیر به انتهای صفحه تون اضاف کنید:
    <script>    function post(f) {
    document.body.innerHTML = f;
    document.getElementById("paymentUTLfrm").submit();
    }
    </script>

    بعد از دستور ScriptManager.RegisterClientScriptBlock بصورت زیر استفاده کنید تا فرم submit کنه.
    ScriptManager.RegisterClientScriptBlock(Me, Me.GetType(), "post", "post('" & FormBody.Replace("'", """") & "');", True)


    6) اینم کدهای صفحه برگشتی از بانک:
    Protected Sub Page_Load(sender As Object, e As System.EventArgs) Handles Me.Load

    If Not IsPostBack Then


    txtPostFP.Text = HttpContext.Current.Request.Form("FP")
    txtPostOrderId.Text = HttpContext.Current.Request.Form("OrderId")
    txtPostTimeStamp.Text = HttpContext.Current.Request.Form("TimeStamp")


    If Session.Count > 0 Then
    txtTXKey.Text = Session("TranKey").ToString()
    txtMerchantID.Text = Session("MerchantID").ToString()
    txtTerminalID.Text = Session("Terminal").ToString()
    TxtAmount.Text = Session("AmountTrans").ToString()
    txtRequestKey.Text = Session("RequestKey").ToString()
    Else
    lblMessage.Text = "اطلاعات خرید موجود نیست"
    End If


    CheckRequestStatus()
    End If


    End Sub


    Private Sub CheckRequestStatus()


    Dim OrderId As Long = Convert.ToInt64(35)
    Dim Amount As Long = Convert.ToInt64(10000)




    Dim ServiceURL As String = Session("ServiceURL").ToString()
    Dim _RefNo, Appstatus, RealTransactionDateTime As String


    Dim _AppStatusCode As Integer = MerchantHelpers.CheckRequestStatus(ServiceURL, OrderId,
    txtMerchantID.Text, txtTerminalID.Text,
    txtTXKey.Text, txtRequestKey.Text, Amount,
    _RefNo, Appstatus, RealTransactionDateTime)


    TxtAmount.Text = Amount.ToString()
    LabelStatus.Text = _AppStatusCode.ToString()
    LabelRefNo.Text = _RefNo
    LabelAppStatus.Text = Appstatus
    lblRealTransactionDateTime.Text = RealTransactionDateTime


    End Sub


    در خصوص مدیریت خرید:
    شما میتونید با مقدار برگشتی در متغییر Status بررسی لازم انجام بدین. بعنوان مثال اگر مقدار برگشتی -1 باشه یعنی خرید موفق نبوده (خریدار برگشت زده) و اگر 0 باشه خرید موفق بوده. لیست کامل این مقادر در پیوست شماره (3) و در جدول «کلیدهای بازگشتی» که بانک به شما میده موجوده همیچنین وقتی خرید موفق آمیز باشه، پارامتر برگشتی (ByRef) به اسم _RefNo هم مقدار یونیکی به خودش میگیره که میتونید توی بانک ذخیرش کنیدکه این مقدار با عنوان «شماره مرجع تراکنش» در پرتال بانک ملی قابل رصد کردنه.

    امیدوارم کسی مشکلی نداشته باشد با این کدهای VB
    لازم به گفتن که ما بخاطر استفاده از WEB FORM کلید API عوض کردیم پس این کدهای برای MVC نیست.
    برای تغییر کلید باید با پشتیبانی سداد تماس بگیرید و دو ساعت هم بیشتر طول نمیکشه

    موفق باشید.
    آخرین ویرایش به وسیله Ali_M.Eghbaldar : چهارشنبه 14 خرداد 1399 در 16:19 عصر

  4. #4

    نقل قول: نمونه کد اتصال به بانک ملی (سداد)

    سلام
    چه عجب ...
    بعد مدت ها یه بنده خدایی پیدا شد که مشکلش حل شد و اومد توضیح داد چیکار کرده و چطوری کد درست شد .
    سپاسگذریم

  5. #5

    نقل قول: نمونه کد اتصال به بانک ملی (سداد)

    سلام
    یه پروژه متن باز هست به اسم پرباد که چندین درگاه بانکی رو هم پشتیبانی می کنه.

    پشتیبانی از درگاه‌های: ملت، ملی (سداد)، پارسیان، پاسارگاد، ایران کیش، سامان و آسان پرداخت ، زرین پال، پی آی آر و آی دی پی

  6. #6
    کاربر دائمی آواتار moslem.hady
    تاریخ عضویت
    فروردین 1388
    محل زندگی
    پشت میز کامپیوتر
    سن
    34
    پست
    661

    نقل قول: نمونه کد اتصال به بانک ملی (سداد)

    نقل قول نوشته شده توسط Ali_M.Eghbaldar مشاهده تاپیک
    ممنون از دوستانی که کمک کردند. خب ما یادگرفتیم خودمون همه چیز راس و ریس کنیم بگذریم ...
    از اونجایی که دوست ندارم کسِ دیگه ای چند روز وقتش گرفته بشه، روند استفاده از کدهای (شاهکار) سداد میذارم. امیدوارم بدردتون بخوره
    تشکر بابت به اشتراک گذاری

تاپیک های مشابه

  1. پاسخ: 5
    آخرین پست: شنبه 18 مهر 1394, 23:57 عصر
  2. پاسخ: 5
    آخرین پست: چهارشنبه 05 شهریور 1393, 19:44 عصر
  3. پاسخ: 0
    آخرین پست: سه شنبه 12 دی 1391, 17:09 عصر
  4. پاسخ: 4
    آخرین پست: جمعه 05 اسفند 1390, 18:25 عصر
  5. پاسخ: 3
    آخرین پست: چهارشنبه 09 شهریور 1390, 16:06 عصر

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •