我正在为我的新ASP.NET MVC 3项目添加一个“确认付款”页面。验证输入后,我会显示一个确认页面,以允许用户确保他们正确输入了所有内容。我的下一个问题是如何“存储”输入的数据,以便在点击“确认”后处理付款。很明显,我不想用完整的信用卡号码创建隐藏字段。如何在确认页面上存储付款处理数据?
我正在使用我们的购物车的会话,但它是否加密数据,以便信用卡号码不能被黑客入侵?这方面推荐的方法是什么?我在Google上完成的搜索并没有真正发挥。
我将显示他们在前一页输入的信息(以确认数据输入)。正确掩盖当然的信用卡号码。
付款信息
的信用卡名称:名称
信用卡号码:XXXX XXXX XXXX 1111
截止日期:10/2011
信用卡验证码:100
总共需收费:$ 50.86
当然这个帖子上的所有数字都是假的。
这是我目前使用的代码。
//
// POST: /Checkout/AddressAndPayment
[HttpPost]
public ActionResult AddressAndPayment(Cart cart, PaymentForm formData)
{
if (cart.Items.Count() == 0)
{
ModelState.AddModelError("", "Sorry your cart is empty!");
}
if (ModelState.IsValid)
{
var viewModel = new AddressPaymentViewModel
{
FormData = formData,
Cart = cart
};
return View("Confirm", viewModel);
}
else
{
var viewModel = new AddressPaymentViewModel
{
FormData = formData,
Cart = cart,
States = States.GetStatesDDL(),
CreditCardTypes = CreditCartTypes.GetCreditCardTypesDDL()
};
return View(viewModel);
}
}
//
// GET: /Checkout/Confirm
public ViewResult Confirm()
{
return View();
}
所以从那里,当我运行
//
// POST: /Checkout/Confirm
[HttpPost]
public ViewResult Confirm(Cart cart, PaymentForm formData)
{
return View();
}
我需要仍然有表单数据发送到信用卡处理器。
有没有更好的方法来做到这一点?什么是“最佳实践”?
Another method我见过的是用信用卡处理器做一个“PreAuth”和“PostAuth”,不存储那个数据周期,只是一个订单ID。
最佳做法是让知道自己在做什么的人处理付款,将用户与顾客和订单详细信息反弹给他们,然后弹回给您确认。这也可以帮助您在超安全的基础架构和审计上花费数十万美元。 – cjk