使用 Paypal REST API 与经典 ASP
Using Paypal REST API with Classic ASP
我正在尝试使用以下代码对 Paypal API 进行简单调用:
On error resume next
Set objHTTP = CreateObject("Microsoft.XMLHTTP")
objHTTP.open "POST", "https://api.sandbox.paypal.com/v1/oauth2/token", False
objHTTP.setRequestHeader "Accept", "application/json"
objHTTP.setRequestHeader "Accept-Language", "en_US"
objHTTP.setRequestHeader "Authorization", "Basic " & Base64Encode("client-id:secret")
objHTTP.send "grant_type=client_credentials"
Response.Write err.description & " | " & err.number
但返回错误:
The download of the specified resource has failed
我可以毫无问题地与 de Postman 通话。我在本地主机上,我没有在我的网站上使用 SSL(不知道它是否有影响)。
为了解决我的问题,我正在使用 NVP API,现在我正在做这样的事情
Set objHTTP = CreateObject("Msxml2.ServerXMLHTTP.6.0")
objHTTP.open "POST", "https://api-3t.sandbox.paypal.com/nvp", False
Dim data
data = "USER=" & paypal_user_name &_
"&PWD=" & paypal_psw &_
"&SIGNATURE=" & paypal_signature &_
"&VERSION=204.0" &_
"&RETURNURL=" & return &_
"&CANCELURL=" & cancel &_
"&PAYMENTREQUEST_0_PAYMENTACTION=Sale" &_
"&PAYMENTREQUEST_0_AMT=" & Request.QueryString("val") &_
"&PAYMENTREQUEST_0_CURRENCYCODE=BRL" &_
"&L_PAYMENTREQUEST_0_NAME0=" & Request.QueryString("pac") &_
"&L_PAYMENTREQUEST_0_AMT0=" & Request.QueryString("val") &_
"&NOSHIPPING=1" &_
"&METHOD=SetExpressCheckout"
objHTTP.send data
而且效果很好
已解决:感谢 Paypal 支持和我们的 ISP,我们终于设法与 REST 对话。
需要使用证书,要指定证书,您需要 ServerXMLHTTP 对象。
objHTTP = Server.CreateObject("MSXML2.ServerXMLHTTP.6.0");
objHTTP.setOption(3, "LOCAL_MACHINE\My\merchant-cert_api1.paypal.com");
实时端点开箱即用,但沙箱返回:“安全通道支持中发生错误”。原因是沙箱不再支持 TLSv1.1。为了使 ServerXMLHTTP 对象支持 TLSv1.2,您需要 运行 经典 ASP 64 位而不是 32 位。
我正在尝试使用以下代码对 Paypal API 进行简单调用:
On error resume next
Set objHTTP = CreateObject("Microsoft.XMLHTTP")
objHTTP.open "POST", "https://api.sandbox.paypal.com/v1/oauth2/token", False
objHTTP.setRequestHeader "Accept", "application/json"
objHTTP.setRequestHeader "Accept-Language", "en_US"
objHTTP.setRequestHeader "Authorization", "Basic " & Base64Encode("client-id:secret")
objHTTP.send "grant_type=client_credentials"
Response.Write err.description & " | " & err.number
但返回错误:
The download of the specified resource has failed
我可以毫无问题地与 de Postman 通话。我在本地主机上,我没有在我的网站上使用 SSL(不知道它是否有影响)。
为了解决我的问题,我正在使用 NVP API,现在我正在做这样的事情
Set objHTTP = CreateObject("Msxml2.ServerXMLHTTP.6.0")
objHTTP.open "POST", "https://api-3t.sandbox.paypal.com/nvp", False
Dim data
data = "USER=" & paypal_user_name &_
"&PWD=" & paypal_psw &_
"&SIGNATURE=" & paypal_signature &_
"&VERSION=204.0" &_
"&RETURNURL=" & return &_
"&CANCELURL=" & cancel &_
"&PAYMENTREQUEST_0_PAYMENTACTION=Sale" &_
"&PAYMENTREQUEST_0_AMT=" & Request.QueryString("val") &_
"&PAYMENTREQUEST_0_CURRENCYCODE=BRL" &_
"&L_PAYMENTREQUEST_0_NAME0=" & Request.QueryString("pac") &_
"&L_PAYMENTREQUEST_0_AMT0=" & Request.QueryString("val") &_
"&NOSHIPPING=1" &_
"&METHOD=SetExpressCheckout"
objHTTP.send data
而且效果很好
已解决:感谢 Paypal 支持和我们的 ISP,我们终于设法与 REST 对话。 需要使用证书,要指定证书,您需要 ServerXMLHTTP 对象。
objHTTP = Server.CreateObject("MSXML2.ServerXMLHTTP.6.0");
objHTTP.setOption(3, "LOCAL_MACHINE\My\merchant-cert_api1.paypal.com");
实时端点开箱即用,但沙箱返回:“安全通道支持中发生错误”。原因是沙箱不再支持 TLSv1.1。为了使 ServerXMLHTTP 对象支持 TLSv1.2,您需要 运行 经典 ASP 64 位而不是 32 位。