2014-11-06 119 views
0

我正在使用PayPal支付我的付款。一切正常,除了返回的URL。 貝寶正在使用POST返回到我的Rails應用程序,如何強制他使用GET?Paypal返回URL GET而不是POST - Rails

def paypal_url(return_path, token_id, pack_id, amount) 
    values = { 
     business: "#{Rails.application.secrets.paypal_account}", 
     cmd: "_xclick", 
     upload: 1, 
     return: "#{Rails.application.secrets.app_host}#{return_path}", 
     invoice: id, 
     amount: amount, 
     item_name: Purchase.packs[pack_id].description, 
     quantity: 1, # 1 pack 
     notify_url: "#{Rails.application.secrets.app_host}/hook" 
    } 
    "#{Rails.application.secrets.paypal_host}/cgi-bin/webscr?" + values.to_query 
    end 

以下是錯誤

Started POST "https://stackoverflow.com/users/1" for 90.62.1.250 at 2014-11-06 20:58:46 +0000 
ActionController::RoutingError (No route matches [POST] "https://stackoverflow.com/users/1") 
+0

您是否嘗試啓用PDT?這是通過GET返回: 「要使用PDT,您必須激活您的PayPal賬戶資料中的PDT和自動返回,您還必須獲得PDT身份令牌,該憑證用於您發送給PayPal的所有PDT通信中。 https://developer.paypal.com/docs/classic/paypal-payments-standard/integration-guide/paymentdatatransfer/ – RichardAE 2014-11-06 22:05:03

回答

0

雖然這不是你想使用發送,而不是給定的POST請求你可能想要的答案, 在的情況下,添加到您的routes.rb文件(在CONFIG)

#routes.rb 
post "/hook" => "modelname#hook" 

然後在模型中的控制器,定義一個新的方法(稱爲掛機)來處理該請求後

#modelname_controller.rb 
protect_from_forgery except: [:hook] 
def hook 
    params.permit! # Permits the pay 
    status = params[:payment_status] 
    if status == "Completed" 
    # Process the data 
    end 
    render nothing: true 
end