November 2017
Intermediate to advanced
670 pages
17h 35m
English
Like all the other filters in the API, Charge accepts an input channel of type Order and returns an output channel of type Order.
If the order is valid, then we initialize the total to $0.00 using the total := gc.USD{0, 0} statement and iterate over the order's line items, executing the Add function to arrive at the order's total amount. We then pass that amount to the ChargeCard helper function to collect our money:
type Charge struct {} func (c Charge) Filter(input chan Order) chan Order { output := make(chan Order) go func(){ for order := range input { if order.IsAuthenticated && order.IsDecrypted { total := gc.USD{0, 0} for _, li := range order.LineItems { total, _ = total.Add(li.PriceUSD) } ChargeCard(order.CCardNumber, ...