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

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

  1. #1

    نمونه کد اتصال به بانک ملت (به پرداخت)

    سلام
    این چند وقت همش درگیر درگاه های بانکی بودم و هستم اول سداد ( نمونه کد اتصال به بانک ملی (سداد) ) و حالا هم ملت. جالب قضیه اینجاست که باز سداد نمونه کد (هرچند قدیمی و بروز نشده و ...) در اختیار من گذاشت، ولی «به پرداخت» گفت نمونه کد هم نداریم و فقط مستندات (منظورش همون PDF بود! - آدم فکر میکنه چه چیز(هایی) میخوان حالا بفرستن!) ایمیل کردند، زنگ هم زدم میگن اصلا نمونه کد نداریم! فک کنم برم سراغ درگاه بعدی احتمالا میگن بیا وب سرویس هم تو بنویس خودتم استفاده کن! هیچ ارزشی برای وقت آدم قائل نیستن، متاسفم!
    نمونه کدهایی البته با C#‎‎‎‎‎‎‎‎‎‎ تو گوگل و سایت های دیگر و توی همین فروم هم هست ولی هم قدیمی هم خب C#‎‎‎‎‎‎‎‎‎‎ ئه.
    باز هم بگذریم دوستان ...

    نمونه کد تست شده با VB در اختیارتون میذارم. امیدوارم بدردتون بخوره

    قبل از هر چیزی بگم که کدهایی «به پرداخت»چون آیپی سایتتون (همون که توی فرم ها تحویلشون دادید) چک میکنه توی localhost قابلیت اجرایی نداره و با خطای 421 مواجه میشید که invalid IP طبق مستندات!!!

    1) اضافه کردن وب سرویس به آدرس:
    https://bpm.shaparak.ir/pgwchannel/services/pgw?wsdl

    توجه: کدهای زیر پس از اد کردن وب سرویس توی web.config باید ایجاد بشه:
      <system.serviceModel>    <bindings>
    <basicHttpBinding>
    <binding name="PaymentGatewayImplServiceSoapBinding">
    <security mode="Transport"/>
    </binding>
    <binding name="PaymentGatewayImplServiceSoapBinding1"/>
    </basicHttpBinding>
    </bindings>
    <client>
    <endpoint address="https://bpm.shaparak.ir/pgwchannel/services/pgw" binding="basicHttpBinding" bindingConfiguration="PaymentGatewayImplServiceSoa pBinding" contract="Mellat.IPaymentGateway" name="PaymentGatewayImplPort"/>
    </client>
    </system.serviceModel>


    2) مشخصات کد پذیرندگی، ترمینال، نام کاربری و پسورد در فایل web.config صرفا جهت امنیت: (این موارد ایمیل میشن توسط به پرداخت عزیز!)
        <add key="Bmellat_PgwSite" value="https://bpm.shaparak.ir/pgwchannel/startpay.mellat"/>    <add key="Bmellat_TerminalId" value="*********"/>
    <add key="Bmellat_UserName" value="**********"/>
    <add key="Bmellat_UserPassword" value="********"/>
    <add key="Bmellat_CallBackUrl" value="http://yoursite.com/bmellat"/>


    3) متغیرهای زیر بصورت پاپلیک (Pgwsite = اجباری) در هدر تعریف کنید:
        Public PgwSite As String = ConfigurationManager.AppSettings("Bmellat_PgwSite"  )    Dim CallBackUrl As String = ConfigurationManager.AppSettings("Bmellat_CallBack  Url")
    Dim TerminalId As String = ConfigurationManager.AppSettings("Bmellat_Terminal Id")
    Dim UserName As String = ConfigurationManager.AppSettings("Bmellat_UserName ")
    Dim UserPassword As String = ConfigurationManager.AppSettings("Bmellat_UserPass word")


    4) دستورات زیر برای ارجاع به بانک مثلا از طریق Button استفاده کنید:
            Dim localdate As String = DateTime.Now.Year.ToString() + DateTime.Now.Month.ToString().PadLeft(2, "0") + DateTime.Now.Day.ToString().PadLeft(2, "0")        Dim localtime As String = DateTime.Now.Hour.ToString().PadLeft(2, "0") + DateTime.Now.Minute.ToString().PadLeft(2, "0") + DateTime.Now.Second.ToString().PadLeft(2, "0")


    Dim M As New Mellat.PaymentGatewayClient
    Dim Result As String = M.bpPayRequest(Val(TerminalId), _
    UserName, _
    UserPassword, 1101120, 1000, localdate, localtime, "", CallBackUrl, 1)


    Dim resultarray() As String = Result.Split(",")
    If (resultarray(0) = "0") Then
    ClientScript.RegisterStartupScript(GetType(Page), "ClientScript", "<script language='javascript' type='text/javascript'> postRefId('" + resultarray(1) + "');</script> ", False)
    End If


    5) دستورات زیر در HTML و در Head:
     <script language="javascript" type="text/javascript">                function postRefId(refIdValue) {
    var form = document.createElement("form");
    form.setAttribute("method", "POST");
    form.setAttribute("action", "<%= PgwSite %>");
    form.setAttribute("target", "_self");
    var hiddenField = document.createElement("input");
    hiddenField.setAttribute("name", "RefId");
    hiddenField.setAttribute("value", refIdValue);
    form.appendChild(hiddenField);
    document.body.appendChild(form);
    form.submit();
    document.body.removeChild(form);
    }
    </script>


    6: و در انتها دستورات خوانش مقادیر برگشتی از بانک:
            RefIdLabel.Text = Request.Params("RefId")        ResCodeLabel.Text = Request.Params("ResCode")
    SaleOrderIdLabel.Text = Request.Params("SaleOrderId")
    SaleReferenceIdLabel.Text = Request.Params("SaleReferenceId")

    با مقدار برگشتی ResCode میتونید بفهمید که تراکنش تون موفق بوده یا نه. اگر صفر بود موفق است و اگر غیر از صفر براساس جدول شماره یازده ناموفق. مثلا اگر 17 برگشت داده شد یعنی کاربر روی دکمه ی انصراف زده.
    بعد از بررسی صحت ResCode و صفر بودن آن باید با استفاده از کد verify زیر به بانک بفهمونید که عملیات درست انجام شده در غیر این صورت مبلغ به حساب مشتری برمیگرده.
     Dim M As New Mellat.PaymentGatewayClient
    ResCode = M.bpVerifyRequest(TerminalId, username, password, Val(SaleOrderId), Val(SaleOrderId), Val(SaleReferenceId))

    مقدار جدید برگشتی ResCode هم حاوی کد تائید براساس جدول است. (این کد با کد اولیه که توی ResCode ریخته شد متفاوته من هر دو رو توی ی متغیر ریختم شما میتونید توی متغیر های متفاوت بریزید.)

    بازم اگر به نکته ای رسیدم مثل پست «سداد» ویرایش میکنم.
    موفق باشید.
    آخرین ویرایش به وسیله Ali_M.Eghbaldar : چهارشنبه 21 خرداد 1399 در 14:56 عصر

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

  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 عصر

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

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