首页 > 解决方案 > 如何从 Square 的交易哈希中获取记录表?

问题描述

我需要遍历 Square 事务的散列,并将每条记录加入到 MySQL 查询的结果中。有没有办法将 Square 交易中的记录散列到一个更像表的数组中?

几周前我发布了一个类似的问题(How to parse Square response nested key values in Ruby 2.2.10),其中哈希只有一条记录,但现在我需要遍历所有事务。请注意,哈希还可以包含退款交易,我想单独解析出来。并且某些交易将缺少 reference_id 字段。

{:transactions=>[
{:id=>"sacfx8eqLYsBQom7G9kV7gS1K4lbnMG83w3U0Gpzu1cCJROfZvRJqLhO", 
:location_id=>"CBASEJJZMYbNZW8F1bbRjRuPQ7Q", 
:created_at=>"2019-04-10T16:38:57Z", 
:tenders=>[{
    :id=>"eeb92f2a-379b-55c6-439b-f0f5c44925c8", 
    :location_id=>"CBASEJJZMYbNZW8F1bbRjRuPQ7Q", 
    :transaction_id=>"sacfx8eqLYsBQom7G9kV7gS1K4lbnMG83w3U0Gpzu1cCJROfZvRJqLhO", 
    :created_at=>"2019-04-10T16:38:57Z", 
    :note=>"Online Transaction", 
    :amount_money=>{:amount=>65000, :currency=>"USD"}, 
    :processing_fee_money=>{:amount=>1915, :currency=>"USD"}, 
    :type=>"CARD", 
    :card_details=>{:status=>"CAPTURED", 
                    :card=>{:card_brand=>"VISA", 
                            :last_4=>"1111", 
                            :fingerprint=>"50b16672bf4472e9058524e3c0a060faab196bc3e43f9c693a870c7e8b6da626"
                            }, 
                    :entry_method=>"KEYED"
                    }
}], 
:reference_id=>"796", 
:product=>"EXTERNAL_API"
}, 

{:id=>"mvMhdOrfBdXQvE0S6EPFoeHf7Fm8duSJgsk4bZyt6APQTa2PGkix6LhO", 
:location_id=>"CBASEJJZMYbNZW8F1bbRjRuPQ7Q", 
:created_at=>"2019-04-10T01:22:16Z", 
:tenders=>[{
    :id=>"693c42d4-5e16-52a3-5594-5e8dd4ff9f95", 
    :location_id=>"CBASEJJZMYbNZW8F1bbRjRuPQ7Q", 
    :transaction_id=>"mvMhdOrfBdXQvE0S6EPFoeHf7Fm8duSJgsk4bZyt6APQTa2PGkix6LhO", 
    :created_at=>"2019-04-10T01:22:16Z", 
    :note=>"Online Transaction", 
    :amount_money=>{:amount=>65000, :currency=>"USD"}, 
    :processing_fee_money=>{:amount=>1915, :currency=>"USD"}, 
    :type=>"CARD", 
    :card_details=>{:status=>"CAPTURED", 
                    :card=>{:card_brand=>"VISA", 
                        :last_4=>"1111", 
                        :fingerprint=>"50b16672bf4472e9058524e3c0a060faab196bc3e43f9c693a870c7e8b6da626"
                        }, 
                    :entry_method=>"KEYED"
                    }
}], 
:product=>"EXTERNAL_API"
},
...
],
:refunds=>[... refunds here ...]
}

我输入了回车,以便更容易查看键/值。此外,Square 在其文档( https://docs.connect.squareup.com/api/connect/v2/?q=reference_id#endpoint-transactions-listtransactions
)中 的示例在引号中显示键,但实际响应来自 Ruby就像我在上面展示的那样,所有的键都是冒号键名——比如 :id

标签: javascriptjsonrubysquare

解决方案


推荐阅读