2016-05-02 109 views
0

我想寫成捲曲(GoPay支付網關)這個職位的要求轉化爲我的Rails應用程序:使用寶石捲曲POST請求

curl -v https://gw.sandbox.gopay.com/api/oauth2/token \ 
-X "POST" \ 
-H "Accept: application/json" \ 
-H "Content-Type: application/x-www-form-urlencoded" \ 
-u "<Client ID>:<Client Secret>" \ 
-d "grant_type=client_credentials&scope=payment-create" 

我想在我的Rails控制器做其餘客戶端。我做了這樣的事情,並modifiying很多次,但不能使它工作:

RestClient::Request.execute(method: :post, 
          url: "https://gw.sandbox.gopay.com/api/oauth2/token", 
          "#{ENV['GOPAY_CLIENT_ID']}": "#{ENV['GOPAY_CLIENT_SECRET']}" 
          data: "grant_type=client_credentials&scope=payment-create" 
          ) 

我怎麼可以轉換爲其他的客戶端(或類似)的捲曲POST請求?

編輯:這是否顯示狀態碼409:衝突沒有進一步的信息

EDIT1 - RGO的修改代碼的工作,謝謝:

RestClient.post "https://#{ENV['GOPAY_CLIENT_ID']}:#{ENV['GOPAY_CLIENT_SECRET']}@gw.sandbox.gopay.com/api/oauth2/token", 
    { grant_type: 'client_credentials', scope: 'payment-create'}, 
    content_type: :json, accept: :json 

回答

1

我不是一個RESTClient實現用戶,但閱讀後文檔[1]我想我轉化你的捲曲請求RESTClient實現:

RestClient.post "http://#{ENV['GOPAY_CLIENT_ID']}:#{ENV['GOPAY_CLIENT_SECRET']}@https://gw.sandbox.gopay.com/api/oauth2/token", 
       { grant_type: 'client_credentials', scope: 'payment-create'}, 
       content_type: :json, 
       accept: :json 

正如你可以看到我憑據傳遞的網址,因爲是一個基本的身份驗證。數據(grant_type和scope)作爲散列傳遞,然後轉換爲JSON。然後我們設置休息客戶端來發送和接收JSON。

我希望它能幫助你

[1] https://github.com/rest-client/rest-client#usage-raw-url

+0

很酷!在我拿走擴展名.to_json之後,它就起作用了。謝謝! – Dudis

+0

答案更新如您所說:.to_json呼叫已被刪除 – rgo

0

你沒有提到什麼不起作用,或者你看到的錯誤。但是,捲曲的-u選項用於傳遞basic authentication的用戶名和密碼。

RestClient的等價物是使用userpassword選項,例如,

RestClient::Request.execute(
    method: :post, 
    url: "https://gw.sandbox.gopay.com/api/oauth2/token", 
    user: "#{ENV['GOPAY_CLIENT_ID']}", 
    password: "#{ENV['GOPAY_CLIENT_SECRET']}" 
    data: "grant_type=client_credentials&scope=payment-create", 
    headers: { "Accept" => "application/json", "Content-Type" => "application/x-www-form-urlencode" } 
) 
+0

對不起,我更新了我的帖子。我的嘗試以及這一個顯示衝突409:*** RestClient ::衝突異常:409衝突 – Dudis

+0

檢查GoPay文檔https://doc.gopay.com/en/#access-token Accept和Content-類型標題是必需的,所以嘗試添加它們。現在遠離筆記本電腦,但應該像更新的答案。 – mikej