如何程序化点击PayPal SDK跨域iframe内的隐藏按钮?
程序化点击PayPal iframe按钮的问题解答
结论:无法通过你当前的代码实现点击
浏览器的同源策略会严格限制跨域iframe的访问,PayPal提供的iframe和你的本地服务(http://localhost:4000)属于不同源,父页面根本无权访问iframe内部的DOM元素,你遇到的Uncaught DOMException: Blocked a frame with origin "http://localhost:4000" from accessing a cross-origin frame错误就是这个限制导致的。正确的实现方式:使用PayPal官方SDK API
不要试图直接操作iframe内的按钮,应该通过PayPal官方提供的JS SDK来触发支付流程。PayPal SDK专门设计了用于控制支付的API,比如初始化按钮时定义相关逻辑,或者通过SDK提供的方法主动发起支付。示例代码:
// 初始化PayPal支付按钮 const paypalButton = paypal.Buttons({ createOrder: (data, actions) => { return actions.order.create({ purchase_units: [{ amount: { value: '10.00' } }] }); }, onApprove: (data, actions) => { return actions.order.capture().then(details => { console.log('支付完成:', details); }); } }).render('#paypal-button-container'); // 若需主动触发支付,可通过SDK提供的对应方法(具体参考官方API) // 核心逻辑是依赖官方API,而非跨域操作DOM补充说明
PayPal的iframe受同源策略保护是为了支付安全,防止恶意网站伪造用户操作,所以直接操作iframe内部元素的方式从设计上就被禁止了,必须遵循官方的交互规范。
内容的提问来源于stack exchange,提问作者Lesha Petrov
相关产品推荐
相关产品推荐

