在我的MVC项目中,我需要与支付提供商处理一些费用。我有一个工作流程,用户选择不同的程序,我计算费用。在付款时,我查看了生成用户点击并转到支付网关的URL的位置。该链接具有网关所需的一些JSON对。但是,当用户单击链接时,我想在具有UserId和TransactionId的事务表中创建新记录,以便我可以在支付网关将其返回给我之后跟踪该事务。
所以在我看来,我有类似的东西(简化):
{
int TotalFees = (some fee calculation)
string url = "{my JSON string goes here}";
<a href="https://xyz.com/PayNow?paymentData=@url">Pay By Credit Card/e-Check ($@TotalFees).</a>
}
注意:xyz.com是外部支付网站。
我在控制器中创建了一个动作方法,但是如果我发布到另一个站点,如何从链接点击中调用此控制器?如何拦截用户点击外部链接并呼叫控制器?我应该使用按钮执行此Javascript并从该方法中重定向到付款提供商吗?
另一种方法是在控制器而不是视图中进行整个费用计算,但这有问题,因为我想在视图上收集用户输入以计算要收取的费用。
答案 0 :(得分:0)
您是否可以对控制器执行html actionlink,而不是直接发布到最终站点。然后在你的控制器动作中做帖子吗?
答案 1 :(得分:0)
我会建议一个不同的设计。看来,提前创建事务对象/数据和/或将其附加到您在订购工作流程中用于构建订单的任何对象是有意义的。然后,您可以在订单完成后管理其数据/状态(并且在某种待处理状态下进行交易会很好,因为付款可能实际上没有完成)。简单干净。您似乎有可能以现在的方式将业务逻辑放在您的视图中,特别是如果您在那里进行费用计算。