2012-12-22 15 views
5

Tôi có một Windows 8 App sử dụng Javascript/HTML và trong một iframe Tôi có một hình thức Paypal:Làm thế nào để tạo thành POST cho Paypal từ khung nội tuyến WinJS Windows 8 App?

<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> 

hình thức này hoạt động hoàn toàn tốt đẹp trong tất cả các trình duyệt, bao gồm IE10 nhưng khi gửi từ bên trong khung nội tuyến trong Windows 8 Ứng dụng, nó sẽ dẫn người dùng đến trang chủ Paypal. Điều này thường chỉ ra một vấn đề với biểu mẫu. Tôi đã thử các nút Paypal được lưu trữ, các nút mã hóa, không được mã hóa và tất cả đều thể hiện cùng một hành vi. Chỉ khi tôi gửi biểu mẫu này từ bên trong Ứng dụng Windows 8, nó sẽ đến trang chủ Paypal.com.

Tôi cũng đã thử thêm mỗi URL để biểu hiện của tôi như là URL được phép:

<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> 

tôi đã cố gắng thêm/gỡ bỏ các thuộc tính sandbox và thêm tất cả các kết hợp của các thuộc tính như sau:

<iframe sandbox="allow-same-origin allow-top-navigation allow-forms allow-scripts allow-popups" src="http://example.com/paypalbtn.html"></iframe> 

Nếu tôi xóa target="_blank" thì ứng dụng Windows 8 sẽ điều hướng đến màn hình màu đen và treo. Tôi buộc phải alt-tab và tắt ứng dụng. Tôi cho rằng đó là một vấn đề với biểu mẫu POST tới một cửa sổ mới trong tiến trình khác.

Làm cách nào để tôi có thể khởi chạy Paypal từ bên trong iframe của ứng dụng Windows 8?

Biểu mẫu POST có bắt buộc phải không? Bây giờ tôi nhận ra rằng một biểu mẫu GET hoạt động.

+1

tôi nghĩ rằng payapal rằng liều không hỗ trợ hình thức iframe nộp –

+1

@SVarun là đúng. Vấn đề này được đề cập trong [chủ đề này tại đây] (http://stackoverflow.com/questions/9464173/embed-paypal-in-an-iframe). Đó là một biện pháp an ninh, rõ ràng. –

Trả lời

2

Paypal sẽ chặn biểu mẫu POST tới cửa sổ mới khi được khởi chạy từ khung nội tuyến trong ứng dụng Windows 8. Kết quả là bạn nhìn thấy trang chủ Paypal thay vì mẫu đơn đặt hàng.

tôi có thể xác nhận rằng chỉ đơn giản là chuyển đổi phương pháp hình thức để GET và sử dụng một target="_blank" công trình một cách hoàn hảo mà không cần phát hành:

<form action="https://www.paypal.com/cgi-bin/webscr" method="get" target="_blank"> 

Một cách khác xung quanh vấn đề này trong iframe là sử dụng một thẻ neo tiêu chuẩn xung quanh văn bản hoặc một hình ảnh và tạo URL theo cách thủ công như vậy:

<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> 

Khoản tín dụng cho câu trả lời này được chuyển đến trang này về Paypal links instead of buttons.

0

Tôi không nghĩ rằng paypal cho phép hỗ trợ iframe. Họ rất có thể sử dụng này:

X-Frame Options

Nó cho phép họ phát hiện nếu trang web được hiển thị trong iframe và nếu như vậy ngăn chặn nó tải .. (aka hiển thị trang trống) như bạn đang gặp phải.

Và không có cách nào xung quanh việc này.

+0

Có, tôi có thể xác nhận rằng Paypal gửi tiêu đề phản hồi của 'X-FRAME-OPTIONS: SAMEORIGIN'. Điều đó sẽ ngăn không cho Paypal.com được hiển thị trong khung nội tuyến của tôi nhưng tôi đang cố gắng thực hiện một bài đăng biểu mẫu đến một cửa sổ mới từ khung nội tuyến. URL đó trong khung nội tuyến là URL của tôi để example.com đang đăng lên paypal.com trong một cửa sổ mới. Bài viết có vẻ hợp lệ nhưng tôi đoán Paypal đang phát hiện một cái gì đó hài hước và hiển thị trang chủ paypal. – Scott

+0

Từ những gì nó nói 'Trang chỉ có thể được hiển thị trong một khung trên cùng một nguồn gốc với trang đó.' có nghĩa là cửa sổ mới không còn xuất hiện như cũ nữa - hoặc ít nhất đó là cách tôi hiểu nó. – Sir

+0

Không sao vì Paypal không được hiển thị trong khung nội tuyến. Tôi nghĩ tôi có thể đăng lên một cửa sổ mới có nguồn gốc khác. – Scott

0

Tôi gặp sự cố tương tự với PayPal và ứng dụng Cửa hàng Windows. Tôi vừa mới công bố giải pháp của tôi để các vấn đề trong chủ đề này:

Windows Store HTML app with popup window

Các vấn đề liên quan