如何从WinJS iframe Windows 8 App形成POST到Paypal?

Sco*_*ott 5 javascript iframe paypal windows-8 winjs

我有一个使用Javascript/HTML的Windows 8应用程序,在iframe中我有一个Paypal表单:

<form action="https://www.paypal.com/cgi-bin/webscr" method="post" target="_blank">
<input type="hidden" name="cmd" value="_s-xclick">
<input type="hidden" name="on0" value="Pages">
<select name="os0">
    <option value="10">$1.95</option>
    <option value="25">$2.95</option>
</select>
<input type="hidden" name="currency_code" value="USD">
<input type="hidden" name="encrypted" value="[removed]">
<input type="image" src="/btn_buynow_LG.gif" border="0" name="submit" alt="">
</form>
Run Code Online (Sandbox Code Playgroud)

此表单在所有浏览器中都可以正常运行,包括IE10,但是当从Windows 8应用程序中的iframe内提交时,它将引导用户进入Pay​​pal主页.这通常表明表单存在问题.我尝试过托管的Paypal按钮,加密的,未加密的按钮,它们都表现出相同的行为.只有当我从Windows 8应用程序中提交此表单时才会进入Pay​​pal.com主页.

我还尝试将每个URL添加到我的清单中作为允许的URL:

<ApplicationContentUriRules>
<Rule Match="http://example.com" Type="include" />
<Rule Match="http://*.example.com" Type="include" />
<Rule Match="http://paypal.com" Type="include" />
<Rule Match="http://*.paypal.com" Type="include" />
<Rule Match="https://paypal.com" Type="include" />
<Rule Match="https://*.paypal.com" Type="include" />
</ApplicationContentUriRules>
Run Code Online (Sandbox Code Playgroud)

我尝试添加/删除沙箱属性并添加属性的所有组合,如下所示:

<iframe sandbox="allow-same-origin allow-top-navigation allow-forms allow-scripts allow-popups" src="http://example.com/paypalbtn.html"></iframe>
Run Code Online (Sandbox Code Playgroud)

如果我删除了target="_blank"那么Windows 8应用程序将导航到黑屏并挂起.我被迫使用alt-tab并关闭应用程序.我认为在另一个进程中将表单POST发送到新窗口是个问题.

如何从Windows 8应用程序的iframe中启动Paypal?

是否需要表单POST?我现在意识到表格GET是有效的.

Sco*_*ott 2

当从 Windows 8 应用程序中的 iframe 启动时,Paypal 将阻止表单 POST 到新窗口。结果是您看到的是 Paypal 主页而不是采购订单表格。

我可以确认,只需将表单方法切换为GET并使用 a 就target="_blank"可以完美地工作,没有问题:

 <form action="https://www.paypal.com/cgi-bin/webscr" method="get" target="_blank">
Run Code Online (Sandbox Code Playgroud)

在 iframe 中解决此问题的另一种方法是在文本或图像周围使用标准锚标记,并手动创建 URL,如下所示:

<a href="https://www.paypal.com/cgi-bin/webscr?custom=[custom info]&item_name=[URL encoded name]&item_number=[num]&amount=9.95&currency_code=USD&cmd=_xclick&business=[paypal email address]&return=[URL encoded URL]">Buy Now</a>
Run Code Online (Sandbox Code Playgroud)

此答案的功劳归于有关Paypal 链接而不是按钮的页面。