我正在构建一个脚本以通过 HTML POST 将数据发送到 WorldPay。这一切都很好,除非在处理付款后它不会重定向回客户的网站。
我已将返回 URL 添加到管理系统的付款响应 URL 中,并将 MC_callback 值添加到 HTML 表单中。
$call_back_url = HTTP_ROOT."/checkout_result/?order_id=".$_order->order_id;
$data = array(
"instId" => "1009258",
"cartId" => $_settings['shop_name']. " Order ID ".$_order->order_id,
"currency" => "GBP",
"testMode" => "100",
"name" => $_order->first_name . " " . $_order->surname,
"email" => $_order->email,
"address1" => $_order->billing_address_1,
"address2" => $_order->billing_address_2,
"address3" => $_order->billing_address_3,
"town" => $_order->billing_town_city,
"postcode" => $_order->billing_postcode,
"country" => $_order->billing_country,
"tel" => $_order->tel,
"amount" => $_order->paid,
"desc" => $_settings['shop_name']. " Order ID ".$_order->order_id,
"MC_callback" => $call_back_url,
);
?>
<div style="display: none;">
<form action="https://secure-test.worldpay.com/wcc/purchase" method="POST" id="submit_worldpay" />
<?php foreach($data as $key => $value){ ?>
<input type="hidden" name="<?php echo $key; ?>" value="<?php echo $value; ?>">
<?php } ?>
<fieldset class="submit">
<input type="submit" value="Confirm your purchase" />
</fieldset>
</form>
</div>
<script type="text/javascript">
document.getElementById('submit_worldpay').submit(); // SUBMIT FORM
</script>
我在 WorldPay 的网站上收到以下消息:
这不是实时交易。没有钱易手。 谢谢,您的付款已成功。 商户编号:我的店铺订单编号 823 WorldPay 交易 ID:{数字在这里,但我隐藏了它}
最佳答案
我遇到了同样的问题,这就是我所做的。
首先,了解回调 URL 并不意味着 Worldpay 可以重定向到。它只是执行一个“服务器到服务器”的调用来通知服务器事务的状态。
如果您没有上传任何 resultY.html,Worldpay 将显示您提到的页面。 resultC.html 也类似。请注意,这些文件名区分大小写。
我用一个简单的 META 标签上传了这 2 个文件,该标签将用户重定向到我的网站。 resultY 将重定向成功页面,resultC 将重定向到“抱歉,请重试”页面。在此重定向中,您可以添加原始变量 MC_*。
<meta http-equiv="refresh" content="0; url=<wpdisplay item=MC_callbackURL>?cartId=<wpdisplay item=MC_cartId>&Result=Y">
在重定向中,我附加了购物车 ID。请注意 - 您不应根据此链接更新您的数据库。对数据库的更新是通过 Worldpay 的服务器到服务器调用执行的。
就是这样。
关于php - 集成 WorldPay HTML 重定向时 MC_callback 不重定向,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24057123/
我想使用spawn(针对多个并发子进程)在Ruby中执行一个外部进程,并将标准输出或标准错误收集到一个字符串中,其方式类似于使用Python的子进程Popen.communicate()可以完成的操作。我尝试将:out/:err重定向到一个新的StringIO对象,但这会生成一个ArgumentError,并且临时重新定义$stdxxx会混淆子进程的输出。 最佳答案 如果你不喜欢popen,这是我的方法:r,w=IO.pipepid=Process.spawn(command,:out=>w,:err=>[:child,:out])
按照目前的情况,这个问题不适合我们的问答形式。我们希望答案得到事实、引用或专业知识的支持,但这个问题可能会引发辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visitthehelpcenter指导。关闭9年前。我来自C、php和bash背景,很容易学习,因为它们都有相同的C结构,我可以将其与我已经知道的联系起来。然后2年前我学了Python并且学得很好,Python对我来说比Ruby更容易学。然后从去年开始,我一直在尝试学习Ruby,然后是Rails,我承认,直到现在我还是学不会,讽刺的是那些打着简单易学的烙印,但是对于我这样一个老练的程序员来说,我只是无法将它
按照目前的情况,这个问题不适合我们的问答形式。我们希望答案得到事实、引用或专业知识的支持,但这个问题可能会引发辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visitthehelpcenter指导。关闭10年前。使用Railsv2.1,假设您有一个可从多个位置访问的Controller的操作。例如,在Rails应用程序中,您有一个链接可以从两个不同的View编辑用户,一个在用户索引View中,另一个在另一个View中(比方说从每个页面上的导航栏)。我想知道根据用户点击的链接将用户重定向回正确位置的最佳方法是什么。例如:示例1:列出所有用户点击列表中用户的“编辑”
这个简单的示例使用DataMapper的before:save回调(又名Hook)来增加callback_count。callback_count初始化为0,回调应该设置为1。当通过以下方式创建TestObject时调用此回调:TestObject.create()但是当FactoryGirl通过以下方式创建时会跳过回调:FactoryGirl.create(:test_object)知道为什么吗?[注意:我正在运行ruby1.9.3,factory_girl4.2.0,data_mapper1.2.0]详细信息如下...DataMapper模型#file:models/test_
我正在使用一个用RubyonRails构建的应用程序,目前错误处理非常差。如果通过ajax执行Controller方法,并且该方法导致500(或404或任何其他响应),则呈现500.html页面并将其作为AJAX请求的结果返回。显然,javascript不知道如何处理该HTML,网页看起来只是在等待响应。在AJAX调用期间发生错误时,rails是否有一种简单的方法来呈现error.rjs模板? 最佳答案 您可以在Controller的rescue_action或rescue_action_in_public方法中使用respond_
我有一个FactoryGirl工厂,它创建一个Order但before(:create)回调不会创建关联的工厂对象:父类classOrder子类classOrderLine工厂Factory:orderdo...ignoredonumber_or_order_lines1endbefore(:create)do|order,evaluator|FactoryGirl.create_list:order_line,evaluator.number_or_order_lines,order:orderendendFactory:order_linedoassociation:userass
我们想要一个Controller集合,我们将所有操作和下游方法的记录器输出路由到一个单独的日志文件。这是一个Rails3项目。在Rails2中,我们通过重新定义“logger”方法来做到这一点,但在Rails3中,记录的方式是使用“Rails.logger”。我试着把Rails::logger=Logger.new(File.join(Rails.root,'log',"reports_controller.log"),10,1000000)在Controller的顶部,但只有在操作中专门使用Rails.logger的特定情况才会发送到指定的日志文件,Controller的所有默认日志
在bash中,这给出了预期顺序的输出:ruby-e"puts'one';raise'two'"one-e:1:in`':two(RuntimeError)但是如果我将STDERR重定向到STDOUT,我会在输出之前收到错误,这是我不想要的:ruby-e"puts'one';raise'two'"2>&1|cat-e:1:in`':two(RuntimeError)one我想将输出重定向到一个文本文件(它的行为方式与上面的cat相同)并获得输出和异常,但顺序与查看我的输出时的顺序相同终端。这能实现吗? 最佳答案 发生这种情况是因为行缓
我正在创建一个包含设计的Rails应用程序。我正在尝试使用Ngrok将Twilio消息传递添加到我的站点,我使用了本教程:https://www.twilio.com/blog/2016/04/receive-and-reply-to-sms-in-rails.html我能够在控制台中打开Ngrok并获取他们为我的网址提供的网络ID。当我将url插入浏览器时,我不断收到此错误。我应该访问我自己的Rails本地应用程序。不知道怎么了。我在为ngrok制作的消息传递Controller中添加的内容:classMessagesController"reply"defreplymessage_
这个脚本被命名为o.rb:@logger=Logger.new(STDOUT)@logger.info"start_time:#{start_time}"当我使用./o.rb运行它时,控制台上的输出是正确的。但是,当我尝试./o.rb>log.txt2>&1时,日志文件是空的!为什么会这样?我在使用简单的puts函数时遇到了同样的问题。更新这将重现此问题:require'logger'logger=Logger.new(STDOUT)loopdologger.info"Thisisatesthaha"sleep(1)end当我使用./foo.rb运行它时,它会正确写入控制台输出。当我运