func handler()

in payment-debit/main.go [39:70]


func handler(ctx context.Context, ord models.Order) (models.Order, error) {

	log.Printf("[%s] - processing payment", ord.OrderID)

	var payment = models.Payment{
		OrderID:       ord.OrderID,
		MerchantID:    "merch1",
		PaymentAmount: ord.Total(),
	}

	// Process payment
	payment.Pay()

	// Save payment
	err := savePayment(ctx, payment)
	if err != nil {
		log.Printf("[%s] - error! %s", ord.OrderID, err.Error())
		return ord, models.NewErrProcessPayment(err.Error())
	}

	// Save state
	ord.Payment = payment

	// testing scenario
	if ord.OrderID[0:1] == "2" {
		return models.Order{}, models.NewErrProcessPayment("Unable to process payment for order " + ord.OrderID)
	}

	log.Printf("[%s] - payment processed", ord.OrderID)

	return ord, nil
}