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
}