我有一个旧版应用程序,我需要对其进行更改以适应新的支付处理器。该应用程序是 Asp.Net。在不重建应用程序(不在预算内)的情况下,我需要采用最终表单并将其中的信息保存在后面的代码中,就像现在一样,然后我需要将相同的表单提交给第三方 url。理想情况下,一键推送给最终用户。
我正在画一个完全空白的方法来做到这一点。有什么建议么?
忘了提到 JQuery 和 javascript 都是解决方案的有效工具。
我有一个旧版应用程序,我需要对其进行更改以适应新的支付处理器。该应用程序是 Asp.Net。在不重建应用程序(不在预算内)的情况下,我需要采用最终表单并将其中的信息保存在后面的代码中,就像现在一样,然后我需要将相同的表单提交给第三方 url。理想情况下,一键推送给最终用户。
我正在画一个完全空白的方法来做到这一点。有什么建议么?
忘了提到 JQuery 和 javascript 都是解决方案的有效工具。
您可以创建一个绑定到表单提交按钮的单击事件或表单提交事件的 javascript 函数。该功能需要防止触发默认表单提交。使用jQuery对表单数据进行序列化,并创建一个同步的AJAX请求将数据提交给第三方。ajax提交完成后,就可以触发表单提交到code-behind。如果 ajax 未能正确提交,您可以选择将表单提交中止到代码隐藏。
您可能需要考虑 XSS 安全性,因此请查看跨域资源共享和 Access-Control-Allow-Origin 标头。
另一种选择是让代码隐藏充当 http 客户端并将表单数据提交给第三方。
所以目前它正在通过代码保存结果?好吧,你可以通过在页面上放置一些 javascript 来破解它,该页面读取表单值并发布它们(例如使用 jquery),然后再进行实际的 asp 发布。
编辑(这样的事情可能会有所帮助(在某些情况下):
//change the action of the form (you could just change in code or this
$('#myform').attr('action','http://newpaymentproc.com/me/');
//override the default submit
$('#myformsubmitbutton').click(function(){
//extract the form data somehow (depends on form)
var formObj;
$.each($('#myform').find('input').serializeArray(), function(i, field) {
formObj[field.name] = field.value;
});
//post to old place
$.post('/old_current.asp', formObj).then(
//after posting to old place and getting response...
//submit form to new payment processor
$('#myform').submit()
);
// Cancel the actual form submit click to give time for post
return false;
});
另一种方法是让遗留代码(提交后)吐出一个包含数据的表单和一些javascript来触发页面加载时的提交。
原始过程完成后,只需获取提交的表单数据并将其推送到您正在使用的任何 URL。它需要对原始应用程序进行最少的修改。
我没有代码可以继续,所以我没有代码可以提供。希望有帮助!