2012-09-27 34 views
1

我使用https://github.com/moshbit/paypal_permissions獲取賣家的權限在我的應用程序。API憑據不正確,paypal_permissions寶石

所有方法都工作正常,但是當我嘗試方法get_basic_personal_dataget_advanced_personal_data我得到了我的日誌本回應:

{:raw_response=>"responseEnvelope.timestamp=2012-09-27T04%3A36%3A17.904-07%3A00&response 
Envelope.ack=Failure&responseEnvelope.correlationId=3baaaa7435436&responseEnvelope.build 
=2210301&error(0).errorId=520003&error(0).domain=PLATFORM&error 
(0).subdomain=Application&error(0).severity=Error&error(0).category=Application&error 
(0).message=Authentication+failed.+API+credentials+are+incorrect.", :errors=> 
[{:parameters=>[], :error_id=>"520003", :domain=>"PLATFORM", :subdomain=>"Application", 
:severity=>"Error", :category=>"Application", :message=>"Authentication failed. API 
credentials are incorrect."}], :personal_data=>{}, 
:timestamp=>"2012-09-27T04:36:17.904-07:00", :ack=>"Failure", :correlation_id=>"3baaaa7435436"} 

你可以看到https://github.com/moshbit/paypal_permissions/blob/master/examples/app/controllers/merchants_controller.rb

這些都是我在3種方法,這些方法我users_controller.rb +方法get_basic_personal_data到底:

def request_permissions_callback 
    callback_url = URI.encode(response_permissions_callback_user_url(current_user)) 
    permissions = 'REFUND, ACCESS_BASIC_PERSONAL_DATA' 
    paypal_response = ::PAYPAL_PERMISSIONS_GATEWAY.request_permissions callback_url, permissions 
    if paypal_response[:ack] == 'Success' 
     session[:id] = current_user.id 
     request_token = paypal_response[:token] 
     session[:request_token] = request_token 
     url = ::PAYPAL_PERMISSIONS_GATEWAY.redirect_user_to_paypal_url(request_token) 
     redirect_to url 
    else 
     #render :text => paypal_response.inspect 
     # handle error 
     format.html { redirect_to requirements_to_sell_user_path(current_user), alert: t(".permissions_wrong") } 
    end 
end 

def response_permissions_callback 
    session[:request_token_verifier] = params[:verification_code] 
    get_access_token 
    logger.info get_basic_personal_data(current_user).inspect 
    p get_basic_personal_data(current_user).inspect 
    respond_to do |format| 
    if get_access_token == true 
    format.html { redirect_to requirements_to_sell_user_path(current_user), notice: t(".refund_permissions_success") } 
    elsif get_access_token == false 
    format.html { redirect_to requirements_to_sell_user_path(current_user), alert: t(".refund_permissions_wrong") } 
    end 
    end 
end 


def get_access_token 
    request_token = session[:request_token] 
    verifier = session[:request_token_verifier] 
    paypal_response = ::PAYPAL_PERMISSIONS_GATEWAY.get_access_token request_token, verifier 
    if paypal_response[:ack] == 'Success' 
     current_user.update_attributes({ 
     :ppp_access_token => paypal_response[:token], 
     :ppp_access_token_verifier => paypal_response[:token_secret], 
     }) 
     return true 
    else 
     return false 
    end 
end 

def get_basic_personal_data(current_user) 
    access_token = current_user.ppp_access_token 
    verifier = current_user.ppp_access_token_verifier 
    ::PAYPAL_PERMISSIONS_GATEWAY.get_basic_personal_data(access_token, verifier) 
end 
  • request_permissions_callback(發出請求到PayPal,並且用戶被重定向到PayPal權限頁。)
  • response_permissions_callback收到來自PayPal的響應和調用get_access_token用於更新的數據對我的MongoDB數據庫。

我得到錯誤日誌時,來自PayPal的權限賣家回報與

logger.info get_basic_personal_data(current_user).inspect

get_access_token之後觸發我可以在數據庫中看到正確的令牌上get_basic_personal_data方法使用後:

ppp_access_token: "ZlM-jt4LQUxQZDozxkH29I53QyXShtziJIbPlCk3m35i65iLiqVf7w", ppp_access_token_verifier: "wJd3uuP5ymyWAqiUf2qaVCPTMsk" 

爲什麼我在這個方法中得到這個錯誤,如果其他3個方法工作正常,並且API憑證是否正確?,錯誤在哪裏?

非常感謝!

回答

1

謝謝馬克的幫助:D。

錯誤發生在我的development.rb文件中。

你可以評論或刪除ActiveMerchant::Billing::Base.mode = :test行,現在工作正常。

Myapp::Application.configure do 
    config.after_initialize do 
    #ActiveMerchant::Billing::Base.mode = :test 
    permissions_options = { 
    :login => 'myapp_api1.gmail.com', 
    :password => 'mypassword', 
    :signature => 'mysignature', 
    :app_id => 'APP-80W284485P519543T', # This is the app_id for all PayPal Permissions Service sandbox test 
    apps 
    } 
    ::PAYPAL_PERMISSIONS_GATEWAY = ActiveMerchant::Billing::PaypalPermissionsGateway.new(permissions_options) 
    end 
end 

非常感謝!