PDA

View Full Version : سوالاتی در مورد متدهای درگاه بانک ملت



bftarane
شنبه 14 تیر 1393, 10:17 صبح
1
طبق مستندات به این نتیجه رسیدم که تابع bpPayRequest باید در صفحه رفت

و توابع
bpVerifyRequest
bpSettleRequest
در صفحه برگشت از بانک باید فراخوانی بشوند، درسته؟
............................
2
در یک قسمت از مستندات گفته شده

همچنین اگر به هر دلیلی پذیرنده مقدار بازگشتی از bpVerifyRequest را دریافت ننماید (وضعیت تایید خرید برایش مشخص نباشد) باید از متد bpInquiryRequest برای استعلام آن استفاده نماید.

حالا می خواستم بدونم چطور چک کنیم bpVerifyRequest مقدار بازگشتی نداشته؟ مقدار بازگشتی از
به این شکل درسته؟ یعنی اگه برگشتی نداشته باشه null هست؟

if (result==null)



...............................................
3
در یک قسمت از مستندات گفته شده:

نكته: در صورتي كه مقدار بازگشتي تابع bpSettleRequest برابر " 45 " باشد به منزله موفق بودن عمليات
واريز مي باشد. در واقع تراكنش واريز، قبلا ارسال شده و موفق بوده است. به عبارت ديگر، كليه تراكنشهايي كه
مقدار بازگشتي " 0" و يا " 45 " داشته باشند به حساب واريز مي شوند.

خوب ما درخواست واریز رو هم دادیم و فرضاً نتیجه رویداد bpSettleRequest هم صفر یا 45 اومده و خوب این یعنی به حساب واریز خواهد شد، ولی اینکه صددرصد اومده تو حساب آیا راهی داره این چک بشه؟

لطفاً راهنمایی کنید.




این کل کدهای صفحه برگشت هم که من نوشتم لطفاً چک کنید ببینید درسته؟ البته خودم با 1000 ریال چک کردم به درگاه میره موقع برگشت هم ظاهراً همه چی اوکی هست ولی من که نمی تونم مطمئن بشم پول صد در صد به حساب کارفرما واریز شده.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

using System.Net;
using System.Security.Cryptography.X509Certificates;
using System.Net.Security;
using System.Text;
using System.Configuration;


public partial class PayBack : System.Web.UI.Page
{
public static readonly string PgwSite = ConfigurationManager.AppSettings["PgwSite"];
public static readonly string CallBackUrl = ConfigurationManager.AppSettings["CallBackUrl"];
public static readonly string TerminalId = ConfigurationManager.AppSettings["TerminalId"];
public static readonly string UserName = ConfigurationManager.AppSettings["UserName"];
public static readonly string UserPassword = ConfigurationManager.AppSettings["UserPassword"];
protected void Page_Load(object sender, EventArgs e)
{
//RefIdLabel.Text = Request.Params["RefId"];
//ResCodeLabel.Text = Request.Params["ResCode"];
//SaleOrderIdLabel.Text = Request.Params["SaleOrderId"];
//SaleReferenceIdLabel.Text = Request.Params["SaleReferenceId"];

string RefId = Request.Params["RefId"];
string ResCode = Request.Params["ResCode"];
string SaleOrderId = Request.Params["SaleOrderId"];
string SaleReferenceId = Request.Params["SaleReferenceId"];

if (ResCode=="0")
{

try
{
string result;
BypassCertificateError();
ir.shaparak.bpm.PaymentGatewayImplService bpService = new ir.shaparak.bpm.PaymentGatewayImplService();
result = bpService.bpVerifyRequest(Int64.Parse(TerminalId),
UserName,
UserPassword,
Int64.Parse(SaleOrderId),
Int64.Parse(SaleOrderId),
Int64.Parse(SaleReferenceId));
VerifyOutputLabel.Text = result;

if (result == "0")
{
//پرداخت با موفقیت صورت گرفت
lbl_TransactionNumber.Text =SaleReferenceId;


try
{
string SettelResult;

BypassCertificateError();

ir.shaparak.bpm.PaymentGatewayImplService SettelbpService = new ir.shaparak.bpm.PaymentGatewayImplService();
SettelResult = bpService.bpSettleRequest(Int64.Parse(TerminalId),
UserName,
UserPassword,
Int64.Parse(SaleOrderId),
Int64.Parse(SaleOrderId),
Int64.Parse(SaleReferenceId));
SettleOutputLabel.Text = SettelResult;
}
catch (Exception exp)
{
SettleOutputLabel.Text = "Error: " + exp.Message;
}
}
}
catch (Exception exp)
{
VerifyOutputLabel.Text = "Error: " + exp.Message;

}


}


}


void BypassCertificateError()
{
ServicePointManager.ServerCertificateValidationCal lback +=
delegate(
Object sender1,
X509Certificate certificate,
X509Chain chain,
SslPolicyErrors sslPolicyErrors)
{
return true;
};
}
}

_elhfarzan
دوشنبه 16 تیر 1393, 10:26 صبح
خیالت راحت درسته. وقتی بانک پاسخ میده و پارامتر دریافت کردی یعنی حتما پول واریز شده. با کوچکترین اشکالی بانک عملیات پرداخت را کنسل و کد مربوط رو به تو پاس میکنه.
در ضمن یه کد هم واسه استعلام گیری هست که میتونی کد تراکنش رو بدی و سپس تاییدش رو بگیری.
در ضمن کلیه تراکنش هاتو یک جا ثبت کن به همراه مبلغ و تاریخ بعد هرچند وقط یه گزارش از کل اون مبلغ بگیر بعد برو تو حساب کاربریت که بانک حتما بهت داده یه گزارش هم از اون بگیر ببین مبلغ تراکنشهای ثبت شده تو با اونی که بانک میگه درسته وچکش کن
البته گزارش از بانک یه 10 ساعتی با تاخیره. یعنی تو تراکنش رو الان ثبت کردی و حقیقت داره ولی بانک 10ساعت بعدش گزارش میده
در ضمن توجه داشته باش از متغیرهای استاتیک استفاده نکنی البته غیر از اونهایی که خود بانک داده