2012-02-17 65 views
3

我在Heroku上使用Rails的Authorize.net。我創建了一個表格使用在線的例子,如提交請求Authorize.net:爲什麼我的authorize.net交易成功但報告失敗?

https://developer.authorize.net/integration/fifteenminutes/ruby

我已經創建了Authorize.net帳戶,並建立了提交給的Authorize.net像形式所以(在HAML):

%h3 Enter your credit card details 
= form_for :sim_transaction, :url => @gateway_url do |f| 
    = sim_fields(@sim_transaction) 
    = order_details(@order) 
    .fields 
    .field 
     = label_tag 'x_card_num', 'Credit Card Number' 
     = text_field_tag 'x_card_num', params[:x_card_num], :style => 'width:200px' 
    .field 
     = label_tag 'x_exp_date', 'Expiration Date (MMYY)' 
     = text_field_tag 'x_exp_date', params[:x_exp_date], :style => 'width:40px' 
    .action 
     = f.submit 'Confirm order' 

的ORDER_DETAILS是創建名字隱藏字段,姓氏等,從採購訂單的輔助方法。

提交時,由authorize.net和用戶信用卡處理的訂單將收取費用,但向繼電器響應的POST指示sim_response失敗並且未處理。

if **sim_response.success?**(AUTHORIZE_NET_CONFIG['api_login_id'], AUTHORIZE_NET_CONFIG['merchant_hash_value']) 
    render :text => sim_response.direct_post_reply(payments_receipt_url(:only_path => false), :include => true) 
else 
    render 
end 

sim_response.success?電話是假的。或者,更具體地說,成功方法和成功的這一部分有兩個測試?方法是假的:

sim_response.valid_md5?(AUTHORIZE_NET_CONFIG['api_login_id'], AUTHORIZE_NET_CONFIG['merchant_hash_value']) 

我得到的結果代碼是「1」 - 表示事務處理完成。這也是我看到的文字。

從我的研究中,valid_md5方法只發生在有不正確的api_login_id時,但我不認爲是這種情況。如果login_id不正確,交易會成功嗎?任何其他建議,以跟蹤此?

回答

5

這對我來說是一個愚蠢的錯誤,但它很容易做出來。所以,我在這裏發佈。

我在配置中有一個MD5_hash值 - 與api_key的值相同,因爲這就是Authorize.net的gem生成器爲測試帳戶創建的值。事實證明,這是錯誤的生產。我沒有設置MD5_hash值,所以我在Authorize.net帳戶下進行設置,並將其添加到authorize_net.yml配置中。它現在可以正常工作並正確重定向。

+0

幾乎沒有一個愚蠢的錯誤,從「快速入門」來看,它一點也不清楚。有關MD5散列功能的更多信息,我發現[SIM指南](http://www.authorize.net/support/SIM_guide.pdf)很有用。請參閱第6章中的「使用MD5散列表功能」。 – 2013-04-02 06:06:54

+0

我遇到類似的問題。在我的authorize_net.yml中,我有「merchant_hash_value」而不是MD5_hash。您是否必須擁有MD5_hash字段才能讓您的應用再次運行? – 2014-02-03 13:10:48

相關問題