in payment-credit/main.go [40:72]
func handler(ctx context.Context, ord models.Order) (models.Order, error) {
log.Printf("[%s] - processing refund", ord.OrderID)
// find Payment transaction for this order
payment, err := getTransaction(ctx, ord.OrderID)
if err != nil {
log.Printf("[%s] - error! %s", ord.OrderID, err.Error())
return ord, models.NewErrProcessRefund(err.Error())
}
// process the refund for the order
payment.Refund()
// write to database.
err = saveTransaction(ctx, payment)
if err != nil {
log.Printf("[%s] - error! %s", ord.OrderID, err.Error())
return ord, models.NewErrProcessRefund(err.Error())
}
// save state
ord.Payment = payment
// testing scenario
if ord.OrderID[0:2] == "22" {
return ord, models.NewErrProcessRefund("Unable to process refund for order " + ord.OrderID)
}
log.Printf("[%s] - refund processed", ord.OrderID)
return ord, nil
}