Documentation ¶
Overview ¶
Package paypalsdk provides a wrapper to PayPal API (https://developer.paypal.com/webapps/developer/docs/api/). The first thing you do is to create a Client (you can select API base URL using paypalsdk contants).
c, err := paypalsdk.NewClient("clientID", "secretID", paypalsdk.APIBaseSandBox)
Then you can get an access token from PayPal:
accessToken, err := c.GetAccessToken()
After you have an access token you can call built-in functions to get data from PayPal. paypalsdk will assign all responses to go structures.
Example ¶
package main import ( paypalsdk "github.com/logpacker/PayPal-Go-SDK" ) func main() { // Initialize client c, err := paypalsdk.NewClient("clientID", "secretID", paypalsdk.APIBaseSandBox) if err != nil { panic(err) } // Retrieve access token _, err = c.GetAccessToken() if err != nil { panic(err) } // Create credit card payment p := paypalsdk.Payment{ Intent: "sale", Payer: &paypalsdk.Payer{ PaymentMethod: "credit_card", FundingInstruments: []paypalsdk.FundingInstrument{{ CreditCard: &paypalsdk.CreditCard{ Number: "4111111111111111", Type: "visa", ExpireMonth: "11", ExpireYear: "2020", CVV2: "777", FirstName: "John", LastName: "Doe", }, }}, }, Transactions: []paypalsdk.Transaction{{ Amount: &paypalsdk.Amount{ Currency: "USD", Total: "7.00", }, Description: "My Payment", }}, RedirectURLs: &paypalsdk.RedirectURLs{ ReturnURL: "http://...", CancelURL: "http://...", }, } _, err = c.CreatePayment(p) if err != nil { panic(err) } }
Output:
Index ¶
- Constants
- type Address
- type AgreementDetails
- type Amount
- type AmountPayout
- type Authorization
- type BatchHeader
- type BillingAgreement
- type BillingPlan
- type Capture
- type ChargeModel
- type Client
- func (c *Client) ActivatePlan(planID string) error
- func (c *Client) AuthorizeOrder(orderID string, amount *Amount) (*Authorization, error)
- func (c *Client) CaptureAuthorization(authID string, a *Amount, isFinalCapture bool) (*Capture, error)
- func (c *Client) CaptureOrder(orderID string, amount *Amount, isFinalCapture bool, currency *Currency) (*Capture, error)
- func (c *Client) CreateBillingAgreement(a BillingAgreement) (*CreateAgreementResp, error)
- func (c *Client) CreateBillingPlan(plan BillingPlan) (*CreateBillingResp, error)
- func (c *Client) CreateDirectPaypalPayment(amount Amount, redirectURI string, cancelURI string, description string) (*PaymentResponse, error)
- func (c *Client) CreatePayment(p Payment) (*CreatePaymentResp, error)
- func (c *Client) CreateSinglePayout(p Payout) (*PayoutResponse, error)
- func (c *Client) CreateWebProfile(wp WebProfile) (*WebProfile, error)
- func (c *Client) DeleteCreditCard(id string) error
- func (c *Client) DeleteWebProfile(profileID string) error
- func (c *Client) ExecuteApprovedAgreement(token string) (*ExecuteAgreementResponse, error)
- func (c *Client) ExecuteApprovedPayment(paymentID string, payerID string) (*ExecuteResponse, error)
- func (c *Client) GetAccessToken() (*TokenResponse, error)
- func (c *Client) GetAuthorization(authID string) (*Authorization, error)
- func (c *Client) GetCreditCard(id string) (*CreditCard, error)
- func (c *Client) GetCreditCards(ccf *CreditCardsFilter) (*CreditCards, error)
- func (c *Client) GetOrder(orderID string) (*Order, error)
- func (c *Client) GetPayment(paymentID string) (*Payment, error)
- func (c *Client) GetPayments() ([]Payment, error)
- func (c *Client) GetRefund(refundID string) (*Refund, error)
- func (c *Client) GetSale(saleID string) (*Sale, error)
- func (c *Client) GetUserInfo(schema string) (*UserInfo, error)
- func (c *Client) GetWebProfile(profileID string) (*WebProfile, error)
- func (c *Client) GetWebProfiles() ([]WebProfile, error)
- func (c *Client) GrantNewAccessTokenFromAuthCode(code string, redirectURI string) (*TokenResponse, error)
- func (c *Client) GrantNewAccessTokenFromRefreshToken(refreshToken string) (*TokenResponse, error)
- func (c *Client) NewRequest(method, url string, payload interface{}) (*http.Request, error)
- func (c *Client) PatchCreditCard(id string, ccf []CreditCardField) (*CreditCard, error)
- func (c *Client) ReauthorizeAuthorization(authID string, a *Amount) (*Authorization, error)
- func (c *Client) RefundSale(saleID string, a *Amount) (*Refund, error)
- func (c *Client) Send(req *http.Request, v interface{}) error
- func (c *Client) SendWithAuth(req *http.Request, v interface{}) error
- func (c *Client) SetAccessToken(token string) error
- func (c *Client) SetHTTPClient(client *http.Client) error
- func (c *Client) SetLog(log io.Writer) error
- func (c *Client) SetWebProfile(wp WebProfile) error
- func (c *Client) StoreCreditCard(cc CreditCard) (*CreditCard, error)
- func (c *Client) VoidAuthorization(authID string) (*Authorization, error)
- func (c *Client) VoidOrder(orderID string) (*Order, error)
- type CreateAgreementResp
- type CreateBillingResp
- type CreatePaymentResp
- type CreditCard
- type CreditCardField
- type CreditCardToken
- type CreditCards
- type CreditCardsFilter
- type Currency
- type Details
- type ErrorResponse
- type ExecuteAgreementResponse
- type ExecuteResponse
- type FlowConfig
- type FundingInstrument
- type InputFields
- type Item
- type ItemList
- type JsonTime
- type Link
- type ListPaymentsResp
- type MerchantPreferences
- type Order
- type Payer
- type PayerInfo
- type Payment
- type PaymentDefinition
- type PaymentResponse
- type Payout
- type PayoutItem
- type PayoutItemResponse
- type PayoutResponse
- type Presentation
- type RedirectURLs
- type Refund
- type Related
- type Sale
- type SenderBatchHeader
- type ShippingAddress
- type TokenResponse
- type Transaction
- type UserInfo
- type WebProfile
Examples ¶
Constants ¶
const ( // APIBaseSandBox points to the sandbox (for testing) version of the API APIBaseSandBox = "https://api.sandbox.paypal.com" // APIBaseLive points to the live version of the API APIBaseLive = "https://api.paypal.com" // RequestNewTokenBeforeExpiresIn is used by SendWithAuth and try to get new Token when it's about to expire RequestNewTokenBeforeExpiresIn = time.Duration(60) * time.Second )
const ( NoShippingDisplay uint = 0 NoShippingHide uint = 1 NoShippingBuyerAccount uint = 2 )
Possible values for `no_shipping` in InputFields
https://developer.paypal.com/docs/api/payment-experience/#definition-input_fields
const ( AddrOverrideFromFile uint = 0 AddrOverrideFromCall uint = 1 )
Possible values for `address_override` in InputFields
https://developer.paypal.com/docs/api/payment-experience/#definition-input_fields
const ( LandingPageTypeBilling string = "Billing" LandingPageTypeLogin string = "Login" )
Possible values for `landing_page_type` in FlowConfig
https://developer.paypal.com/docs/api/payment-experience/#definition-flow_config
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type Address ¶
type Address struct { Line1 string `json:"line1"` Line2 string `json:"line2,omitempty"` City string `json:"city"` CountryCode string `json:"country_code"` PostalCode string `json:"postal_code,omitempty"` State string `json:"state,omitempty"` Phone string `json:"phone,omitempty"` }
Address struct
type AgreementDetails ¶
type AgreementDetails struct { OutstandingBalance AmountPayout `json:"outstanding_balance"` CyclesRemaining int `json:"cycles_remaining,string"` CyclesCompleted int `json:"cycles_completed,string"` NextBillingDate time.Time `json:"next_billing_date"` LastPaymentDate time.Time `json:"last_payment_date"` LastPaymentAmount AmountPayout `json:"last_payment_amount"` FinalPaymentDate time.Time `json:"final_payment_date"` FailedPaymentCount int `json:"failed_payment_count,string"` }
AgreementDetails struct
type Amount ¶
type Amount struct { Currency string `json:"currency"` Total string `json:"total"` Details Details `json:"details,omitempty"` }
Amount struct
type AmountPayout ¶
AmountPayout struct
type Authorization ¶
type Authorization struct { Amount *Amount `json:"amount,omitempty"` CreateTime *time.Time `json:"create_time,omitempty"` UpdateTime *time.Time `json:"update_time,omitempty"` State string `json:"state,omitempty"` ParentPayment string `json:"parent_payment,omitempty"` ID string `json:"id,omitempty"` ValidUntil *time.Time `json:"valid_until,omitempty"` Links []Link `json:"links,omitempty"` ClearingTime string `json:"clearing_time,omitempty"` ProtectionEligibility string `json:"protection_eligibility,omitempty"` ProtectionEligibilityType string `json:"protection_eligibility_type,omitempty"` }
Authorization struct
type BatchHeader ¶
type BatchHeader struct { Amount *AmountPayout `json:"amount,omitempty"` Fees *AmountPayout `json:"fees,omitempty"` PayoutBatchID string `json:"payout_batch_id,omitempty"` BatchStatus string `json:"batch_status,omitempty"` TimeCreated *time.Time `json:"time_created,omitempty"` TimeCompleted *time.Time `json:"time_completed,omitempty"` SenderBatchHeader *SenderBatchHeader `json:"sender_batch_header,omitempty"` }
BatchHeader struct
type BillingAgreement ¶
type BillingAgreement struct { Name string `json:"name,omitempty"` Description string `json:"description,omitempty"` StartDate JsonTime `json:"start_date,omitempty"` Plan BillingPlan `json:"plan,omitempty"` Payer Payer `json:"payer,omitempty"` ShippingAddress *ShippingAddress `json:"shipping_address,omitempty"` }
BillingAgreement struct
type BillingPlan ¶
type BillingPlan struct { ID string `json:"id,omitempty"` Name string `json:"name,omitempty"` Description string `json:"description,omitempty"` Type string `json:"type,omitempty"` PaymentDefinitions []PaymentDefinition `json:"payment_definitions,omitempty"` MerchantPreferences *MerchantPreferences `json:"merchant_preferences,omitempty"` }
BillingPlan struct
type Capture ¶
type Capture struct { Amount *Amount `json:"amount,omitempty"` IsFinalCapture bool `json:"is_final_capture"` CreateTime *time.Time `json:"create_time,omitempty"` UpdateTime *time.Time `json:"update_time,omitempty"` State string `json:"state,omitempty"` ParentPayment string `json:"parent_payment,omitempty"` ID string `json:"id,omitempty"` Links []Link `json:"links,omitempty"` }
Capture struct
type ChargeModel ¶
type ChargeModel struct { Type string `json:"type,omitempty"` Amount AmountPayout `json:"amount,omitempty"` }
ChargeModel struct
type Client ¶
type Client struct { Client *http.Client ClientID string Secret string APIBase string Log io.Writer // If user set log file name all requests will be logged there Token *TokenResponse // contains filtered or unexported fields }
Client represents a Paypal REST API Client
func NewClient ¶
NewClient returns new Client struct APIBase is a base API URL, for testing you can use paypalsdk.APIBaseSandBox
func (*Client) ActivatePlan ¶
Activates a billing plan By default, a new plan is not activated Endpoint: PATCH /v1/payments/billing-plans/
func (*Client) AuthorizeOrder ¶
func (c *Client) AuthorizeOrder(orderID string, amount *Amount) (*Authorization, error)
AuthorizeOrder - Use this call to authorize an order. Endpoint: POST /v1/payments/orders/ID/authorize
func (*Client) CaptureAuthorization ¶
func (c *Client) CaptureAuthorization(authID string, a *Amount, isFinalCapture bool) (*Capture, error)
CaptureAuthorization captures and process an existing authorization. To use this method, the original payment must have Intent set to "authorize" Endpoint: POST /v1/payments/authorization/ID/capture
func (*Client) CaptureOrder ¶
func (c *Client) CaptureOrder(orderID string, amount *Amount, isFinalCapture bool, currency *Currency) (*Capture, error)
CaptureOrder - Use this call to capture a payment on an order. To use this call, an original payment call must specify an intent of order. Endpoint: POST /v1/payments/orders/ID/capture
func (*Client) CreateBillingAgreement ¶
func (c *Client) CreateBillingAgreement(a BillingAgreement) (*CreateAgreementResp, error)
Creates an agreement for specified plan Endpoint: POST /v1/payments/billing-agreements
func (*Client) CreateBillingPlan ¶
func (c *Client) CreateBillingPlan(plan BillingPlan) (*CreateBillingResp, error)
CreateBillingPlan creates a billing plan in Paypal Endpoint: POST /v1/payments/billing-plans
func (*Client) CreateDirectPaypalPayment ¶
func (c *Client) CreateDirectPaypalPayment(amount Amount, redirectURI string, cancelURI string, description string) (*PaymentResponse, error)
CreateDirectPaypalPayment sends request to create a payment with payment_method=paypal CreatePayment is more common function for any kind of payment Endpoint: POST /v1/payments/payment
func (*Client) CreatePayment ¶
func (c *Client) CreatePayment(p Payment) (*CreatePaymentResp, error)
CreatePayment creates a payment in Paypal Depending on the payment_method and the funding_instrument, you can use the payment resource for direct credit card payments, stored credit card payments, or PayPal account payments. Endpoint: POST /v1/payments/payment
func (*Client) CreateSinglePayout ¶
func (c *Client) CreateSinglePayout(p Payout) (*PayoutResponse, error)
CreateSinglePayout submits a payout with a synchronous API call, which immediately returns the results of a PayPal payment. For email payout set RecipientType: "EMAIL" and receiver email into Receiver Endpoint: POST /v1/payments/payouts?sync_mode=true
func (*Client) CreateWebProfile ¶
func (c *Client) CreateWebProfile(wp WebProfile) (*WebProfile, error)
CreateWebProfile creates a new web experience profile in Paypal
Allows for the customisation of the payment experience ¶
Endpoint: POST /v1/payment-experience/web-profiles
func (*Client) DeleteCreditCard ¶
DeleteCreditCard func Endpoint: DELETE /v1/vault/credit-cards/credit_card_id
func (*Client) DeleteWebProfile ¶
DeleteWebProfile deletes a web experience profile from Paypal with given id
Endpoint: DELETE /v1/payment-experience/web-profiles
func (*Client) ExecuteApprovedAgreement ¶
func (c *Client) ExecuteApprovedAgreement(token string) (*ExecuteAgreementResponse, error)
ExecuteApprovedAgreement - Use this call to execute (complete) a PayPal agreement that has been approved by the payer. Endpoint: POST /v1/payments/billing-agreements/token/agreement-execute
func (*Client) ExecuteApprovedPayment ¶
func (c *Client) ExecuteApprovedPayment(paymentID string, payerID string) (*ExecuteResponse, error)
ExecuteApprovedPayment - Use this call to execute (complete) a PayPal payment that has been approved by the payer. You can optionally update transaction information when executing the payment by passing in one or more transactions. Endpoint: POST /v1/payments/payment/paymentID/execute
func (*Client) GetAccessToken ¶
func (c *Client) GetAccessToken() (*TokenResponse, error)
GetAccessToken returns struct of TokenResponse No need to call SetAccessToken to apply new access token for current Client Endpoint: POST /v1/oauth2/token
func (*Client) GetAuthorization ¶
func (c *Client) GetAuthorization(authID string) (*Authorization, error)
GetAuthorization returns an authorization by ID Endpoint: GET /v1/payments/authorization/ID
func (*Client) GetCreditCard ¶
func (c *Client) GetCreditCard(id string) (*CreditCard, error)
GetCreditCard func Endpoint: GET /v1/vault/credit-cards/credit_card_id
func (*Client) GetCreditCards ¶
func (c *Client) GetCreditCards(ccf *CreditCardsFilter) (*CreditCards, error)
GetCreditCards func Endpoint: GET /v1/vault/credit-cards
func (*Client) GetPayment ¶
GetPayment gets a payment from PayPal Endpoint: GET /v1/payments/payment/ID
func (*Client) GetPayments ¶
GetPayments retrieve payments resources from Paypal Endpoint: GET /v1/payments/payment/
func (*Client) GetRefund ¶
GetRefund by ID Use it to look up details of a specific refund on direct and captured payments. Endpoint: GET /v1/payments/refund/ID
func (*Client) GetSale ¶
GetSale returns a sale by ID Use this call to get details about a sale transaction. Note: This call returns only the sales that were created via the REST API. Endpoint: GET /v1/payments/sale/ID
func (*Client) GetUserInfo ¶
GetUserInfo - Use this call to retrieve user profile attributes. Endpoint: GET /v1/identity/openidconnect/userinfo/?schema=<Schema> Pass the schema that is used to return as per openidconnect protocol. The only supported schema value is openid.
func (*Client) GetWebProfile ¶
func (c *Client) GetWebProfile(profileID string) (*WebProfile, error)
GetWebProfile gets an exists payment experience from Paypal
Endpoint: GET /v1/payment-experience/web-profiles/<profile-id>
func (*Client) GetWebProfiles ¶
func (c *Client) GetWebProfiles() ([]WebProfile, error)
GetWebProfiles retreieves web experience profiles from Paypal
Endpoint: GET /v1/payment-experience/web-profiles
func (*Client) GrantNewAccessTokenFromAuthCode ¶
func (c *Client) GrantNewAccessTokenFromAuthCode(code string, redirectURI string) (*TokenResponse, error)
GrantNewAccessTokenFromAuthCode - Use this call to grant a new access token, using the previously obtained authorization code. Endpoint: POST /v1/identity/openidconnect/tokenservice
func (*Client) GrantNewAccessTokenFromRefreshToken ¶
func (c *Client) GrantNewAccessTokenFromRefreshToken(refreshToken string) (*TokenResponse, error)
GrantNewAccessTokenFromRefreshToken - Use this call to grant a new access token, using a refresh token. Endpoint: POST /v1/identity/openidconnect/tokenservice
func (*Client) NewRequest ¶
NewRequest constructs a request Convert payload to a JSON
func (*Client) PatchCreditCard ¶
func (c *Client) PatchCreditCard(id string, ccf []CreditCardField) (*CreditCard, error)
PatchCreditCard func Endpoint: PATCH /v1/vault/credit-cards/credit_card_id
func (*Client) ReauthorizeAuthorization ¶
func (c *Client) ReauthorizeAuthorization(authID string, a *Amount) (*Authorization, error)
ReauthorizeAuthorization reauthorize a Paypal account payment. PayPal recommends to reauthorize payment after ~3 days Endpoint: POST /v1/payments/authorization/ID/reauthorize
func (*Client) RefundSale ¶
RefundSale refunds a completed payment. Use this call to refund a completed payment. Provide the sale_id in the URI and an empty JSON payload for a full refund. For partial refunds, you can include an amount. Endpoint: POST /v1/payments/sale/ID/refund
func (*Client) Send ¶
Send makes a request to the API, the response body will be unmarshaled into v, or if v is an io.Writer, the response will be written to it without decoding
func (*Client) SendWithAuth ¶
SendWithAuth makes a request to the API and apply OAuth2 header automatically. If the access token soon to be expired or already expired, it will try to get a new one before making the main request client.Token will be updated when changed
func (*Client) SetAccessToken ¶
SetAccessToken sets saved token to current client
func (*Client) SetHTTPClient ¶
SetHTTPClient sets *http.Client to current client
func (*Client) SetLog ¶
SetLog will set/change the output destination. If log file is set paypalsdk will log all requests and responses to this Writer
func (*Client) SetWebProfile ¶
func (c *Client) SetWebProfile(wp WebProfile) error
SetWebProfile sets a web experience profile in Paypal with given id
Endpoint: PUT /v1/payment-experience/web-profiles
func (*Client) StoreCreditCard ¶
func (c *Client) StoreCreditCard(cc CreditCard) (*CreditCard, error)
StoreCreditCard func Endpoint: POST /v1/vault/credit-cards
func (*Client) VoidAuthorization ¶
func (c *Client) VoidAuthorization(authID string) (*Authorization, error)
VoidAuthorization voids a previously authorized payment Endpoint: POST /v1/payments/authorization/ID/void
type CreateAgreementResp ¶
type CreateAgreementResp struct { Name string `json:"name,omitempty"` Description string `json:"description,omitempty"` Plan BillingPlan `json:"plan,omitempty"` Links []Link `json:"links,omitempty"` StartTime time.Time `json:"start_time,omitempty"` }
CreateAgreementResp struct
type CreateBillingResp ¶
type CreateBillingResp struct { ID string `json:"id,omitempty"` State string `json:"state,omitempty"` PaymentDefinitions []PaymentDefinition `json:"payment_definitions,omitempty"` MerchantPreferences MerchantPreferences `json:"merchant_preferences,omitempty"` CreateTime time.Time `json:"create_time,omitempty"` UpdateTime time.Time `json:"update_time,omitempty"` Links []Link `json:"links,omitempty"` }
CreateBillingResp struct
type CreatePaymentResp ¶
CreatePaymentResp contains Payment Info and Links slice
type CreditCard ¶
type CreditCard struct { ID string `json:"id,omitempty"` PayerID string `json:"payer_id,omitempty"` ExternalCustomerID string `json:"external_customer_id,omitempty"` Number string `json:"number"` Type string `json:"type"` ExpireMonth string `json:"expire_month"` ExpireYear string `json:"expire_year"` CVV2 string `json:"cvv2,omitempty"` FirstName string `json:"first_name,omitempty"` LastName string `json:"last_name,omitempty"` BillingAddress *Address `json:"billing_address,omitempty"` State string `json:"state,omitempty"` ValidUntil string `json:"valid_until,omitempty"` }
CreditCard struct
type CreditCardField ¶
type CreditCardField struct { Operation string `json:"op"` Path string `json:"path"` Value string `json:"value"` }
CreditCardField PATCH /v1/vault/credit-cards/credit_card_id
type CreditCardToken ¶
type CreditCardToken struct { CreditCardID string `json:"credit_card_id"` PayerID string `json:"payer_id,omitempty"` Last4 string `json:"last4,omitempty"` ExpireYear string `json:"expire_year,omitempty"` ExpireMonth string `json:"expire_month,omitempty"` }
CreditCardToken struct
type CreditCards ¶
type CreditCards struct { Items []CreditCard `json:"items"` Links []Link `json:"links"` TotalItems int `json:"total_items"` TotalPages int `json:"total_pages"` }
CreditCards GET /v1/vault/credit-cards
type CreditCardsFilter ¶
CreditCardsFilter struct
type Currency ¶
type Currency struct { Currency string `json:"currency,omitempty"` Value string `json:"value,omitempty"` }
Currency struct
type Details ¶
type Details struct { Subtotal string `json:"subtotal,omitempty"` Shipping string `json:"shipping,omitempty"` Tax string `json:"tax,omitempty"` HandlingFee string `json:"handling_fee,omitempty"` ShippingDiscount string `json:"shipping_discount,omitempty"` Insurance string `json:"insurance,omitempty"` GiftWrap string `json:"gift_wrap,omitempty"` }
Details structure used in Amount structures as optional value
type ErrorResponse ¶
type ErrorResponse struct { Response *http.Response `json:"-"` Name string `json:"name"` DebugID string `json:"debug_id"` Message string `json:"message"` InformationLink string `json:"information_link"` Details string `json:"details"` }
ErrorResponse https://developer.paypal.com/docs/api/errors/
func (*ErrorResponse) Error ¶
func (r *ErrorResponse) Error() string
Error method implementation for ErrorResponse struct
type ExecuteAgreementResponse ¶
type ExecuteAgreementResponse struct { ID string `json:"id"` State string `json:"state"` Description string `json:"description,omitempty"` Payer Payer `json:"payer"` Plan BillingPlan `json:"plan"` StartDate time.Time `json:"start_date"` ShippingAddress ShippingAddress `json:"shipping_address"` AgreementDetails AgreementDetails `json:"agreement_details"` Links []Link `json:"links"` }
ExecuteAgreementResponse struct
type ExecuteResponse ¶
type ExecuteResponse struct { ID string `json:"id"` Links []Link `json:"links"` State string `json:"state"` Transactions []Transaction `json:"transactions,omitempty"` }
ExecuteResponse struct
type FlowConfig ¶
type FlowConfig struct { LandingPageType string `json:"landing_page_type,omitempty"` BankTXNPendingURL string `json:"bank_txn_pending_url,omitempty"` UserAction string `json:"user_action,omitempty"` }
FlowConfig represents the general behaviour of redirect payment pages
https://developer.paypal.com/docs/api/payment-experience/#definition-flow_config
type FundingInstrument ¶
type FundingInstrument struct { CreditCard *CreditCard `json:"credit_card,omitempty"` CreditCardToken *CreditCardToken `json:"credit_card_token,omitempty"` }
FundingInstrument struct
type InputFields ¶
type InputFields struct { AllowNote bool `json:"allow_note,omitempty"` NoShipping uint `json:"no_shipping,omitempty"` AddressOverride uint `json:"address_override,omitempty"` }
InputFields represents the fields that are displayed to a customer on redirect payments
https://developer.paypal.com/docs/api/payment-experience/#definition-input_fields
type Item ¶
type Item struct { Quantity int `json:"quantity"` Name string `json:"name"` Price string `json:"price"` Currency string `json:"currency"` SKU string `json:"sku,omitempty"` Description string `json:"description,omitempty"` Tax string `json:"tax,omitempty"` }
Item struct
type ItemList ¶
type ItemList struct { Items []Item `json:"items,omitempty"` ShippingAddress *ShippingAddress `json:"shipping_address,omitempty"` }
ItemList struct
type JsonTime ¶
JsonTime overrides MarshalJson method to format in ISO8601
func (JsonTime) MarshalJSON ¶
type Link ¶
type Link struct { Href string `json:"href"` Rel string `json:"rel,omitempty"` Method string `json:"method,omitempty"` Enctype string `json:"enctype,omitempty"` }
Link struct
type ListPaymentsResp ¶
type ListPaymentsResp struct {
Payments []Payment `json:"payments"`
}
ListPaymentsResp slice of payments
type MerchantPreferences ¶
type MerchantPreferences struct { SetupFee *AmountPayout `json:"setup_fee,omitempty"` ReturnUrl string `json:"return_url,omitempty"` CancelUrl string `json:"cancel_url,omitempty"` AutoBillAmount string `json:"auto_bill_amount,omitempty"` InitialFailAmountAction string `json:"initial_fail_amount_action,omitempty"` MaxFailAttempts string `json:"max_fail_attempts,omitempty"` }
MerchantPreferences struct
type Order ¶
type Order struct { ID string `json:"id,omitempty"` CreateTime *time.Time `json:"create_time,omitempty"` UpdateTime *time.Time `json:"update_time,omitempty"` State string `json:"state,omitempty"` Amount *Amount `json:"amount,omitempty"` PendingReason string `json:"pending_reason,omitempty"` ParentPayment string `json:"parent_payment,omitempty"` Links []Link `json:"links,omitempty"` }
Order struct
type Payer ¶
type Payer struct { PaymentMethod string `json:"payment_method"` FundingInstruments []FundingInstrument `json:"funding_instruments,omitempty"` PayerInfo *PayerInfo `json:"payer_info,omitempty"` Status string `json:"payer_status,omitempty"` }
Payer struct
type PayerInfo ¶
type PayerInfo struct { Email string `json:"email,omitempty"` FirstName string `json:"first_name,omitempty"` LastName string `json:"last_name,omitempty"` PayerID string `json:"payer_id,omitempty"` Phone string `json:"phone,omitempty"` ShippingAddress *ShippingAddress `json:"shipping_address,omitempty"` TaxIDType string `json:"tax_id_type,omitempty"` TaxID string `json:"tax_id,omitempty"` }
PayerInfo struct
type Payment ¶
type Payment struct { Intent string `json:"intent"` Payer *Payer `json:"payer"` Transactions []Transaction `json:"transactions"` RedirectURLs *RedirectURLs `json:"redirect_urls,omitempty"` ID string `json:"id,omitempty"` CreateTime *time.Time `json:"create_time,omitempty"` State string `json:"state,omitempty"` UpdateTime *time.Time `json:"update_time,omitempty"` ExperienceProfileID string `json:"experience_profile_id,omitempty"` }
Payment struct
type PaymentDefinition ¶
type PaymentDefinition struct { ID string `json:"id,omitempty"` Name string `json:"name,omitempty"` Type string `json:"type,omitempty"` Frequency string `json:"frequency,omitempty"` FrequencyInterval string `json:"frequency_interval,omitempty"` Amount AmountPayout `json:"amount,omitempty"` Cycles string `json:"cycles,omitempty"` ChargeModels []ChargeModel `json:"charge_models,omitempty"` }
PaymentDefinition struct
type PaymentResponse ¶
PaymentResponse structure
type Payout ¶
type Payout struct { SenderBatchHeader *SenderBatchHeader `json:"sender_batch_header"` Items []PayoutItem `json:"items"` }
Payout struct
type PayoutItem ¶
type PayoutItem struct { RecipientType string `json:"recipient_type"` Receiver string `json:"receiver"` Amount *AmountPayout `json:"amount"` Note string `json:"note,omitempty"` SenderItemID string `json:"sender_item_id,omitempty"` }
PayoutItem struct
type PayoutItemResponse ¶
type PayoutItemResponse struct { PayoutItemID string `json:"payout_item_id"` TransactionID string `json:"transaction_id"` TransactionStatus string `json:"transaction_status"` PayoutBatchID string `json:"payout_batch_id,omitempty"` PayoutItemFee *AmountPayout `json:"payout_item_fee,omitempty"` PayoutItem *PayoutItem `json:"payout_item"` TimeProcessed *time.Time `json:"time_processed,omitempty"` Links []Link `json:"links"` }
PayoutItemResponse struct
type PayoutResponse ¶
type PayoutResponse struct { BatchHeader *BatchHeader `json:"batch_header"` Items []PayoutItemResponse `json:"items"` Links []Link `json:"links"` }
PayoutResponse struct
type Presentation ¶
type Presentation struct { BrandName string `json:"brand_name,omitempty"` LogoImage string `json:"logo_image,omitempty"` LocaleCode string `json:"locale_code,omitempty"` }
Presentation represents the branding and locale that a customer sees on redirect payments
https://developer.paypal.com/docs/api/payment-experience/#definition-presentation
type RedirectURLs ¶
type RedirectURLs struct { ReturnURL string `json:"return_url,omitempty"` CancelURL string `json:"cancel_url,omitempty"` }
RedirectURLs struct
type Refund ¶
type Refund struct { ID string `json:"id,omitempty"` Amount *Amount `json:"amount,omitempty"` CreateTime *time.Time `json:"create_time,omitempty"` State string `json:"state,omitempty"` CaptureID string `json:"capture_id,omitempty"` ParentPayment string `json:"parent_payment,omitempty"` UpdateTime *time.Time `json:"update_time,omitempty"` }
Refund struct
type Related ¶
type Related struct { Sale *Sale `json:"sale,omitempty"` Authorization *Authorization `json:"authorization,omitempty"` Order *Order `json:"order,omitempty"` Capture *Capture `json:"capture,omitempty"` Refund *Refund `json:"refund,omitempty"` }
Related struct
type Sale ¶
type Sale struct { ID string `json:"id,omitempty"` Amount *Amount `json:"amount,omitempty"` Description string `json:"description,omitempty"` CreateTime *time.Time `json:"create_time,omitempty"` State string `json:"state,omitempty"` ParentPayment string `json:"parent_payment,omitempty"` UpdateTime *time.Time `json:"update_time,omitempty"` PaymentMode string `json:"payment_mode,omitempty"` PendingReason string `json:"pending_reason,omitempty"` ReasonCode string `json:"reason_code,omitempty"` ClearingTime string `json:"clearing_time,omitempty"` ProtectionEligibility string `json:"protection_eligibility,omitempty"` ProtectionEligibilityType string `json:"protection_eligibility_type,omitempty"` Links []Link `json:"links,omitempty"` }
Sale struct
type SenderBatchHeader ¶
type SenderBatchHeader struct {
EmailSubject string `json:"email_subject"`
}
SenderBatchHeader struct
type ShippingAddress ¶
type ShippingAddress struct { RecipientName string `json:"recipient_name,omitempty"` Type string `json:"type,omitempty"` Line1 string `json:"line1"` Line2 string `json:"line2,omitempty"` City string `json:"city"` CountryCode string `json:"country_code"` PostalCode string `json:"postal_code,omitempty"` State string `json:"state,omitempty"` Phone string `json:"phone,omitempty"` }
ShippingAddress struct
type TokenResponse ¶
type TokenResponse struct { RefreshToken string `json:"refresh_token"` Token string `json:"access_token"` Type string `json:"token_type"` ExpiresIn int64 `json:"expires_in"` }
TokenResponse is for API response for the /oauth2/token endpoint
type Transaction ¶
type Transaction struct { Amount *Amount `json:"amount"` Description string `json:"description,omitempty"` ItemList *ItemList `json:"item_list,omitempty"` InvoiceNumber string `json:"invoice_number,omitempty"` Custom string `json:"custom,omitempty"` SoftDescriptor string `json:"soft_descriptor,omitempty"` RelatedResources []Related `json:"related_resources,omitempty"` }
Transaction struct
type UserInfo ¶
type UserInfo struct { ID string `json:"user_id"` Name string `json:"name"` GivenName string `json:"given_name"` FamilyName string `json:"family_name"` Email string `json:"email"` Verified bool `json:"verified,omitempty"` Gender string `json:"gender,omitempty"` BirthDate string `json:"birthdate,omitempty"` ZoneInfo string `json:"zoneinfo,omitempty"` Locale string `json:"locale,omitempty"` Phone string `json:"phone_number,omitempty"` Address *Address `json:"address,omitempty"` VerifiedAccount bool `json:"verified_account,omitempty"` AccountType string `json:"account_type,omitempty"` AgeRange string `json:"age_range,omitempty"` PayerID string `json:"payer_id,omitempty"` }
UserInfo struct
type WebProfile ¶
type WebProfile struct { ID string `json:"id,omitempty"` Name string `json:"name"` Presentation Presentation `json:"presentation,omitempty"` InputFields InputFields `json:"input_fields,omitempty"` FlowConfig FlowConfig `json:"flow_config,omitempty"` }
WebProfile represents the configuration of the payment web payment experience