我正在迭代stripe charge object,我想总结每天的amount
总数。
# Returns an array object of charges for a customer
@customer_charges = Stripe::Charge.all(:customer => current_user.stripeid)
查看:
<% @customer_charges.map do |c| %>
On Monday, you were charged a total of <%= c.amount %>
<% end %>
上述情况肯定只是每笔费用的输出线,而不是当天的总和。我面临的困难是总结每一天的所有费用。有人能指出我正确的方向吗?
输出如下:
"On Monday, you were charged a total of 200000"
"On Tueesday, you were charged a total of 500000"
etc...
代替:
On Monday, you were charged a total of 100000"
On Monday, you were charged a total of 100000"
etc...
我的view
看起来很混乱if statements
行来比较日期,看起来不对。
答案 0 :(得分:2)
您需要遍历Stripe中的每个费用对象,存储每笔费用的金额和解析日期:
# Fetch charges in batches of 100 records from Stripe API, yield each individual charge to a block.
def each_stripe_charge_for_customer(customer_id)
starting_after = nil
loop do
customer_charges = Stripe::Charge.all(customer: customer_id, limit: 100, starting_after: starting_after)
break if customer_charges.none?
charges.each do |charge|
yield charge
end
starting_after = charges.data.last.id
end
end
charges_by_date = Hash.new(0)
# For each Stripe charge, store the date and amount into a hash.
each_stripe_charge_for_customer(current_user.stripeid) do |stripe_charge|
# Parses Stripe's timestamp to a Ruby date object. `to_date` converts a DateTime object to a date (daily resolution).
charge_date = Time.at(stripe_charge.created).to_date
charge_amount = stripe_charge.amount
charges_by_date[charge_date] += charge_amount
end