Reputation: 561
I am trying to make a simple call to Paypal API with the follow code:
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
But its returning the error:
The download of the specified resource has failed
I can do this call with de Postman without problem. I am in localhost and Im not using a SSL on my site (dont know if its affect).
Upvotes: 3
Views: 2138
Reputation: 31
Solved: We finally managed to talk to REST, thanks to the Paypal support and our ISP. The use of a certificate is required, for specifying certificates you need the ServerXMLHTTP object.
objHTTP = Server.CreateObject("MSXML2.ServerXMLHTTP.6.0");
objHTTP.setOption(3, "LOCAL_MACHINE\\My\\merchant-cert_api1.paypal.com");
This worked out of the box with the live endpoint, but the sandbox returned: "An error occurred in the secure channel support". The reason is the sandbox no longer supports TLSv1.1. In order to make the ServerXMLHTTP object support TLSv1.2, you need to run Classic ASP in 64bit instead of 32bit.
Upvotes: 2
Reputation: 561
To solve my problem I am using the NVP API and now I am doing something like this
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
And its working very fine
Upvotes: 0