PayPal自适应支付:一个发件人在两个浏览器选项卡中进行两次支付
我在我的网站上使用PayPal自适应支付(并行),我遇到了一个奇怪的问题,同一个发件人在两个不同的浏览器选项卡中进行了两次支付。类似的问题是,但没有人回答 重现问题的场景PayPal自适应支付:一个发件人在两个浏览器选项卡中进行两次支付,paypal,payment-gateway,payment,paypal-adaptive-payments,Paypal,Payment Gateway,Payment,Paypal Adaptive Payments,我在我的网站上使用PayPal自适应支付(并行),我遇到了一个奇怪的问题,同一个发件人在两个不同的浏览器选项卡中进行了两次支付。类似的问题是,但没有人回答 重现问题的场景 用户打开网站的第一个浏览器选项卡,并开始向第一个卖家付款 PayPal的带有登录按钮的灯箱出现 用户打开网站的第二个浏览器选项卡,并开始向第二个卖家付款 再次出现PyaPal的带有登录按钮的lightbox 用户返回到第一个浏览器选项卡并登录到PayPal 在第一个浏览器选项卡中登录PayPal后,用户将看到第二个卖家的付款详
var dgFlow=new PAYPAL.apps.dgFlow({trigger:“PAYPAL submit”,expType:“light”});
函数MyEmbeddedFlow(嵌入式流){
this.embeddedpobj=嵌入式流量;
this.paymentSuccess=函数(paymentStatus){
this.embeddedpobj.closeFlow();
//更多用户界面代码在这里。。。
};
this.paymentcancelled=函数(){
this.embeddedpobj.closeFlow();
//更多用户界面代码在这里。。。
};
}
var myEmbeddedPaymentFlow=新的MyEmbeddedFlow(dgFlow);
服务器代码
#向PayPal API发出付款请求。
paypal\u payment\u thread=thread.new do
#这里有一些准备代码。。。
pay_request=PaypalAdaptive::request.new
进程\u guid=SecureRandom.uuid
#构造支付API请求数据。
数据={
:returnUrl=>“#{PAYPAL_RETURN_URL}?进程_guid=#{process_guid}”,
:cancelUrl=>“#{PAYPAL_CANCEL_URL}?进程_guid=#{process_guid}”,
:requestEnvelope=>{
:errorLanguage=>“en_US”
},
:currencyCode=>“USD”,
:receiverList=>{
:receiver=>[{
#两次付款的卖家\贝宝价值不同。
#但事实上,两次付款都是我们最后一次付款。
:email=>seller\u paypal,
:金额=>订单\卖方\金额,
:paymentType=>“数字商品”
}, {
:email=>PAYPAL\u MARKETPLACE\u email,
:金额=>订单\市场\金额,
:paymentType=>“数字商品”
}]
},
:actionType=>“支付”,
:ipnNotificationUrl=>PAYPAL\u NOTIFY\u URL,
:reverseAllParallelPaymentsOnError=>“true”,
:trackingId=>进程\u guid
}
#发出付费API请求。
支付响应=支付请求。支付(数据)
如果你成功了?
#一切都好。在此更新数据库。。。
其他的
引发异常::PaypalPaymentError
结束
结束
我删除了一些不重要的代码,只是为了弄清楚它到底是如何工作的
提前感谢您的帮助 看起来是故意的。我在PayPal的一名员工身上做过同样的测试,在那里可以复制 PayPal的支持人员回答我,使用Lightbox的问题。然而,正如我在文章中描述的那样,我尝试了迷你浏览器和弹出选项,但没有效果 另外,PayPal的技术支持部门回答我这是设计的,并建议我联系技术支持部门。也许它会对其他人有用 嗨,迈克尔,谢谢,是的,我也能复制它。然而 重要的是要了解贝宝不是为处理2 付款同时流动。如果你想更进一步, 您可以联系我们的技术支持: 他们还有其他工具要调试,也许可以给你更好的解决方案 对技术问题的理解 最后,我在HTML5本地存储和
dgFlow.isOpen()。在窗口关闭时,我使用onunload
和onbeforeuload
窗口的事件重置此标志
我结束这个问题。谢谢