PayPal Sandbox阻止WinHTTP.WinHTTPRequest.5.1

时间:2016-03-01 10:20:40

标签: paypal vbscript asp-classic paypal-ipn winhttp

paypalfunctions.asp and expresscheckout.asp files

我希望能找到帮助,如果没有帮助,那么一位精通Classic ASP和PayPal的开发人员可以帮我解决这个问题。

我们有一台运行Classic ASP的Windows 2008 R2 Server。我们已经进行了一年多的沙盒测试开发,最近所有PayPal Express Checkout“帖子”似乎已停止,现在当您点击按钮带您快速检查屏幕变为空白时。白色。绝对没有回报。

所以这意味着PayPal似乎已经停止或改变了它与WinHTTP.WinHTTPRequest.5.1的合作方式,或者我们的服务器已经以某种方式自行更新了?

PayPal正在使用Classic ASP中的WinHTTPRequest.5.1通过Express Checkout发送NVP。

我们正在使用带有API签名的IPN通知的经典ASP。

在paypalfunctions.asp中移除On Error Resume Next后,我收到以下错误;

  

500错误 - 说明:安全通道支持发生错误   错误代码:80072f7d。行:176

添加

objHTTP.Option(9) = 128 

到WinHTTP请求和

response.write(nvpStrComplete) 

返回

METHOD=SetExpressCheckout&VERSION=93&USER=sdk%2Dthree%5Fapi1%2Esdk%2Ecom&PWD=QFZ
CWN5HZM8VBG7Q&SIGNATURE=A%2DIzJhZZjhg29XQ2qnhapuwxIDzyAZQ92FRP5dqBzVesOkzbdUONzm
OU&L%5FPAYMENTREQUEST%5F0%5FNAME0=My Order&L%5FPAYMENTREQUEST%5F0%5FDESC0=My 
Item&L%5FPAYMENTREQUEST%5F0%5FAMT0=4&L%5FPAYMENTREQUEST%5F0%5FNAME1=Handling 
Fee&L%5FPAYMENTREQUEST%5F0%5FAMT1=0%2E42&PAYMENTREQUEST%5F0%5FPAYMENTACTION=Sale
&PAYMENTREQUEST%5F0%5FCURRENCYCODE=USD&PAYMENTREQUEST%5F0%5FAMT=4%2E42&RETURNURL
=http%3A%2F%2Fwww%mysite%2Ecom%2F%23paymentcomplete&CANCELURL=http%3A%2F%2Fwww%2
Emysite%2Ecom%2F%23paymentcancel&ALLOWNOTE=0&BUTTONSOURCE=PP%2DECWizard

这对我来说没问题?

是否有人知道我如何使用WinHTTP.WinHTTPRequest.5.1标准输出向导集成代码解决paypalfunctions.asp

如果没有,这不再是一个选项可以推荐一个专业和称职的经典ASP / PayPal开发人员,以便他/她可以使用我们现有的代码工作/修改?

1 个答案:

答案 0 :(得分:3)

总结一下评论。

错误指向安全通道的问题,通常与用于调用端点的错误协议有关。

这并不意味着WinHTTP.WinHTTPRequest.5.1不起作用,只是意味着使用了错误的协议来发出HTTP请求。

由于从SandBox开始,SSL 3.0 POODLE中的PayPal informed their users that support for SSL 3.0 would be disabled互联网安全可用性。

  

引自PayPal - Required security update

     

PayPal如何回应?

     

PayPal将在时间范围内完全禁用SSL 3.0支持,以通过PayPal Notify宣布;但是,基于安全监控,我们可能需要快速行动以保护我们的客户,因此时间是进行变更的关键。不幸的是,我们意识到关闭SSL 3.0可能会导致我们的一些客户出现兼容性问题,导致无法在某些商家网站上使用PayPal付款或我们仍在识别的其他处理问题。为了使您的评估和潜在的补救措施成为可能,我们将此商家响应指南放在一起,以确保您的集成免受此漏洞的侵害。

解决方法是使用TLS,它应该允许您连接到端点而没有问题。

您可以使用WINHTTP_OPTION_SECURITY_FLAGSWinHttp.WinHTTPRequest.5.1对象的Option property来执行此操作。

'The WINHTTP_OPTION_SECURITY_FLAGS option
Const WinHttpRequestOption_SecureProtocols = 9

'Valid WINHTTP_OPTION_SECURITY_FLAGS option flags
Const SecureProtocol_SSL2   = 8       'SSL 2.0
Const SecureProtocol_SSL3   = 32      'SSL 3.0
Const SecureProtocol_TLS1   = 128     'TLS 1.0
Const SecureProtocol_TLS1_1 = 512     'TLS 1.1
const SecureProtocol_TLS1_2 = 2048    'TLS 1.2

然后,您可以修改WinHttp对象(假设对象被称为winhttp,以便切换安全协议;

winhttp.Option(WinHttpRequestOption_SecureProtocols) = SecureProtocol_TLS1_2

注意:某些版本的Windows Server不支持SecureProtocol_TLS1_2标志或可能需要修补程序。这实际上取决于系统上安装的winhttp.dll版本。

有用的链接