2012-02-17 68 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

相关问题