func handler()

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
}