amit2620 Ответов: 2

Прозрачный редирект с Брейнтри с asp.net 4,0


Всем Привет,
Я пытаюсь реализовать прозрачное перенаправление для платежей по кредитным картам в одном из моих веб-приложений. Есть ли у кого-нибудь опыт работы с платежами braintree раньше? Я пытаюсь следить за их материалами в интернете, но все они находятся в MVC. Как бы я использовал прозрачный редирект для обработки любых транзакций по кредитным картам через asp .Net (C#)? Не могли бы вы помочь мне начать работу или предоставить мне несколько образцов?
Заранее спасибо

2 Ответов

Рейтинг:
1

David_Wimbley

Эй, я получил настоящий удар в темноте. this...in теория, которую он "должен" компилировать, но у меня нет возможности проверить это, так как у меня нет мозгового дерева...дерева...неважно ... счет.

Индекс Модели MVC.веб-cshtml по формам версии по умолчанию.aspx-файл

-- Обратите внимание, что я очень ленив и не знаю, как вызывать переменные веб-форм...способ бритвы (который, кстати, очень красив) - это просто @SessionUtils.Пример.Трдата. Я думаю, что это должно быть что-то вроде <% SessionUtils.Пример.TrData /%> или something...im предполагая, что, поскольку вы запрашиваете код веб-форм, вы, по крайней мере, знаете, как вызвать переменную в файле .aspx.

<html>
  <head>
    <style type='text/css'>label {display: block;} input {margin-bottom: 10px;}</style>
  </head>
  <body>
    <h1>Braintree Credit Card Transaction Form</h1>
    <form id='payment-form' action='//Call to SessionUtils.Instance.TransparentRedirectUrl' method='POST'>
      <input type='hidden' name='tr_data' value='//Call To SessionUtils.Instance.TrData' />
      <div>
        <h2>Credit Card</h2>
        <label for='braintree_credit_card_number'>Credit Card Number</label>
        <input type='text' name='transaction[credit_card][number]' id='braintree_credit_card_number' value='4111111111111111'></input>
        <label for='braintree_credit_card_exp'>Credit Card Expiry (mm/yyyy)</label>
        <input type='text' name='transaction[credit_card][expiration_date]' id='braintree_credit_card_exp' value='12/2015'></input>
      </div>
      <input class='submit-button' type='submit' />
    </form>
  </body>
</html>


Отделенного кода по умолчанию.aspx-файл.в CS

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

namespace WebApplication1
{
    public partial class _Default : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
			SessionUtils.Instance.TrData = Constants.Gateway.Transaction.SaleTrData(
				new TransactionRequest
				{
					Amount = 1000.00M,
					Options = new TransactionOptionsRequest
					{
						SubmitForSettlement = true
					}

				},
				"http://localhost:49283/result"
			);
			SessionUtils.Instance.TransparentRedirectURL = Constants.Gateway.TransparentRedirect.Url;
		
        }
    }
	
	//This was specified in braintree demo mvc 3 project
	public class Constants
	{
		public static BraintreeGateway Gateway = new BraintreeGateway
		{
		  Environment = Braintree.Environment.SANDBOX,
		  PublicKey = "your_public_key",
		  PrivateKey = "your_private_key",
		  MerchantId = "your_merchant_id"
		};
	}
	
	//Im more of an mvc 3 guy and they used viewdata/viewbag for hold some of their data. I found it easiest to just use a singleton class
	//     It may not be the best way or the "webforms" way but hey...it works.
	public class SessionUtils
	{
		#region Singleton

		private const string SESSION_SINGLETON_NAME = "Singleton_502E69E5-668B-E011-951F-00155DF26207";

		private Sessions()
		{

		}

		public static Sessions Instance
		{
			get
			{
				if (HttpContext.Current.Session[SESSION_SINGLETON_NAME] == null)
				{
					HttpContext.Current.Session[SESSION_SINGLETON_NAME] = new Sessions();
				}

				return HttpContext.Current.Session[SESSION_SINGLETON_NAME] as Sessions;
			}
		}

		#endregion
		
		public object TrData { get; set; }
		public object TransparentRedirectURL { get; set; }
		public string Message { get; set; }
	}
}


Результат Индекса/.штмл-форм..мы называем это результат.aspx-файл

<html>
  <body>
    <h1>Transaction Response</h1>
    <ul>
      <li>Status - //Call to SessionUtils.Instance.Message</li>
    </ul>
  </body>
</html>



Код позади для Result.aspx.cs

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

namespace WebApplication1
{
    public partial class _Default : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
			Result<transaction> result = Constants.Gateway.TransparentRedirect.ConfirmTransaction(Request.Url.Query);
            if (result.IsSuccess())
            {
                Transaction transaction = result.Target;
                SessionUtils.Instance.Message = transaction.Status;
            }
            else
            {
                SessionUtils.Instance.Message = string.Join(", ", result.Errors.DeepAll());
            }
        }
    }
	
	
}</transaction>


Если у вас есть какие-либо вопросы об этом коде, пожалуйста, дайте мне знать...я не знаю, насколько я могу помочь с документацией brain stuff и техническими подробностями об этом, поскольку я никогда не использовал их, но это должно/может помочь вам указать правильное направление для webforms...возможно...


Рейтинг:
1

Hemant Gehlot

private Sessions()
		{
 
		}

не работать