我使用托管付款页面,此处系统重定向到nab交易页面进行付款,并在交易批准后显示收据页面。 我在输入隐藏变量中设置了return_link_url和reply_link_url,如下所示。
<form action="https://demo.transact.nab.com.au/live/hpp/payment" method="post" id="payment">
<input type="hidden" name="vendor_name" value="XXXXXXX" />
<input type="hidden" name="payment_alert" value="xx@xx.com.au" />
<input type="hidden" name="print_zero_qty" value="false">
<input type="hidden" name="return_link_text" value="Click Here to Return to the Home Page">
<input type="hidden" name="return_link_url" value="http://www.mysite.com.au/index.php?route=payment/nabtrans/callback&order_id=51216" />
<input type="hidden" name="reply_link_url" value="http://www.mysite.com.au/index.php?route=payment/nabtrans/callback&order_id=51216" />
<input type="hidden" name="Pay for Order number 51216" value="22" />
<input type="hidden" name="payment_reference" value="51216" />
<input type="hidden" name="Name" value="XXX XX" />
<input type="hidden" name="information_fields" value="Name">
问题是,如指南中所述,在向客户显示付款收据页面时,answer_link_url不会自动触发。
我尝试使用适当的cgi处理程序,如果调用它会执行。所以,我在回复链接网址中使用了它们,但链接仍然没有自动触发。
<input type="hidden" name="return_link_url" value="http://www.mysite.com.au/cgi-bin/handler.cgi?orderid=51217" />
<input type="hidden" name="reply_link_url" value="http://www.mysite.com.au/cgi-bin/handler.cgi?orderid=51217" />
我必须点击付款收据页面上的退货链接才能返回网站。在15秒超时后显示收据页面后,reply_link_url永远不会自动触发。我确保在回复链接url中使用http以使其在端口80上进行侦听。如果我在浏览器中运行它,则会执行CGI脚本。
我为reply_link_url和return_link_url使用了两个不同的网址。 他们是
<input type="hidden" name="return_link_url" value="http://www.mysite.com.au/index.php?route=payment/nabtrans/replyback&order_id=51216" />
<input type="hidden" name="reply_link_url" value="http://www.mysite.com.au/index.php?route=payment/nabtrans/callback&order_id=51216" />
我确保在回拨函数中添加代码以在付款批准后执行后台进程,并使用代码重定向到回复函数内的付款成功页面。这两个函数都驻留在nabtrans控制器中。正如我注意到,回复链接会自动触发执行后台进程以更新订单,但显示结帐/成功页面的最后一步从未将nabtrans的付款成功页面中的链接带到原始网站。我仍然很高兴所有后台任务都完成了。所以,我使用返回链接回到原始网站。这解决了完成交易和回到网站的目的。