github.com/companieshouse/lfp-pay-api@v0.0.0-20230203133422-0ca455cd79f9/service/payment_service.go (about) 1 package service 2 3 import ( 4 "net/http" 5 6 "github.com/companieshouse/chs.go/log" 7 "github.com/companieshouse/go-sdk-manager/manager" 8 "github.com/companieshouse/lfp-pay-api-core/validators" 9 ) 10 11 // GetPaymentInformation will attempt to get the payment resource from the payment platform. 12 // this can then be used to validate the state of a payment. 13 func GetPaymentInformation(id string, req *http.Request) (*validators.PaymentInformation, error) { 14 publicSDK, err := manager.GetSDK(req) 15 if err != nil { 16 log.Error(err, log.Data{"payment_id": id}) 17 return nil, err 18 } 19 20 paymentResource, err := publicSDK.Payments.Get(id).Do() 21 if err != nil { 22 log.Error(err, log.Data{"payment_id": id}) 23 return nil, err 24 } 25 26 privateSDK, err := manager.GetPrivateSDK(req) 27 if err != nil { 28 log.Error(err, log.Data{"payment_id": id}) 29 return nil, err 30 } 31 32 paymentDetails, err := privateSDK.Payments.GetPaymentDetails(id).Do() 33 if err != nil { 34 log.Error(err, log.Data{"payment_id": id}) 35 return nil, err 36 } 37 38 paymentInformation := &validators.PaymentInformation{ 39 PaymentID: id, 40 CompletedAt: paymentResource.CompletedAt, 41 CreatedBy: paymentResource.CreatedBy.Email, 42 Amount: paymentResource.Amount, 43 Status: paymentResource.Status, 44 Reference: paymentResource.Reference, 45 ExternalPaymentID: paymentDetails.ExternalPaymentID, 46 CardType: paymentDetails.CardType, 47 } 48 49 return paymentInformation, nil 50 }