2012-02-26 5 views
0

Я использую образец кода DPS (http://sec.paymentexpress.com/technical_resources/ecommerce_hosted/pxpay.html) для ASP.Net (C#) для создания платежного шлюза для моя компания. Я работал нормально, отправляя запросы на Payment Express, получая ответы и т. Д., Как и следовало ожидать.событие нажатия кнопки прекращено после новой интеграции

Затем я попытался интегрировать его с моей системой. Я добавил некоторые ссылки из моего проекта, дал ему базовый класс для наследования и переместил функцию «look up/add to the database» в другой класс.

После всего этого, я проверил его снова, и событие нажатия кнопки не срабатывает. Я думал, что это может быть связано с новым наследованием, поэтому я изменил свою страницу на наследование «Страница» (как это было раньше), но это не помогло.

Функция «искать/добавлять в базу данных» приходит позже, поэтому я не думаю, что это имеет какое-либо отношение к ней.

Кто-нибудь знает, что, возможно, пошло не так?

Чтобы уточнить, я говорю, что событие не срабатывает, потому что я выбрал исключение как первую строку в событии и исключение не выбрасывает. Однако кнопка DOES делает обратную передачу.

Вот код:

ASPX:

<%@ Page Language="C#" AutoEventWireup="true" Codebehind="Default.aspx.cs" 
Inherits="PaymentGatewayDPS._Default" enableViewState="false" %> 

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org 
/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
<head runat="server"> 
    <title>PxPay .Net 3.5 test page</title> 
</head> 
<body> 
    <form id="form1" runat="server"> 
    <table style="width: 100%"> 
    <tr> 
     <td> 
      Amount 
     </td> 
     <td> 
      <asp:TextBox ID="txtAmountInput" runat="server"></asp:TextBox> 
     </td> 
    </tr> 
    <tr> 
     <td> 
      Currency 
     </td> 
     <td> 
      <asp:TextBox ID="txtCurrencyInput" runat="server"></asp:TextBox> 
     </td> 
    </tr> 
    <tr> 
     <td> 
      Reference 
     </td> 
     <td> 
      <asp:TextBox ID="txtMerchantReference" runat="server"></asp:TextBox> 
     </td> 
    </tr> 
    <tr> 
     <td> 
      Transaction type 
     </td> 
     <td> 
      <asp:DropDownList ID="ddlTxnType" runat="server"> 
       <asp:ListItem Selected="True">Purchase</asp:ListItem> 
       <asp:ListItem Value="Auth">Authorisation</asp:ListItem> 
      </asp:DropDownList> 
     </td> 
    </tr> 
    <tr> 
     <td> 
      &nbsp; 
     </td> 
     <td> 
      <asp:Button ID="Button1" runat="server" Text="Submit" 
OnClick="Button1_Click"/> 
     </td> 
    </tr> 
</table> 
<asp:Panel ID="Panel1" runat="server"> 
</asp:Panel> 
<asp:Literal id="LitTest" runat="server"/> 
</form> 
</body> 
</html> 

Начало моего C# Код:

namespace PaymentGatewayDPS 
{ 
public partial class _Default : TCInsuredQuoteBase 
{ 

Моя кнопка Событие:

protected void Button1_Click(object sender, EventArgs e) 
    { 
     throw new Exception("button clicked"); 
     string PxPayUserId = ConfigurationManager.AppSettings["PxPayUserId"]; 
     string PxPayKey = ConfigurationManager.AppSettings["PxPayKey"]; 

     PxPay WS = new PxPay(PxPayUserId, PxPayKey); 

     RequestInput input = new RequestInput(); 

     input.AmountInput = txtAmountInput.Text; 
     input.CurrencyInput = txtCurrencyInput.Text; 
     input.MerchantReference = txtMerchantReference.Text; 
     input.TxnType = ddlTxnType.Text; 
     input.UrlFail = Request.Url.GetLeftPart(UriPartial.Path); 
     input.UrlSuccess = Request.Url.GetLeftPart(UriPartial.Path); 

     // TODO: GUID representing unique identifier for the transaction within the shopping cart (normally would be an order ID or similar) 
     Guid orderId = Guid.NewGuid(); 
     input.TxnId = orderId.ToString(); 
     throw new Exception("about to Generate Request"); 

     RequestOutput output = WS.GenerateRequest(input); 

     if (output.valid == "1") 
     { 
      // Redirect user to payment page 
      Response.Redirect(output.Url); 
     } 
    } 
+0

Не можете ли вы отлаживать свой код, чтобы узнать, подходит ли его утверждение tll throw? – DotNetUser

+0

Смотрите, там есть проблема. Я использую MonoDevelop и способ, которым наш код организован, отладка не работает. Это настоящая боль. Вот почему я использовал исключения. –

+0

Вы установили AutoEventWireup в true в вашей разметке aspx? – DotNetUser

ответ

0

Я нашел проблема! Это было чем-то специфичным для ДПС. Я изменил идентификатор транзакции на более чем до 16 символов, и запрос был неудачным. Я просто не мог видеть, как это происходит, поэтому мне приходилось так долго находить. Спасибо вам за ваши предложения.