Add QR Payment

This commit is contained in:
aditya.siregar
2024-08-06 16:21:55 +07:00
parent 67b4bb9563
commit 53505cf2ab
10 changed files with 141 additions and 18 deletions
+44 -3
View File
@@ -39,10 +39,10 @@ func (c *ClientService) CreatePayment(order entity.MidtransRequest) (*entity.Mid
Client: c.client,
}
paymentMethod := []midtrans.PaymentType{}
var paymentMethod []midtrans.PaymentType
if order.PaymentMethod == "GOPAY" {
paymentMethod = append(paymentMethod, midtrans.SourceGopay)
if order.PaymentMethod == "QRIS" {
paymentMethod = []midtrans.PaymentType{midtrans.SourceGopay}
}
snapReq := &midtrans.SnapReq{
@@ -83,3 +83,44 @@ func (c ClientService) getProductItems(products []entity.OrderItem) []midtrans.I
return items
}
func (c *ClientService) CreateQrisPayment(order entity.MidtransRequest) (*entity.MidtransQrisResponse, error) {
coreGateway := midtrans.CoreGateway{
Client: c.client,
}
req := &midtrans.ChargeReq{
PaymentType: midtrans.SourceGopay,
TransactionDetails: midtrans.TransactionDetails{
OrderID: order.PaymentReferenceID,
GrossAmt: order.TotalAmount,
},
}
// Request charge and retrieve response
resp, err := coreGateway.Charge(req)
if err != nil {
logger.GetLogger().Error(fmt.Sprintf("error when creating QRIS payment: %v", err))
return nil, err
}
// Extract QR code URL from response actions
var qrCodeURL string
for _, action := range resp.Actions {
if action.Name == "generate-qr-code" {
qrCodeURL = action.URL
break
}
}
if qrCodeURL == "" {
logger.GetLogger().Error("error: QR code URL not provided in response")
return nil, fmt.Errorf("QR code URL not provided in response")
}
return &entity.MidtransQrisResponse{
QrCodeUrl: qrCodeURL,
OrderID: order.PaymentReferenceID,
Amount: order.TotalAmount,
}, nil
}