ColdFusion Paypal REST API oAuth

Dan*_*Dan 2 rest coldfusion paypal oauth

我正在尝试为ColdFusion中的应用程序实现Paypal REST API。我在Paypal中设置了我的应用程序,所以我有client_id和秘密密钥。

https://developer.paypal.com/webapps/developer/docs/integration/direct/make-your-first-call/

该URL显示了我尝试在CF中重现的示例curl调用:

curl https://api.sandbox.paypal.com/v1/oauth2/token \
-H "Accept: application/json" \
-H "Accept-Language: en_US" \
-u "EOJ2S-Z6OoN_le_KS1d75wsZ6y0SFdVsY9183IvxFyZp:EClusMEUk8e9ihI7ZdVLF5cZ6y0SFdVsY9183IvxFyZp" \
-d "grant_type=client_credentials"
Run Code Online (Sandbox Code Playgroud)

这是我的CF电话(对我的测试帐户进行了一些修改)

<cfhttp method="post" url="https://api.sandbox.paypal.com/v1/oauth2/token"  result="test">
<cfhttpparam type="header" name="authorization" value="ASfK_BCZ54849na-kMSKvrKEk4WNDkoIikQlTfsI3nS-ghY1VTzH5q2pU:EC-7qhACEQ7XGjo2dU4gFPJDH3Et0KeMx0Z5Xmbf9PnhPE5diq-CO" >
<cfhttpparam type="header" name="content-type" value="application/x-www-form-urlencoded" >
<cfhttpparam type="formfield" name="grant_type" value="client_credentials" >
Run Code Online (Sandbox Code Playgroud)

我收到的响应是“ invalid_client”-“无效的客户端凭据”。文档指出,应以“ client_id:secret”的形式传递授权。我一直在尝试更改字段的名称,尝试将其传递到标题中,并尝试将其作为formfield传递,但无济于事。尽我所知,贝宝不需要签名方法,并声明它使用基本的HTTP身份验证。

谁能看到我在这里想念的东西?

Lyl*_*yle 5

我不确定为什么您的解决方案对您不起作用,但对我却不起作用。它使我开始工作,但是我需要调整我的请求以完成请求。对PHP脚本进行反向工程,我想到了这一点:

<cfset clientid = "***************************"/>
<cfset secret = "***************************"/>

<cfhttp method="post" url="https://api.sandbox.paypal.com/v1/oauth2/token" result="local.test">
    <cfhttpparam type="header" name="Content_Type" value="application/json" >
    <cfhttpparam type="formfield" name="grant_type" value="client_credentials" >
    <cfhttpparam type="header" name="Authorization" value="Basic #ToBase64(clientid & ":" & secret)#">
</cfhttp>
Run Code Online (Sandbox Code Playgroud)

我希望这可以节省别人三个星期的时间。现在,我要找出下一步。如果有人有兴趣将其包装到类似PayPal REST API的完整SDK之类的解决方案中,请告诉我,我可能有兴趣进行协作。