我遇到了无法从官方 gem 正确发布到 authorize.net API 的问题。深入研究问题后,我可以看到 gem 生成的请求是不完整的 - 缺少事务部分。
我在 github 上打开了一个问题 here,但症结似乎如下:
在该build_nodes
方法中,调用以下内容:
puts "has_content(value, data): #{has_content(value, data)}"
proc = Proc.new { puts 'PROC CALLED'; build_nodes(builder, value, data) }
builder.send(nodeName, &proc) if has_content(value, data)
当我运行 gem 的规范时,我得到以下输出:
has_content(value, data): true
PROC CALLED
而通过 irb 运行,我得到:
irb(main):011:0> response = tx.create_transaction_auth_capture(100.00, '3...266', '27...61', AuthorizeNet::Order.new())
has_content(value, data): true
=> nil
鉴于 proc 直接传递给构建器(Nokogiri::XML),我希望它会被调用,尽管它似乎没有。
有谁知道为什么在这种情况下没有调用proc?