github.com/plutov/paypal/v4@v4.7.1/transaction_search.go (about) 1 package paypal 2 3 import ( 4 "context" 5 "fmt" 6 "strconv" 7 "time" 8 ) 9 10 type TransactionSearchRequest struct { 11 TransactionID *string 12 TransactionType *string 13 TransactionStatus *string 14 TransactionAmount *string 15 TransactionCurrency *string 16 StartDate time.Time 17 EndDate time.Time 18 PaymentInstrumentType *string 19 StoreID *string 20 TerminalID *string 21 Fields *string 22 BalanceAffectingRecordsOnly *string 23 PageSize *int 24 Page *int 25 } 26 27 type TransactionSearchResponse struct { 28 TransactionDetails []SearchTransactionDetails `json:"transaction_details"` 29 AccountNumber string `json:"account_number"` 30 StartDate JSONTime `json:"start_date"` 31 EndDate JSONTime `json:"end_date"` 32 LastRefreshDatetime JSONTime `json:"last_refreshed_datetime"` 33 Page int `json:"page"` 34 SharedListResponse 35 } 36 37 // ListTransactions - Use this to search PayPal transactions from the last 31 days. 38 // Endpoint: GET /v1/reporting/transactions 39 func (c *Client) ListTransactions(ctx context.Context, req *TransactionSearchRequest) (*TransactionSearchResponse, error) { 40 response := &TransactionSearchResponse{} 41 42 r, err := c.NewRequest(ctx, "GET", fmt.Sprintf("%s%s", c.APIBase, "/v1/reporting/transactions"), nil) 43 if err != nil { 44 return nil, err 45 } 46 47 q := r.URL.Query() 48 49 q.Add("start_date", req.StartDate.Format(time.RFC3339)) 50 q.Add("end_date", req.EndDate.Format(time.RFC3339)) 51 52 if req.TransactionID != nil { 53 q.Add("transaction_id", *req.TransactionID) 54 } 55 if req.TransactionType != nil { 56 q.Add("transaction_type", *req.TransactionType) 57 } 58 if req.TransactionStatus != nil { 59 q.Add("transaction_status", *req.TransactionStatus) 60 } 61 if req.TransactionAmount != nil { 62 q.Add("transaction_amount", *req.TransactionAmount) 63 } 64 if req.TransactionCurrency != nil { 65 q.Add("transaction_currency", *req.TransactionCurrency) 66 } 67 if req.PaymentInstrumentType != nil { 68 q.Add("payment_instrument_type", *req.PaymentInstrumentType) 69 } 70 if req.StoreID != nil { 71 q.Add("store_id", *req.StoreID) 72 } 73 if req.TerminalID != nil { 74 q.Add("terminal_id", *req.TerminalID) 75 } 76 if req.Fields != nil { 77 q.Add("fields", *req.Fields) 78 } 79 if req.BalanceAffectingRecordsOnly != nil { 80 q.Add("balance_affecting_records_only", *req.BalanceAffectingRecordsOnly) 81 } 82 if req.PageSize != nil { 83 q.Add("page_size", strconv.Itoa(*req.PageSize)) 84 } 85 if req.Page != nil { 86 q.Add("page", strconv.Itoa(*req.Page)) 87 } 88 89 r.URL.RawQuery = q.Encode() 90 91 if err = c.SendWithAuth(r, response); err != nil { 92 return nil, err 93 } 94 95 return response, nil 96 }