为什么我的authorize.net事务成功了,却报告失败了



我在Heroku上使用Authorize.net和Rails。我已经创建了一个表格,使用在线示例将请求提交给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_reresponse.success?调用为false。或者,更具体地说,成功方法和成功的这一部分有两个测试?方法错误:

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

我得到的结果代码是"1",这意味着事务已被处理。这也是我看到的文本。

根据我的研究,valid.md5方法只有在存在不正确的api_login_id时才会发生,但我不认为是这样。如果login_id不正确,事务会成功吗?还有什么其他的追踪建议吗?

这对我来说是一个愚蠢的错误,但很容易犯。所以,我把它贴在这里。

我在配置中有一个MD5_hash值,与api_key的值相同,因为Authorize.net的gem中的生成器为测试帐户创建了这个值。事实证明,这对生产来说是错误的。我没有设置MD5_hash值,所以我在Authorize.net上的帐户设置下进行了设置,并将其添加到Authorize_net.yml配置中。它现在可以正常工作,并且可以正确重定向。

最新更新