paypal

package module
v1.1.4 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Nov 8, 2022 License: MIT Imports: 13 Imported by: 0

README

Go Report Card Build Status Godoc

Go client for PayPal REST API

Coverage

Auth
  • POST /v1/oauth2/token
/v1/payments
  • POST /v1/payments/payouts
  • GET /v1/payments/payouts/:id
  • GET /v1/payments/payouts-item/:id
  • POST /v1/payments/payouts-item/:id/cancel
  • GET /v1/payments/sale/:id
  • POST /v1/payments/sale/:id/refund
  • GET /v1/payments/billing-plans
  • POST /v1/payments/billing-plans
  • PATCH /v1/payments/billing-plans/:id
  • POST /v1/payments/billing-agreements
  • POST /v1/payments/billing-agreements/:token/agreement-execute
/v2/payments
  • GET /v2/payments/authorizations/:id
  • GET /v2/payments/captures/:id
  • POST /v2/payments/authorizations/:id/capture
  • POST /v2/payments/authorizations/:id/void
  • POST /v2/payments/authorizations/:id/reauthorize
  • GET /v2/payments/refund/:id
Identity
  • POST /v1/identity/openidconnect/tokenservice
  • GET /v1/identity/openidconnect/userinfo/?schema=:schema
/v1/payment-experience
  • GET /v1/payment-experience/web-profiles
  • POST /v1/payment-experience/web-profiles
  • GET /v1/payment-experience/web-profiles/:id
  • PUT /v1/payment-experience/web-profiles/:id
  • DELETE /v1/payment-experience/web-profiles/:id
/v1/reporting
  • POST /v1/reporting/transactions
Vault
  • POST /v1/vault/credit-cards
  • DELETE /v1/vault/credit-cards/:id
  • PATCH /v1/vault/credit-cards/:id
  • GET /v1/vault/credit-cards/:id
  • GET /v1/vault/credit-cards
Checkout
  • POST /v2/checkout/orders
  • GET /v2/checkout/orders/:id
  • PATCH /v2/checkout/orders/:id
  • POST /v2/checkout/orders/:id/authorize
  • POST /v2/checkout/orders/:id/capture
Notifications
  • POST /v1/notifications/webhooks
  • GET /v1/notifications/webhooks
  • GET /v1/notifications/webhooks/:id
  • PATCH /v1/notifications/webhooks/:id
  • DELETE /v1/notifications/webhooks/:id
  • POST /v1/notifications/verify-webhook-signature
Products (Catalog)
  • POST /v1/catalogs/products
  • PATCH /v1/catalogs/products/:id
  • GET /v1/catalogs/products/:id
  • GET /v1/catalogs/products
Billing Plans (Subscriptions)
  • POST /v1/billing/plans
  • PATCH /v1/billing/plans/:id
  • GET /v1/billing/plans/:id
  • GET /v1/billing/plans
  • POST /v1/billing/plans/:id/activate
  • POST /v1/billing/plans/:id/deactivate
  • POST /v1/billing/plans/:id/update-pricing-schemes
Subscriptions
  • POST /v1/billing/subscriptions
  • PATCH /v1/billing/subscriptions/:id
  • GET /v1/billing/subscriptions/:id
  • POST /v1/billing/subscriptions/:id/activate
  • POST /v1/billing/subscriptions/:id/cancel
  • POST /v1/billing/subscriptions/:id/revise
  • POST /v1/billing/subscriptions/:id/capture
  • POST /v1/billing/subscriptions/:id/suspend
  • GET /v1/billing/subscriptions/:id/transactions
Invoicing
  • POST /v2/invoicing/generate-next-invoice-number
  • GET /v2/invoicing/invoices/:id

Missing endpoints

It is possible that some endpoints are missing in this Client, but you can use built-in paypal functions to perform a request: NewClient -> NewRequest -> SendWithAuth

Usage

import "github.com/plutov/paypal/v4"

// Create a client instance
c, err := paypal.NewClient("clientID", "secretID", paypal.APIBaseSandBox)
c.SetLog(os.Stdout) // Set log to terminal stdout

accessToken, err := c.GetAccessToken(context.Background())

Get authorization by ID

auth, err := c.GetAuthorization("2DC87612EK520411B")
Capture authorization
capture, err := c.CaptureAuthorization(authID, &paypal.Amount{Total: "7.00", Currency: "USD"}, true)
Void authorization
auth, err := c.VoidAuthorization(authID)
Reauthorize authorization
auth, err := c.ReauthorizeAuthorization(authID, &paypal.Amount{Total: "7.00", Currency: "USD"})
Get Sale by ID
sale, err := c.GetSale("36C38912MN9658832")
Refund Sale by ID
// Full
refund, err := c.RefundSale(saleID, nil)
// Partial
refund, err := c.RefundSale(saleID, &paypal.Amount{Total: "7.00", Currency: "USD"})
Get Refund by ID
refund, err := c.GetRefund("O-4J082351X3132253H")
Get Order by ID
order, err := c.GetOrder("O-4J082351X3132253H")
Create an Order
order, err := c.CreateOrder(paypal.OrderIntentCapture, []paypal.PurchaseUnitRequest{paypal.PurchaseUnitRequest{ReferenceID: "ref-id", Amount: paypal.Amount{Total: "7.00", Currency: "USD"}}})
Update Order by ID
order, err := c.UpdateOrder("O-4J082351X3132253H", []paypal.PurchaseUnitRequest{})
Authorize Order
auth, err := c.AuthorizeOrder(orderID, paypal.AuthorizeOrderRequest{})
Capture Order
capture, err := c.CaptureOrder(orderID, paypal.CaptureOrderRequest{})
Identity
token, err := c.GrantNewAccessTokenFromAuthCode("<Authorization-Code>", "http://example.com/myapp/return.php")
// ... or by refresh token
token, err := c.GrantNewAccessTokenFromRefreshToken("<Refresh-Token>")
Retreive user information
userInfo, err := c.GetUserInfo("openid")
Create single payout to email
payout := paypal.Payout{
    SenderBatchHeader: &paypal.SenderBatchHeader{
        EmailSubject: "Subject will be displayed on PayPal",
    },
    Items: []paypal.PayoutItem{
        paypal.PayoutItem{
            RecipientType: "EMAIL",
            Receiver:      "single-email-payout@mail.com",
            Amount: &paypal.AmountPayout{
                Value:    "15.11",
                Currency: "USD",
            },
            Note:         "Optional note",
            SenderItemID: "Optional Item ID",
        },
    },
}

payoutResp, err := c.CreateSinglePayout(payout)
Get payout by ID
payout, err := c.GetPayout("PayoutBatchID")
Get payout item by ID
payoutItem, err := c.GetPayoutItem("PayoutItemID")
Cancel unclaimed payout item by ID
payoutItem, err := c.CancelPayoutItem("PayoutItemID")
Create web experience profile
webprofile := WebProfile{
    Name: "YeowZa! T-Shirt Shop",
    Presentation: Presentation{
        BrandName:  "YeowZa! Paypal",
        LogoImage:  "http://www.yeowza.com",
        LocaleCode: "US",
    },

    InputFields: InputFields{
        AllowNote:       true,
        NoShipping:      NoShippingDisplay,
        AddressOverride: AddrOverrideFromCall,
    },

    FlowConfig: FlowConfig{
        LandingPageType:   LandingPageTypeBilling,
        BankTXNPendingURL: "http://www.yeowza.com",
    },
}

result, err := c.CreateWebProfile(webprofile)
Get web experience profile
webprofile, err := c.GetWebProfile("XP-CP6S-W9DY-96H8-MVN2")
List web experience profile
webprofiles, err := c.GetWebProfiles()
Update web experience profile
webprofile := WebProfile{
    ID: "XP-CP6S-W9DY-96H8-MVN2",
    Name: "Shop YeowZa! YeowZa! ",
}
err := c.SetWebProfile(webprofile)
Delete web experience profile
err := c.DeleteWebProfile("XP-CP6S-W9DY-96H8-MVN2")
Vault
// Store CC
c.StoreCreditCard(paypal.CreditCard{
    Number:      "4417119669820331",
    Type:        "visa",
    ExpireMonth: "11",
    ExpireYear:  "2020",
    CVV2:        "874",
    FirstName:   "Foo",
    LastName:    "Bar",
})

// Delete it
c.DeleteCreditCard("CARD-ID-123")

// Edit it
c.PatchCreditCard("CARD-ID-123", []paypal.CreditCardField{
    paypal.CreditCardField{
        Operation: "replace",
        Path:      "/billing_address/line1",
        Value:     "New value",
    },
})

// Get it
c.GetCreditCard("CARD-ID-123")

// Get all stored credit cards
c.GetCreditCards(nil)
Webhooks
// Create a webhook
c.CreateWebhook(paypal.CreateWebhookRequest{
    URL: "webhook URL",
    EventTypes: []paypal.WebhookEventType{
        paypal.WebhookEventType{
            Name: "PAYMENT.AUTHORIZATION.CREATED",
        },
    },
})

// Update a registered webhook
c.UpdateWebhook("WebhookID", []paypal.WebhookField{
    paypal.WebhookField{
        Operation: "replace",
        Path:      "/event_types",
        Value: []interface{}{
            map[string]interface{}{
                "name": "PAYMENT.SALE.REFUNDED",
            },
        },
    },
})

// Get a registered webhook
c.GetWebhook("WebhookID")

// Delete a webhook
c.DeleteWebhook("WebhookID")

// List registered webhooks
c.ListWebhooks(paypal.AncorTypeApplication)
Generate Next Invoice Number
// GenerateInvoiceNumber: generates the next invoice number that is available to the merchant.
c.GenerateInvoiceNumber(ctx) // might return something like "0001" or "0010".
Get Invoice Details by ID
// the second argument is an ID, it should be valid
invoice, err := c.GetInvoiceDetails(ctx, "INV2-XFXV-YW42-ZANU-4F33")
  • for now, we are yet to implement the ShowAllInvoices endpoint, so use the following cURL request for the same(this gives you the list of invoice-IDs for this customer)

    curl -v -X GET https://api-m.sandbox.paypal.com/v2/invoicing/invoices?total_required=true \
    -H "Content-Type: application/json" \
    -H "Authorization: Bearer <Token>" 
    
  • refer to the beginning of this Usage section for obtaining a Token.

How to Contribute

  • Fork a repository
  • Add/Fix something
  • Check that tests are passing
  • Create PR

Current contributors:

Tests

  • Unit tests: go test -v ./...
  • Integration tests: go test -tags=integration

Documentation

Overview

Package paypal 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 paypal contants).

c, err := paypal.NewClient("clientID", "secretID", paypal.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. paypal will assign all responses to go structures.

Index

Constants

View Source
const (
	ProductTypePhysical ProductType = "PHYSICAL"
	ProductTypeDigital  ProductType = "DIGITAL"
	ProductTypeService  ProductType = "SERVICE"

	ProductCategorySoftware                                  ProductCategory = "SOFTWARE"
	ProductCategorySoftwareComputerAndDataProcessingServices ProductCategory = "COMPUTER_AND_DATA_PROCESSING_SERVICES"
	ProductCategorySoftwareDigitalGames                      ProductCategory = "DIGITAL_GAMES"
	ProductCategorySoftwareGameSoftware                      ProductCategory = "GAME_SOFTWARE"
	ProductCategorySoftwareGames                             ProductCategory = "GAMES"
	ProductCategorySoftwareGeneral                           ProductCategory = "GENERAL"
	ProductCategorySoftwareGraphicAndCommercialDesign        ProductCategory = "GRAPHIC_AND_COMMERCIAL_DESIGN"
	ProductCategorySoftwareOemSoftware                       ProductCategory = "OEM_SOFTWARE"
	ProductCategorySoftwareOnlineGaming                      ProductCategory = "ONLINE_GAMING"
	ProductCategorySoftwareOnlineGamingCurrency              ProductCategory = "ONLINE_GAMING_CURRENCY"
	ProductCategorySoftwareOnlineServices                    ProductCategory = "ONLINE_SERVICES"
	ProductCategorySoftwareOther                             ProductCategory = "OTHER"
	ProductCategorySoftwareServices                          ProductCategory = "SERVICES"
)
View Source
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
)
View Source
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

View Source
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

View Source
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

View Source
const (
	AllowedPaymentUnrestricted         string = "UNRESTRICTED"
	AllowedPaymentInstantFundingSource string = "INSTANT_FUNDING_SOURCE"
	AllowedPaymentImmediatePay         string = "IMMEDIATE_PAY"
)

Possible value for `allowed_payment_method` in PaymentOptions

https://developer.paypal.com/docs/api/payments/#definition-payment_options

View Source
const (
	OrderIntentCapture   string = "CAPTURE"
	OrderIntentAuthorize string = "AUTHORIZE"
)

Possible value for `intent` in CreateOrder

https://developer.paypal.com/docs/api/orders/v2/#orders_create

View Source
const (
	OrderStatusCreated   string = "CREATED"
	OrderStatusSaved     string = "SAVED"
	OrderStatusApproved  string = "APPROVED"
	OrderStatusVoided    string = "VOIDED"
	OrderStatusCompleted string = "COMPLETED"
)

Possible value for `status` in GetOrder

https://developer.paypal.com/docs/api/orders/v2/#orders-get-response

View Source
const (
	ItemCategoryDigitalGood  string = "DIGITAL_GOODS"
	ItemCategoryPhysicalGood string = "PHYSICAL_GOODS"
)

Possible values for `category` in Item

https://developer.paypal.com/docs/api/orders/v2/#definition-item

View Source
const (
	EventCheckoutOrderApproved         string = "CHECKOUT.ORDER.APPROVED"
	EventPaymentCaptureCompleted       string = "PAYMENT.CAPTURE.COMPLETED"
	EventPaymentCaptureDenied          string = "PAYMENT.CAPTURE.DENIED"
	EventPaymentCaptureRefunded        string = "PAYMENT.CAPTURE.REFUNDED"
	EventMerchantOnboardingCompleted   string = "MERCHANT.ONBOARDING.COMPLETED"
	EventMerchantPartnerConsentRevoked string = "MERCHANT.PARTNER-CONSENT.REVOKED"
)
View Source
const (
	OperationAPIIntegration   string = "API_INTEGRATION"
	ProductExpressCheckout    string = "EXPRESS_CHECKOUT"
	IntegrationMethodPayPal   string = "PAYPAL"
	IntegrationTypeThirdParty string = "THIRD_PARTY"
	ConsentShareData          string = "SHARE_DATA_CONSENT"
)
View Source
const (
	FeaturePayment               string = "PAYMENT"
	FeatureRefund                string = "REFUND"
	FeatureFuturePayment         string = "FUTURE_PAYMENT"
	FeatureDirectPayment         string = "DIRECT_PAYMENT"
	FeaturePartnerFee            string = "PARTNER_FEE"
	FeatureDelayFunds            string = "DELAY_FUNDS_DISBURSEMENT"
	FeatureReadSellerDispute     string = "READ_SELLER_DISPUTE"
	FeatureUpdateSellerDispute   string = "UPDATE_SELLER_DISPUTE"
	FeatureDisputeReadBuyer      string = "DISPUTE_READ_BUYER"
	FeatureUpdateCustomerDispute string = "UPDATE_CUSTOMER_DISPUTES"
)
View Source
const (
	EmailRecipientType    string = "EMAIL"     // An unencrypted email — string of up to 127 single-byte characters.
	PaypalIdRecipientType string = "PAYPAL_ID" // An encrypted PayPal account number.
	PhoneRecipientType    string = "PHONE"     // An unencrypted phone number.

)

https://developer.paypal.com/docs/api/payments.payouts-batch/v1/?mark=recipient_type#definition-recipient_type

View Source
const (
	PaypalRecipientWallet string = "PAYPAL"
	VenmoRecipientWallet  string = "VENMO"
)

https://developer.paypal.com/docs/api/payments.payouts-batch/v1/?mark=recipient_wallet#definition-recipient_wallet

View Source
const (
	BatchStatusDenied     string = "DENIED"
	BatchStatusPending    string = "PENDING"
	BatchStatusProcessing string = "PROCESSING"
	BatchStatusSuccess    string = "SUCCESS"
	BatchStatusCanceled   string = "CANCELED"
)

Possible value for `batch_status` in GetPayout

https://developer.paypal.com/docs/api/payments.payouts-batch/v1/#definition-batch_status

View Source
const (
	LinkRelSelf      string = "self"
	LinkRelActionURL string = "action_url"
)
View Source
const (
	AncorTypeApplication string = "APPLICATION"
	AncorTypeAccount     string = "ACCOUNT"
)

Variables

This section is empty.

Functions

This section is empty.

Types

type Address

type Address struct {
	Line1       string `json:"line1,omitempty"`
	Line2       string `json:"line2,omitempty"`
	City        string `json:"city,omitempty"`
	CountryCode string `json:"country_code,omitempty"`
	PostalCode  string `json:"postal_code,omitempty"`
	State       string `json:"state,omitempty"`
	Phone       string `json:"phone,omitempty"`
}

Address struct

type AggregatedDiscount added in v1.1.4

type AggregatedDiscount struct {
	InvoiceDiscount InvoicingDiscount `json:"invoice_discount,omitempty"`
	ItemDiscount    *Money            `json:"item_discount,omitempty"`
}

Used in InvoiceAmountWithBreakdown Doc: https://developer.paypal.com/docs/api/invoicing/v2/#definition-aggregated_discount

type AgreeMoney added in v1.1.4

type AgreeMoney struct {
	Currency string `json:"currency"`
	Value    string `json:"value"`
}

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 AgreementTransaction added in v1.1.4

type AgreementTransaction struct {
	TransactionID   string     `json:"transaction_id"`
	Status          string     `json:"status"`
	TransactionType string     `json:"transaction_type"`
	Amount          AgreeMoney `json:"amount"`
	FeeAmount       AgreeMoney `json:"fee_amount"`
	NetAmount       AgreeMoney `json:"net_amount"`
	PayerEmail      string     `json:"payer_email"`
	PayerName       string     `json:"payer_name"`
	TimeStamp       JSONTime   `json:"time_stamp"`
	TimeZone        string     `json:"time_zone"`
}

type AgreementTransactionListParams added in v1.1.4

type AgreementTransactionListParams struct {
	StartDate string
	EndDate   string
}

type AgreementTransactionListResponse added in v1.1.4

type AgreementTransactionListResponse struct {
	AgreementTransactionList []AgreementTransaction `json:"agreement_transaction_list"`
}

type Amount

type Amount struct {
	Currency string  `json:"currency"`
	Total    string  `json:"total"`
	Details  Details `json:"details,omitempty"`
}

Amount struct

type AmountPayout

type AmountPayout struct {
	Currency string `json:"currency"`
	Value    string `json:"value"`
}

AmountPayout struct

type AmountSummaryDetail added in v1.1.4

type AmountSummaryDetail struct {
	Breakdown InvoiceAmountWithBreakdown `json:"breakdown,omitempty"`
	Currency  string                     `json:"currency_code,omitempty"`
	Value     string                     `json:"value,omitempty"`
}

Invoice AmountSummary Doc: https://developer.paypal.com/docs/api/invoicing/v2/#definition-amount_summary_detail

type AmountWithBreakdown added in v1.1.4

type AmountWithBreakdown struct {
	GrossAmount    Money `json:"gross_amount"`
	FeeAmount      Money `json:"fee_amount"`
	ShippingAmount Money `json:"shipping_amount"`
	TaxAmount      Money `json:"tax_amount"`
	NetAmount      Money `json:"net_amount"`
}

Doc: https://developer.paypal.com/docs/api/subscriptions/v1/#definition-amount_with_breakdown

type AnyEvent added in v1.1.4

type AnyEvent struct {
	Event
	Resource json.RawMessage `json:"resource"`
}

type ApplicationContext added in v1.1.1

type ApplicationContext struct {
	BrandName          string             `json:"brand_name,omitempty"`
	Locale             string             `json:"locale,omitempty"`
	ShippingPreference ShippingPreference `json:"shipping_preference,omitempty"`
	UserAction         UserAction         `json:"user_action,omitempty"`
	PaymentMethod      PaymentMethod      `json:"payment_method,omitempty"`
	//LandingPage        string `json:"landing_page,omitempty"` // not found in documentation
	ReturnURL string `json:"return_url,omitempty"`
	CancelURL string `json:"cancel_url,omitempty"`
}

ApplicationContext struct Doc: https://developer.paypal.com/docs/api/subscriptions/v1/#definition-application_context

type Authorization

type Authorization struct {
	ID               string                `json:"id,omitempty"`
	CustomID         string                `json:"custom_id,omitempty"`
	InvoiceID        string                `json:"invoice_id,omitempty"`
	Status           string                `json:"status,omitempty"`
	StatusDetails    *CaptureStatusDetails `json:"status_details,omitempty"`
	Amount           *PurchaseUnitAmount   `json:"amount,omitempty"`
	SellerProtection *SellerProtection     `json:"seller_protection,omitempty"`
	CreateTime       *time.Time            `json:"create_time,omitempty"`
	UpdateTime       *time.Time            `json:"update_time,omitempty"`
	ExpirationTime   *time.Time            `json:"expiration_time,omitempty"`
	Links            []Link                `json:"links,omitempty"`
}

Authorization struct

type AuthorizeOrderRequest added in v1.1.4

type AuthorizeOrderRequest struct {
	PaymentSource      *PaymentSource     `json:"payment_source,omitempty"`
	ApplicationContext ApplicationContext `json:"application_context,omitempty"`
}

AuthorizeOrderRequest - https://developer.paypal.com/docs/api/orders/v2/#orders_authorize

type AuthorizeOrderResponse added in v1.1.4

type AuthorizeOrderResponse struct {
	CreateTime    *time.Time             `json:"create_time,omitempty"`
	UpdateTime    *time.Time             `json:"update_time,omitempty"`
	ID            string                 `json:"id,omitempty"`
	Status        string                 `json:"status,omitempty"`
	Intent        string                 `json:"intent,omitempty"`
	PurchaseUnits []PurchaseUnitRequest  `json:"purchase_units,omitempty"`
	Payer         *PayerWithNameAndPhone `json:"payer,omitempty"`
}

AuthorizeOrderResponse .

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 {
	ID                          string               `json:"id,omitempty"`
	State                       string               `json:"state,omitempty"`
	Name                        string               `json:"name,omitempty"`
	Description                 string               `json:"description,omitempty"`
	StartDate                   *JSONTime            `json:"start_date,omitempty"`
	AgreementDetails            *AgreementDetails    `json:"agreement_details,omitempty"`
	Plan                        *BillingPlan         `json:"plan,omitempty"`
	Payer                       *Payer               `json:"payer,omitempty"`
	ShippingAddress             *ShippingAddress     `json:"shipping_address,omitempty"`
	OverrideMerchantPreferences *MerchantPreferences `json:"override_merchant_preferences,omitempty"`
}

BillingAgreement struct

type BillingAgreementFromToken added in v1.1.4

type BillingAgreementFromToken struct {
	ID          string      `json:"id,omitempty"`
	Description string      `json:"description,omitempty"`
	Payer       *Payer      `json:"payer,omitempty"`
	Plan        BillingPlan `json:"plan,omitempty"`
	Links       []Link      `json:"links,omitempty"`
}

BillingAgreementFromToken struct

type BillingAgreementToken added in v1.1.4

type BillingAgreementToken struct {
	Links   []Link `json:"links,omitempty"`
	TokenID string `json:"token_id,omitempty"`
}

BillingAgreementToken response struct

type BillingCycle added in v1.1.4

type BillingCycle struct {
	PricingScheme PricingScheme `json:"pricing_scheme"` // The active pricing scheme for this billing cycle. A free trial billing cycle does not require a pricing scheme.
	Frequency     Frequency     `json:"frequency"`      // The frequency details for this billing cycle.
	TenureType    TenureType    `json:"tenure_type"`    // The tenure type of the billing cycle. In case of a plan having trial cycle, only 2 trial cycles are allowed per plan. The possible values are:
	Sequence      int           `json:"sequence"`       // The order in which this cycle is to run among other billing cycles. For example, a trial billing cycle has a sequence of 1 while a regular billing cycle has a sequence of 2, so that trial cycle runs before the regular cycle.
	TotalCycles   int           `json:"total_cycles"`   // The number of times this billing cycle gets executed. Trial billing cycles can only be executed a finite number of times (value between 1 and 999 for total_cycles). Regular billing cycles can be executed infinite times (value of 0 for total_cycles) or a finite number of times (value between 1 and 999 for total_cycles).
}

Doc https://developer.paypal.com/docs/api/subscriptions/v1/#definition-billing_cycle

type BillingCycleOverride added in v1.1.4

type BillingCycleOverride struct {
	PricingScheme PricingScheme `json:"pricing_scheme,omitempty"`
	Sequence      *int          `json:"sequence,omitempty"`
	TotalCycles   *int          `json:"total_cycles,omitempty"`
}

https://developer.paypal.com/docs/api/subscriptions/v1/#definition-billing_cycle_override

type BillingInfo added in v1.1.4

type BillingInfo struct {
	OutstandingBalance  AmountPayout      `json:"outstanding_balance,omitempty"`
	CycleExecutions     []CycleExecutions `json:"cycle_executions,omitempty"`
	LastPayment         LastPayment       `json:"last_payment,omitempty"`
	NextBillingTime     time.Time         `json:"next_billing_time,omitempty"`
	FailedPaymentsCount int               `json:"failed_payments_count,omitempty"`
}

BillingInfo 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"`
	State               string               `json:"state,omitempty"`
	CreateTime          *time.Time           `json:"create_time",omitempty"`
	UpdateTime          *time.Time           `json:"update_time",omitempty"`
	PaymentDefinitions  []PaymentDefinition  `json:"payment_definitions,omitempty"`
	MerchantPreferences *MerchantPreferences `json:"merchant_preferences,omitempty"`
	Links               []Link               `json:"links,omitempty"`
}

BillingPlan struct

type BillingPlanListParams added in v1.1.4

type BillingPlanListParams struct {
	ListParams
	Status string `json:"status,omitempty"` //Allowed values: CREATED, ACTIVE, INACTIVE, ALL.
}

BillingPlanListParams

type BillingPlanListResp deprecated added in v1.1.4

type BillingPlanListResp = BillingPlanListResponse

BillingPlanListResp.

Deprecated: use BillingPlanListResponse instead.

type BillingPlanListResponse added in v1.1.4

type BillingPlanListResponse struct {
	SharedListResponse
	Plans []BillingPlan `json:"plans,omitempty"`
}

BillingPlanListResponse

type BillingPlanStatus added in v1.1.4

type BillingPlanStatus string
const (
	BillingPlanStatusActive BillingPlanStatus = "ACTIVE"
)

type Capture

type Capture struct {
	ID             string     `json:"id,omitempty"`
	Amount         *Amount    `json:"amount,omitempty"`
	State          string     `json:"state,omitempty"`
	ParentPayment  string     `json:"parent_payment,omitempty"`
	TransactionFee string     `json:"transaction_fee,omitempty"`
	IsFinalCapture bool       `json:"is_final_capture"`
	CreateTime     *time.Time `json:"create_time,omitempty"`
	UpdateTime     *time.Time `json:"update_time,omitempty"`
	Links          []Link     `json:"links,omitempty"`
}

Capture struct

type CaptureAmount added in v1.1.4

type CaptureAmount struct {
	Status                    string                     `json:"status,omitempty"`
	ID                        string                     `json:"id,omitempty"`
	CustomID                  string                     `json:"custom_id,omitempty"`
	Amount                    *PurchaseUnitAmount        `json:"amount,omitempty"`
	SellerProtection          *SellerProtection          `json:"seller_protection,omitempty"`
	SellerReceivableBreakdown *SellerReceivableBreakdown `json:"seller_receivable_breakdown,omitempty"`
}

CaptureAmount struct

type CaptureDetailsResponse added in v1.1.4

type CaptureDetailsResponse struct {
	Status                    string                     `json:"status,omitempty"`
	StatusDetails             *CaptureStatusDetails      `json:"status_details,omitempty"`
	ID                        string                     `json:"id,omitempty"`
	Amount                    *Money                     `json:"amount,omitempty"`
	InvoiceID                 string                     `json:"invoice_id,omitempty"`
	CustomID                  string                     `json:"custom_id,omitempty"`
	SellerProtection          *SellerProtection          `json:"seller_protection,omitempty"`
	FinalCapture              bool                       `json:"final_capture,omitempty"`
	SellerReceivableBreakdown *SellerReceivableBreakdown `json:"seller_receivable_breakdown,omitempty"`
	DisbursementMode          string                     `json:"disbursement_mode,omitempty"`
	Links                     []Link                     `json:"links,omitempty"`
	UpdateTime                *time.Time                 `json:"update_time,omitempty"`
	CreateTime                *time.Time                 `json:"create_time,omitempty"`
}

https://developer.paypal.com/docs/api/payments/v2/#captures_get

type CaptureOrderMockResponse added in v1.1.4

type CaptureOrderMockResponse struct {
	MockApplicationCodes string `json:"mock_application_codes"`
}

CaptureOrderMockResponse - https://developer.paypal.com/docs/api-basics/sandbox/request-headers/#test-api-error-handling-routines

type CaptureOrderRequest added in v1.1.4

type CaptureOrderRequest struct {
	PaymentSource *PaymentSource `json:"payment_source"`
}

CaptureOrderRequest - https://developer.paypal.com/docs/api/orders/v2/#orders_capture

type CaptureOrderResponse added in v1.1.4

type CaptureOrderResponse struct {
	ID            string                 `json:"id,omitempty"`
	Status        string                 `json:"status,omitempty"`
	Payer         *PayerWithNameAndPhone `json:"payer,omitempty"`
	Address       *Address               `json:"address,omitempty"`
	PurchaseUnits []CapturedPurchaseUnit `json:"purchase_units,omitempty"`
}

CaptureOrderResponse is the response for capture order

type CaptureRequest added in v1.1.4

type CaptureRequest struct {
	Note        string      `json:"note"`
	CaptureType CaptureType `json:"capture_type"`
	Amount      Money       `json:"amount"`
}

type CaptureSellerBreakdown added in v1.1.4

type CaptureSellerBreakdown struct {
	GrossAmount         PurchaseUnitAmount  `json:"gross_amount"`
	PayPalFee           PurchaseUnitAmount  `json:"paypal_fee"`
	NetAmount           PurchaseUnitAmount  `json:"net_amount"`
	TotalRefundedAmount *PurchaseUnitAmount `json:"total_refunded_amount,omitempty"`
}

type CaptureStatusDetails added in v1.1.4

type CaptureStatusDetails struct {
	Reason string `json:"reason,omitempty"`
}

https://developer.paypal.com/docs/api/payments/v2/#definition-capture_status_details

type CaptureType added in v1.1.4

type CaptureType string
const (
	CaptureTypeOutstandingBalance CaptureType = "OUTSTANDING_BALANCE"
)

type CapturedPayments added in v1.1.4

type CapturedPayments struct {
	Captures []CaptureAmount `json:"captures,omitempty"`
}

CapturedPayments has the amounts for a captured order

type CapturedPurchaseItem added in v1.1.4

type CapturedPurchaseItem struct {
	Quantity    string `json:"quantity"`
	Name        string `json:"name"`
	SKU         string `json:"sku,omitempty"`
	Description string `json:"description,omitempty"`
}

CapturedPurchaseItem are items for a captured order

type CapturedPurchaseUnit added in v1.1.4

type CapturedPurchaseUnit struct {
	Items       []CapturedPurchaseItem       `json:"items,omitempty"`
	ReferenceID string                       `json:"reference_id"`
	Shipping    CapturedPurchaseUnitShipping `json:"shipping,omitempty"`
	Payments    *CapturedPayments            `json:"payments,omitempty"`
}

CapturedPurchaseUnit are purchase units for a captured order

type CapturedPurchaseUnitShipping added in v1.1.4

type CapturedPurchaseUnitShipping struct {
	Address ShippingDetailAddressPortable `json:"address,omitempty"`
}

type CardBillingAddress added in v1.1.4

type CardBillingAddress struct {
	AddressLine1 string `json:"address_line_1"`
	AddressLine2 string `json:"address_line_2"`
	AdminArea2   string `json:"admin_area_2"`
	AdminArea1   string `json:"admin_area_1"`
	PostalCode   string `json:"postal_code"`
	CountryCode  string `json:"country_code"`
}

CardBillingAddress structure

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

func NewClient(clientID string, secret string, APIBase string) (*Client, error)

NewClient returns new Client struct APIBase is a base API URL, for testing you can use paypal.APIBaseSandBox

func (*Client) ActivatePlan

func (c *Client) ActivatePlan(ctx context.Context, planID string) error

ActivatePlan activates a billing plan By default, a new plan is not activated Endpoint: PATCH /v1/payments/billing-plans/

func (*Client) ActivateSubscription added in v1.1.4

func (c *Client) ActivateSubscription(ctx context.Context, subscriptionId, activateReason string) error

Activates the subscription. Doc: https://developer.paypal.com/docs/api/subscriptions/v1/#subscriptions_activate Endpoint: POST /v1/billing/subscriptions/{id}/activate

func (*Client) ActivateSubscriptionPlan added in v1.1.4

func (c *Client) ActivateSubscriptionPlan(ctx context.Context, planId string) error

Activates a plan Doc: https://developer.paypal.com/docs/api/subscriptions/v1/#plans_activate Endpoint: POST /v1/billing/plans/{id}/activate

func (*Client) AuthorizeOrder

func (c *Client) AuthorizeOrder(ctx context.Context, orderID string, authorizeOrderRequest AuthorizeOrderRequest) (*AuthorizeOrderResponse, error)

AuthorizeOrder - https://developer.paypal.com/docs/api/orders/v2/#orders_authorize Endpoint: POST /v2/checkout/orders/ID/authorize

func (*Client) CancelBillingAgreement added in v1.1.4

func (c *Client) CancelBillingAgreement(
	ctx context.Context,
	billingAgreementID string,
	note string,
) error

CancelBillingAgreement - Use this call to cancel a billing agreement Endpoint: POST /v1/payments/billing-agreements/{agreement_id}/cancel

func (*Client) CancelPayoutItem

func (c *Client) CancelPayoutItem(ctx context.Context, payoutItemID string) (*PayoutItemResponse, error)

CancelPayoutItem cancels an unclaimed Payout Item. If no one claims the unclaimed item within 30 days, the funds are automatically returned to the sender. Use this call to cancel the unclaimed item before the automatic 30-day refund. Endpoint: POST /v1/payments/payouts-item/ID/cancel

func (*Client) CancelSubscription added in v1.1.4

func (c *Client) CancelSubscription(ctx context.Context, subscriptionId, cancelReason string) error

Cancels the subscription. Doc: https://developer.paypal.com/docs/api/subscriptions/v1/#subscriptions_cancel Endpoint: POST /v1/billing/subscriptions/{id}/cancel

func (*Client) CaptureAuthorization

func (c *Client) CaptureAuthorization(ctx context.Context, authID string, paymentCaptureRequest *PaymentCaptureRequest) (*PaymentCaptureResponse, error)

CaptureAuthorization captures and process an existing authorization. To use this method, the original payment must have Intent set to "authorize" Endpoint: POST /v2/payments/authorizations/ID/capture

func (*Client) CaptureAuthorizationWithPaypalRequestId added in v1.1.4

func (c *Client) CaptureAuthorizationWithPaypalRequestId(ctx context.Context,
	authID string,
	paymentCaptureRequest *PaymentCaptureRequest,
	requestID string,
) (*PaymentCaptureResponse, error)

CaptureAuthorization captures and process an existing authorization with idempotency. To use this method, the original payment must have Intent set to "authorize" Endpoint: POST /v2/payments/authorizations/ID/capture

func (*Client) CaptureOrder

func (c *Client) CaptureOrder(ctx context.Context, orderID string, captureOrderRequest CaptureOrderRequest) (*CaptureOrderResponse, error)

CaptureOrder - https://developer.paypal.com/docs/api/orders/v2/#orders_capture Endpoint: POST /v2/checkout/orders/ID/capture

func (*Client) CaptureOrderWithPaypalRequestId added in v1.1.4

func (c *Client) CaptureOrderWithPaypalRequestId(ctx context.Context,
	orderID string,
	captureOrderRequest CaptureOrderRequest,
	requestID string,
	mockResponse *CaptureOrderMockResponse,
) (*CaptureOrderResponse, error)

CaptureOrder with idempotency - https://developer.paypal.com/docs/api/orders/v2/#orders_capture Endpoint: POST /v2/checkout/orders/ID/capture https://developer.paypal.com/docs/api/reference/api-requests/#http-request-headers

func (*Client) CaptureSubscription added in v1.1.4

func (c *Client) CaptureSubscription(ctx context.Context, subscriptionId string, request CaptureRequest) (*SubscriptionCaptureResponse, error)

Captures an authorized payment from the subscriber on the subscription. Doc: https://developer.paypal.com/docs/api/subscriptions/v1/#subscriptions_capture Endpoint: POST /v1/billing/subscriptions/{id}/capture

func (*Client) CapturedDetail added in v1.1.4

func (c *Client) CapturedDetail(ctx context.Context, captureID string) (*CaptureDetailsResponse, error)

CapturedDetail - https://developer.paypal.com/docs/api/payments/v2/#captures_get Endpoint: GET /v2/payments/captures/ID

func (*Client) CreateBillingAgreement

func (c *Client) CreateBillingAgreement(ctx context.Context, a BillingAgreement) (*CreateAgreementResponse, error)

CreateBillingAgreement creates an agreement for specified plan Endpoint: POST /v1/payments/billing-agreements Deprecated: Use POST /v1/billing-agreements/agreements

func (*Client) CreateBillingAgreementFromToken added in v1.1.4

func (c *Client) CreateBillingAgreementFromToken(
	ctx context.Context,
	tokenID string,
) (*BillingAgreementFromToken, error)

CreateBillingAgreementFromToken - Use this call to create a billing agreement Endpoint: POST /v1/billing-agreements/agreements

func (*Client) CreateBillingAgreementToken added in v1.1.4

func (c *Client) CreateBillingAgreementToken(
	ctx context.Context,
	description *string,
	shippingAddress *ShippingAddress,
	payer *Payer,
	plan *BillingPlan,
) (*BillingAgreementToken, error)

CreateBillingAgreementToken - Use this call to create a billing agreement token Endpoint: POST /v1/billing-agreements/agreement-tokens

func (*Client) CreateBillingPlan

func (c *Client) CreateBillingPlan(ctx context.Context, plan BillingPlan) (*CreateBillingResponse, error)

CreateBillingPlan creates a billing plan in Paypal Endpoint: POST /v1/payments/billing-plans

func (*Client) CreateOrder added in v1.1.4

func (c *Client) CreateOrder(ctx context.Context, intent string, purchaseUnits []PurchaseUnitRequest, payer *CreateOrderPayer, appContext *ApplicationContext) (*Order, error)

CreateOrder - Use this call to create an order Endpoint: POST /v2/checkout/orders

func (*Client) CreateOrderWithPaypalRequestID added in v1.1.4

func (c *Client) CreateOrderWithPaypalRequestID(ctx context.Context,
	intent string,
	purchaseUnits []PurchaseUnitRequest,
	payer *CreateOrderPayer,
	appContext *ApplicationContext,
	requestID string,
) (*Order, error)

CreateOrderWithPaypalRequestID - Use this call to create an order with idempotency Endpoint: POST /v2/checkout/orders

func (*Client) CreatePayout added in v1.1.4

func (c *Client) CreatePayout(ctx context.Context, p Payout) (*PayoutResponse, error)

CreatePayout submits a payout with an asynchronous 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

func (*Client) CreatePaypalBillingAgreementFromToken added in v1.1.4

func (c *Client) CreatePaypalBillingAgreementFromToken(
	ctx context.Context,
	tokenID string,
) (*BillingAgreementFromToken, error)

CreatePaypalBillingAgreementFromToken - Use this call to create a billing agreement Endpoint: POST /v1/billing-agreements/agreements Deprecated: use CreateBillingAgreementFromToken instead

func (*Client) CreatePaypalBillingAgreementToken added in v1.1.4

func (c *Client) CreatePaypalBillingAgreementToken(
	ctx context.Context,
	description *string,
	shippingAddress *ShippingAddress,
	payer *Payer,
	plan *BillingPlan,
) (*BillingAgreementToken, error)

CreatePaypalBillingAgreementToken - Use this call to create a billing agreement token Endpoint: POST /v1/billing-agreements/agreement-tokens Deprecated: use CreateBillingAgreementToken instead

func (*Client) CreateProduct added in v1.1.4

func (c *Client) CreateProduct(ctx context.Context, product Product) (*CreateProductResponse, error)

CreateProduct creates a product Doc: https://developer.paypal.com/docs/api/catalog-products/v1/#products_create Endpoint: POST /v1/catalogs/products

func (*Client) CreateSinglePayout

func (c *Client) CreateSinglePayout(ctx context.Context, p Payout) (*PayoutResponse, error)

CreateSinglePayout is deprecated, use CreatePayout instead.

func (*Client) CreateSubscription added in v1.1.4

func (c *Client) CreateSubscription(ctx context.Context, newSubscription SubscriptionBase) (*SubscriptionDetailResp, error)

CreateSubscriptionPlan creates a subscriptionPlan Doc: https://developer.paypal.com/docs/api/subscriptions/v1/#subscriptions_create Endpoint: POST /v1/billing/subscriptions

func (*Client) CreateSubscriptionPlan added in v1.1.4

func (c *Client) CreateSubscriptionPlan(ctx context.Context, newPlan SubscriptionPlan) (*CreateSubscriptionPlanResponse, error)

CreateSubscriptionPlan creates a subscriptionPlan Doc: https://developer.paypal.com/docs/api/subscriptions/v1/#plans_create Endpoint: POST /v1/billing/plans

func (*Client) CreateWebProfile

func (c *Client) CreateWebProfile(ctx context.Context, 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) CreateWebhook added in v1.1.4

func (c *Client) CreateWebhook(ctx context.Context, createWebhookRequest *CreateWebhookRequest) (*Webhook, error)

CreateWebhook - Subscribes your webhook listener to events. Endpoint: POST /v1/notifications/webhooks

func (*Client) DeactivateSubscriptionPlans added in v1.1.4

func (c *Client) DeactivateSubscriptionPlans(ctx context.Context, planId string) error

Deactivates a plan Doc: https://developer.paypal.com/docs/api/subscriptions/v1/#plans_deactivate Endpoint: POST /v1/billing/plans/{id}/deactivate

func (*Client) DeleteCreditCard

func (c *Client) DeleteCreditCard(ctx context.Context, id string) error

DeleteCreditCard func Endpoint: DELETE /v1/vault/credit-cards/credit_card_id

func (*Client) DeleteWebProfile

func (c *Client) DeleteWebProfile(ctx context.Context, profileID string) error

DeleteWebProfile deletes a web experience profile from Paypal with given id

Endpoint: DELETE /v1/payment-experience/web-profiles

func (*Client) DeleteWebhook added in v1.1.4

func (c *Client) DeleteWebhook(ctx context.Context, webhookID string) error

DeleteWebhook - Deletes a webhook, by ID. Endpoint: DELETE /v1/notifications/webhooks/ID

func (*Client) ExecuteApprovedAgreement

func (c *Client) ExecuteApprovedAgreement(ctx context.Context, 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) GenerateInvoiceNumber added in v1.1.4

func (c *Client) GenerateInvoiceNumber(ctx context.Context) (*InvoiceNumber, error)

GenerateInvoiceNumber: generates the next invoice number that is available to the merchant. Endpoint: POST /v2/invoicing/generate-next-invoice-number

func (*Client) GetAccessToken

func (c *Client) GetAccessToken(ctx context.Context) (*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(ctx context.Context, authID string) (*Authorization, error)

GetAuthorization returns an authorization by ID Endpoint: GET /v2/payments/authorizations/ID

func (*Client) GetBillingAgreement added in v1.1.2

func (c *Client) GetBillingAgreement(ctx context.Context, aid string) (*BillingAgreement, error)

GetBillingAgreement show agreement details Endpoint: GET /v1/payments/billing-agreements/{agreement_id}

func (*Client) GetCapturedPaymentDetails added in v1.1.4

func (c *Client) GetCapturedPaymentDetails(ctx context.Context, id string) (*Capture, error)

GetCapturedPaymentDetails. Endpoint: GET /v1/payments/capture/:id

func (*Client) GetCreditCard

func (c *Client) GetCreditCard(ctx context.Context, id string) (*CreditCard, error)

GetCreditCard func Endpoint: GET /v1/vault/credit-cards/credit_card_id

func (*Client) GetCreditCards

func (c *Client) GetCreditCards(ctx context.Context, ccf *CreditCardsFilter) (*CreditCards, error)

GetCreditCards func Endpoint: GET /v1/vault/credit-cards

func (*Client) GetInvoiceDetails added in v1.1.4

func (c *Client) GetInvoiceDetails(ctx context.Context, invoiceID string) (*Invoice, error)

GetInvoiceDetails: show invoice details for a particular invoice by ID. Endpoint: GET /v2/invoicing/invoices/{invoice_id}

func (*Client) GetOrder

func (c *Client) GetOrder(ctx context.Context, orderID string) (*Order, error)

GetOrder retrieves order by ID Endpoint: GET /v2/checkout/orders/ID

func (*Client) GetPayout

func (c *Client) GetPayout(ctx context.Context, payoutBatchID string) (*PayoutResponse, error)

GetPayout shows the latest status of a batch payout along with the transaction status and other data for individual items. Also, returns IDs for the individual payout items. You can use these item IDs in other calls. Endpoint: GET /v1/payments/payouts/ID

func (*Client) GetPayoutItem

func (c *Client) GetPayoutItem(ctx context.Context, payoutItemID string) (*PayoutItemResponse, error)

GetPayoutItem shows the details for a payout item. Use this call to review the current status of a previously unclaimed, or pending, payout item. Endpoint: GET /v1/payments/payouts-item/ID

func (*Client) GetProduct added in v1.1.4

func (c *Client) GetProduct(ctx context.Context, productId string) (*Product, error)

Get product details Doc: https://developer.paypal.com/docs/api/catalog-products/v1/#products_get Endpoint: GET /v1/catalogs/products/:product_id

func (*Client) GetRefund

func (c *Client) GetRefund(ctx context.Context, refundID string) (*Refund, error)

GetRefund by ID Use it to look up details of a specific refund on direct and captured payments. Endpoint: GET /v2/payments/refund/ID

func (*Client) GetSale

func (c *Client) GetSale(ctx context.Context, saleID string) (*Sale, error)

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) GetSubscriptionDetails added in v1.1.4

func (c *Client) GetSubscriptionDetails(ctx context.Context, subscriptionID string) (*SubscriptionDetailResp, error)

GetSubscriptionDetails shows details for a subscription, by ID. Endpoint: GET /v1/billing/subscriptions/

func (*Client) GetSubscriptionPlan added in v1.1.4

func (c *Client) GetSubscriptionPlan(ctx context.Context, planId string) (*SubscriptionPlan, error)

UpdateSubscriptionPlan. updates a plan Doc: https://developer.paypal.com/docs/api/subscriptions/v1/#plans_get Endpoint: GET /v1/billing/plans/:plan_id

func (*Client) GetSubscriptionTransactions added in v1.1.4

func (c *Client) GetSubscriptionTransactions(ctx context.Context, requestParams SubscriptionTransactionsParams) (*SubscriptionTransactionsResponse, error)

Lists transactions for a subscription. Doc: https://developer.paypal.com/docs/api/subscriptions/v1/#subscriptions_transactions Endpoint: GET /v1/billing/subscriptions/{id}/transactions

func (*Client) GetUserInfo

func (c *Client) GetUserInfo(ctx context.Context, schema string) (*UserInfo, error)

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(ctx context.Context, 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(ctx context.Context) ([]WebProfile, error)

GetWebProfiles retrieves web experience profiles from Paypal

Endpoint: GET /v1/payment-experience/web-profiles

func (*Client) GetWebhook added in v1.1.4

func (c *Client) GetWebhook(ctx context.Context, webhookID string) (*Webhook, error)

GetWebhook - Shows details for a webhook, by ID. Endpoint: GET /v1/notifications/webhooks/ID

func (*Client) GetWebhookEventTypes added in v1.1.4

func (c *Client) GetWebhookEventTypes(ctx context.Context) (*WebhookEventTypesResponse, error)

GetWebhookEventTypes - Lists all webhook event types. Endpoint: GET /v1/notifications/webhooks-event-types

func (*Client) GrantNewAccessTokenFromAuthCode

func (c *Client) GrantNewAccessTokenFromAuthCode(ctx context.Context, code, 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(ctx context.Context, 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) ListBillingPlans added in v1.1.4

func (c *Client) ListBillingPlans(ctx context.Context, bplp BillingPlanListParams) (*BillingPlanListResponse, error)

ListBillingPlans lists billing-plans Endpoint: GET /v1/payments/billing-plans

func (*Client) ListBillingTransactions added in v1.1.4

func (c *Client) ListBillingTransactions(ctx context.Context, aid string, params AgreementTransactionListParams) (*AgreementTransactionListResponse, error)

Endpoint: GET /v1/payments/billing-agreements/{agreement_id}/transactions

func (*Client) ListProducts added in v1.1.4

func (c *Client) ListProducts(ctx context.Context, params *ProductListParameters) (*ListProductsResponse, error)

List all products Doc: https://developer.paypal.com/docs/api/catalog-products/v1/#products_list Endpoint: GET /v1/catalogs/products

func (*Client) ListSubscriptionPlans added in v1.1.4

func (c *Client) ListSubscriptionPlans(ctx context.Context, params *SubscriptionPlanListParameters) (*ListSubscriptionPlansResponse, error)

List all plans Doc: https://developer.paypal.com/docs/api/subscriptions/v1/#plans_list Endpoint: GET /v1/billing/plans

func (*Client) ListTransactions added in v1.1.4

ListTransactions - Use this to search PayPal transactions from the last 31 days. Endpoint: GET /v1/reporting/transactions

func (*Client) ListWebhooks added in v1.1.4

func (c *Client) ListWebhooks(ctx context.Context, anchorType string) (*ListWebhookResponse, error)

ListWebhooks - Lists webhooks for an app. Endpoint: GET /v1/notifications/webhooks

func (*Client) NewRequest

func (c *Client) NewRequest(ctx context.Context, method, url string, payload interface{}) (*http.Request, error)

NewRequest constructs a request Convert payload to a JSON

func (*Client) PatchCreditCard

func (c *Client) PatchCreditCard(ctx context.Context, id string, ccf []CreditCardField) (*CreditCard, error)

PatchCreditCard func Endpoint: PATCH /v1/vault/credit-cards/credit_card_id

func (*Client) ReauthorizeAuthorization

func (c *Client) ReauthorizeAuthorization(ctx context.Context, authID string, a *Amount) (*Authorization, error)

ReauthorizeAuthorization reauthorize a Paypal account payment. PayPal recommends reauthorizing payment after ~3 days Endpoint: POST /v2/payments/authorizations/ID/reauthorize

func (*Client) RefundCapture added in v1.1.4

func (c *Client) RefundCapture(ctx context.Context, captureID string, refundCaptureRequest RefundCaptureRequest) (*RefundResponse, error)

RefundCapture - https://developer.paypal.com/docs/api/payments/v2/#captures_refund Endpoint: POST /v2/payments/captures/ID/refund

func (*Client) RefundCaptureWithPaypalRequestId added in v1.1.4

func (c *Client) RefundCaptureWithPaypalRequestId(ctx context.Context,
	captureID string,
	refundCaptureRequest RefundCaptureRequest,
	requestID string,
) (*RefundResponse, error)

RefundCapture with idempotency - https://developer.paypal.com/docs/api/payments/v2/#captures_refund Endpoint: POST /v2/payments/captures/ID/refund

func (*Client) RefundSale

func (c *Client) RefundSale(ctx context.Context, saleID string, a *Amount) (*Refund, error)

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) ReviseSubscription added in v1.1.4

func (c *Client) ReviseSubscription(ctx context.Context, subscriptionId string, reviseSubscription SubscriptionBase) (*SubscriptionDetailResp, error)

Revise plan or quantity of subscription Doc: https://developer.paypal.com/docs/api/subscriptions/v1/#subscriptions_revise Endpoint: POST /v1/billing/subscriptions/{id}/revise

func (*Client) Send

func (c *Client) Send(req *http.Request, v interface{}) error

Send makes a request to the API, the response body will be unmarshalled into v, or if v is an io.Writer, the response will be written to it without decoding

func (*Client) SendWithAuth

func (c *Client) SendWithAuth(req *http.Request, v interface{}) error

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) SendWithBasicAuth

func (c *Client) SendWithBasicAuth(req *http.Request, v interface{}) error

SendWithBasicAuth makes a request to the API using clientID:secret basic auth

func (*Client) SetAccessToken

func (c *Client) SetAccessToken(token string)

SetAccessToken sets saved token to current client

func (*Client) SetHTTPClient

func (c *Client) SetHTTPClient(client *http.Client)

SetHTTPClient sets *http.Client to current client

func (*Client) SetLog

func (c *Client) SetLog(log io.Writer)

SetLog will set/change the output destination. If log file is set paypal will log all requests and responses to this Writer

func (*Client) SetReturnRepresentation added in v1.1.4

func (c *Client) SetReturnRepresentation()

SetReturnRepresentation enables verbose response Verbose response: https://developer.paypal.com/docs/api/orders/v2/#orders-authorize-header-parameters

func (*Client) SetWebProfile

func (c *Client) SetWebProfile(ctx context.Context, 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(ctx context.Context, cc CreditCard) (*CreditCard, error)

StoreCreditCard func Endpoint: POST /v1/vault/credit-cards

func (*Client) SuspendSubscription added in v1.1.4

func (c *Client) SuspendSubscription(ctx context.Context, subscriptionId, reason string) error

Suspends the subscription. Doc: https://developer.paypal.com/docs/api/subscriptions/v1/#subscriptions_suspend Endpoint: POST /v1/billing/subscriptions/{id}/suspend

func (*Client) UpdateBillingAgreement added in v1.1.2

func (c *Client) UpdateBillingAgreement(ctx context.Context, aid string, ops []PatchField) error

UpdateBillingAgreement update agreement Endpoint: PATCH /v1/payments/billing-agreements/{agreement_id}

func (*Client) UpdateBillingPlan added in v1.1.4

func (c *Client) UpdateBillingPlan(ctx context.Context, planId string, pathValues map[string]map[string]interface{}) error

UpdateBillingPlan updates values inside a billing plan Endpoint: PATCH /v1/payments/billing-plans

func (*Client) UpdateOrder added in v1.1.4

func (c *Client) UpdateOrder(ctx context.Context, orderID string, op string, path string, value map[string]string) error

UpdateOrder updates the order by ID Endpoint: PATCH /v2/checkout/orders/ID

func (*Client) UpdateProduct added in v1.1.4

func (c *Client) UpdateProduct(ctx context.Context, product Product) error

UpdateProduct. updates a product information Doc: https://developer.paypal.com/docs/api/catalog-products/v1/#products_patch Endpoint: PATCH /v1/catalogs/products/:product_id

func (*Client) UpdateSubscription added in v1.1.4

func (c *Client) UpdateSubscription(ctx context.Context, updatedSubscription Subscription) error

UpdateSubscriptionPlan. updates a plan Doc: https://developer.paypal.com/docs/api/subscriptions/v1/#subscriptions_patch Endpoint: PATCH /v1/billing/subscriptions/:subscription_id

func (*Client) UpdateSubscriptionPlan added in v1.1.4

func (c *Client) UpdateSubscriptionPlan(ctx context.Context, updatedPlan SubscriptionPlan) error

UpdateSubscriptionPlan. updates a plan Doc: https://developer.paypal.com/docs/api/subscriptions/v1/#plans_patch Endpoint: PATCH /v1/billing/plans/:plan_id

func (*Client) UpdateSubscriptionPlanPricing added in v1.1.4

func (c *Client) UpdateSubscriptionPlanPricing(ctx context.Context, planId string, pricingSchemes []PricingSchemeUpdate) error

Updates pricing for a plan. For example, you can update a regular billing cycle from $5 per month to $7 per month. Doc: https://developer.paypal.com/docs/api/subscriptions/v1/#plans_update-pricing-schemes Endpoint: POST /v1/billing/plans/{id}/update-pricing-schemes

func (*Client) UpdateWebhook added in v1.1.4

func (c *Client) UpdateWebhook(ctx context.Context, webhookID string, fields []WebhookField) (*Webhook, error)

UpdateWebhook - Updates a webhook to replace webhook fields with new values. Endpoint: PATCH /v1/notifications/webhooks/ID

func (*Client) VerifyWebhookSignature added in v1.1.2

func (c *Client) VerifyWebhookSignature(ctx context.Context, httpReq *http.Request, webhookID string) (*VerifyWebhookResponse, error)

VerifyWebhookSignature - Use this to verify the signature of a webhook recieved from paypal. Endpoint: POST /v1/notifications/verify-webhook-signature

func (*Client) VoidAuthorization

func (c *Client) VoidAuthorization(ctx context.Context, authID string) (*Authorization, error)

VoidAuthorization voids a previously authorized payment Endpoint: POST /v2/payments/authorizations/ID/void

func (*Client) WriteLog added in v1.1.2

func (c *Client) WriteLog(format string, a ...interface{})
type Consent struct {
	Type    string `json:"type"`
	Granted bool   `json:"granted"`
}

type CreateAgreementResp deprecated

type CreateAgreementResp = CreateAgreementResponse

CreateAgreementResp.

Deprecated: use CreateAgreementResponse instead.

type CreateAgreementResponse added in v1.1.4

type CreateAgreementResponse struct {
	Name        string      `json:"name,omitempty"`
	State       string      `json:"state"`
	Description string      `json:"description,omitempty"`
	Plan        BillingPlan `json:"plan,omitempty"`
	Links       []Link      `json:"links,omitempty"`
	StartDate   string      `json:"start_date,omitempty"`
}

CreateAgreementResponse struct

func (CreateAgreementResponse) GetExecuteToken added in v1.1.4

func (r CreateAgreementResponse) GetExecuteToken() (string, error)

type CreateBillingResp deprecated

type CreateBillingResp = CreateBillingResponse

CreateBillingResp.

Deprecated: use CreateBillingResponse instead.

type CreateBillingResponse added in v1.1.4

type CreateBillingResponse 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"`
}

CreateBillingResponse struct

type CreateOrderPayer added in v1.1.4

type CreateOrderPayer struct {
	Name         *CreateOrderPayerName          `json:"name,omitempty"`
	EmailAddress string                         `json:"email_address,omitempty"`
	PayerID      string                         `json:"payer_id,omitempty"`
	Phone        *PhoneWithType                 `json:"phone,omitempty"`
	BirthDate    string                         `json:"birth_date,omitempty"`
	TaxInfo      *TaxInfo                       `json:"tax_info,omitempty"`
	Address      *ShippingDetailAddressPortable `json:"address,omitempty"`
}

CreateOrderPayer used with create order requests

type CreateOrderPayerName added in v1.1.4

type CreateOrderPayerName struct {
	GivenName string `json:"given_name,omitempty"`
	Surname   string `json:"surname,omitempty"`
}

CreateOrderPayerName create order payer name

type CreateProductResponse added in v1.1.4

type CreateProductResponse struct {
	Product
	SharedResponse
}

type CreateSubscriptionPlanResponse added in v1.1.4

type CreateSubscriptionPlanResponse struct {
	SubscriptionPlan
	SharedResponse
}

type CreateWebhookRequest added in v1.1.4

type CreateWebhookRequest struct {
	URL        string             `json:"url"`
	EventTypes []WebhookEventType `json:"event_types"`
}

CreateWebhookRequest struct

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"`
	SharedListResponse
}

CreditCards GET /v1/vault/credit-cards

type CreditCardsFilter

type CreditCardsFilter struct {
	PageSize int
	Page     int
}

CreditCardsFilter struct

type Currency

type Currency struct {
	Currency string `json:"currency,omitempty"`
	Value    string `json:"value,omitempty"`
}

Currency struct

type CustomAmount added in v1.1.4

type CustomAmount struct {
	Label  string `json:"label"`
	Amount Money  `json:"amount,omitempty"`
}

used in InvoiceAmountWithBreakdown Doc: https://developer.paypal.com/docs/api/invoicing/v2/#definition-custom_amount

type CycleExecutions added in v1.1.4

type CycleExecutions struct {
	TenureType      string `json:"tenure_type,omitempty"`
	Sequence        int    `json:"sequence,omitempty"`
	CyclesCompleted int    `json:"cycles_completed,omitempty"`
	CyclesRemaining int    `json:"cycles_remaining,omitempty"`
	TotalCycles     int    `json:"total_cycles,omitempty"`
}

CycleExecutions 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         []ErrorResponseDetail `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 ErrorResponseDetail

type ErrorResponseDetail struct {
	Field       string `json:"field"`
	Issue       string `json:"issue"`
	Name        string `json:"name"`
	Message     string `json:"message"`
	Description string `json:"description"`
	Links       []Link `json:"link"`
}

ErrorResponseDetail struct

type Event added in v1.1.4

type Event struct {
	ID              string    `json:"id"`
	CreateTime      time.Time `json:"create_time"`
	ResourceType    string    `json:"resource_type"`
	EventType       string    `json:"event_type"`
	Summary         string    `json:"summary,omitempty"`
	Links           []Link    `json:"links"`
	EventVersion    string    `json:"event_version,omitempty"`
	ResourceVersion string    `json:"resource_version,omitempty"`
}

Event struct.

The basic webhook event data type. This struct is intended to be embedded into resource type specific event structs.

type ExchangeRate added in v1.1.4

type ExchangeRate struct {
	SourceCurrency string `json:"source_currency"`
	TargetCurrency string `json:"target_currency"`
	Value          string `json:"value"`
}

ExchangeRate struct

https://developer.paypal.com/docs/api/orders/v2/#definition-exchange_rate

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"`
	Payer        PaymentPayer  `json:"payer"`
	Transactions []Transaction `json:"transactions,omitempty"`
}

ExecuteResponse struct

type Filter added in v1.1.4

type Filter struct {
	// contains filtered or unexported fields
}

Filter type

func (*Filter) AddTextField added in v1.1.4

func (s *Filter) AddTextField(field string) *TextField

AddTextField .

func (*Filter) AddTimeField added in v1.1.4

func (s *Filter) AddTimeField(field string) *TimeField

AddTimeField .

func (*Filter) String added in v1.1.4

func (s *Filter) String() string

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 Frequency added in v1.1.4

type Frequency struct {
	IntervalUnit  IntervalUnit `json:"interval_unit"`
	IntervalCount int          `json:"interval_count"` //different per unit. check documentation
}

doc: https://developer.paypal.com/docs/api/subscriptions/v1/#definition-frequency

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 IntegrationDetails added in v1.1.4

type IntegrationDetails struct {
	RestAPIIntegration *RestAPIIntegration `json:"rest_api_integration,omitempty"`
}

type IntervalUnit added in v1.1.4

type IntervalUnit string
const (
	IntervalUnitDay   IntervalUnit = "DAY"
	IntervalUnitWeek  IntervalUnit = "WEEK"
	IntervalUnitMonth IntervalUnit = "MONTH"
	IntervalUnitYear  IntervalUnit = "YEAR"
)

type Invoice added in v1.1.4

type Invoice struct {
	AdditionalRecipients []InvoiceEmailAddress  `json:"additional_recipients,omitempty"` // An array of one or more CC: emails to which notifications are sent.
	AmountSummary        AmountSummaryDetail    `json:"amount,omitempty"`
	Configuration        InvoiceConfiguration   `json:"configuration,omitempty"`
	Detail               InvoiceDetail          `json:"detail,omitempty"`
	DueAmount            Money                  `json:"due_amount,omitempty"` // balance amount outstanding after payments.
	Gratuity             Money                  `json:"gratuity,omitempty"`   // amount paid by the payer as gratuity to the invoicer.
	ID                   string                 `json:"id,omitempty"`
	Invoicer             InvoicerInfo           `json:"invoicer,omitempty"`
	Items                []InvoiceItem          `json:"items,omitempty"`
	Links                []Link                 `json:"links,omitempty"`
	ParentID             string                 `json:"parent_id,omitempty"`
	Payments             InvoicePayments        `json:"payments,omitempty"`
	PrimaryRecipients    []InvoiceRecipientInfo `json:"primary_recipients,omitempty"`
	Refunds              InvoiceRefund          `json:"refunds,omitempty"` // List of refunds against this invoice.
	Status               string                 `json:"status,omitempty"`
}

to contain Invoice related fields Doc: https://developer.paypal.com/docs/api/invoicing/v2/#invoices_get

type InvoiceAddressDetails added in v1.1.4

type InvoiceAddressDetails struct {
	BuildingName    string `json:"building_name,omitempty"`
	DeliveryService string `json:"delivery_service,omitempty"`
	StreetName      string `json:"street_name,omitempty"`
	StreetNumber    string `json:"street_number,omitempty"`
	StreetType      string `json:"street_type,omitempty"`
	SubBuilding     string `json:"sub_building,omitempty"`
}

used in InvoiceAddressPortable Doc: https://developer.paypal.com/docs/api/invoicing/v2/#definition-address_details

type InvoiceAddressPortable added in v1.1.4

type InvoiceAddressPortable struct {
	CountryCode    string                `json:"country_code"`
	AddressDetails InvoiceAddressDetails `json:"address_details,omitempty"`
	AddressLine1   string                `json:"address_line_1,omitempty"`
	AddressLine2   string                `json:"address_line_2,omitempty"`
	AddressLine3   string                `json:"address_line_3,omitempty"`
	AdminArea1     string                `json:"admin_area_1,omitempty"`
	AdminArea2     string                `json:"admin_area_2,omitempty"`
	AdminArea3     string                `json:"admin_area_3,omitempty"`
	AdminArea4     string                `json:"admin_area_4,omitempty"`
	PostalCode     string                `json:"postal_code,omitempty"`
}

used in InvoiceContactInfo Doc: https://developer.paypal.com/docs/api/invoicing/v2/#definition-address_portable

type InvoiceAmountWithBreakdown added in v1.1.4

type InvoiceAmountWithBreakdown struct {
	Custom    CustomAmount        `json:"custom,omitempty"` // The custom amount to apply to an invoice.
	Discount  AggregatedDiscount  `json:"discount,omitempty"`
	ItemTotal Money               `json:"item_total,omitempty"` // The subtotal for all items.
	Shipping  InvoiceShippingCost `json:"shipping,omitempty"`   // The shipping fee for all items. Includes tax on shipping.
	TaxTotal  Money               `json:"tax_total,omitempty"`
}

Used in AmountSummaryDetail Doc: https://developer.paypal.com/docs/api/payments/v2/#definition-nrp-nrr_attributes

type InvoiceAuditMetadata added in v1.1.4

type InvoiceAuditMetadata struct {
	CreateTime       string `json:"create_time,omitempty"`
	CreatedBy        string `json:"created_by,omitempty"`
	LastUpdateTime   string `json:"last_update_time,omitempty"`
	LastUpdatedBy    string `json:"last_updated_by,omitempty"`
	CancelTime       string `json:"cancel_time,omitempty"`
	CancellledTimeBy string `json:"cancelled_by,omitempty"`
	CreatedByFlow    string `json:"created_by_flow,omitempty"`
	FirstSentTime    string `json:"first_sent_time,omitempty"`
	InvoicerViewUrl  string `json:"invoicer_view_url,omitempty"`
	LastSentBy       string `json:"last_sent_by,omitempty"`
	LastSentTime     string `json:"last_sent_time,omitempty"`
	RecipientViewUrl string `json:"recipient_view_url,omitempty"`
}

Doc: https://developer.paypal.com/docs/api/invoicing/v2/#definition-metadata

type InvoiceBillingInfo added in v1.1.4

type InvoiceBillingInfo struct {
	AdditionalInfo string                `json:"additional_info,omitempty"`
	EmailAddress   string                `json:"email_address,omitempty"`
	Language       string                `json:"language,omitempty"`
	Phones         []InvoicerPhoneDetail `json:"phones,omitempty"` // invoice recipient's phone numbers.
}

used in InvoiceRecipientInfo Doc: https://developer.paypal.com/docs/api/invoicing/v2/#definition-billing_info

type InvoiceConfiguration added in v1.1.4

type InvoiceConfiguration struct {
	AllowTip                   bool                  `json:"allow_tip,omitempty"`
	PartialPayment             InvoicePartialPayment `json:"partial_payment,omitempty"`
	TaxCalculatedAfterDiscount bool                  `json:"tax_calculated_after_discount,omitempty"`
	TaxInclusive               bool                  `json:"tax_inclusive,omitempty"`
	TemplateId                 string                `json:"template_id,omitempty"`
}

Doc: https://developer.paypal.com/docs/api/invoicing/v2/#definition-configuration

type InvoiceContactInfo added in v1.1.4

type InvoiceContactInfo struct {
	BusinessName     string                 `json:"business_name,omitempty"`
	RecipientAddress InvoiceAddressPortable `json:"address,omitempty"` // address of the recipient.
	RecipientName    Name                   `json:"name,omitempty"`    // The first and Last name of the recipient.
}

used in InvoicePaymentDetails Doc: https://developer.paypal.com/docs/api/invoicing/v2/#definition-contact_information

type InvoiceDetail added in v1.1.4

type InvoiceDetail struct {
	CurrencyCode       string                 `json:"currency_code"` // required, hence omitempty not used
	Attachments        []InvoiceFileReference `json:"attachments,omitempty"`
	Memo               string                 `json:"memo,omitempty"`
	Note               string                 `json:"note,omitempty"`
	Reference          string                 `json:"reference,omitempty"`
	TermsAndConditions string                 `json:"terms_and_conditions,omitempty"`
	InvoiceDate        string                 `json:"invoice_date,omitempty"`
	InvoiceNumber      string                 `json:"invoice_number,omitempty"`
	Metadata           InvoiceAuditMetadata   `json:"metadata,omitempty"`     // The audit metadata.
	PaymentTerm        InvoicePaymentTerm     `json:"payment_term,omitempty"` // payment due date for the invoice. Value is either but not both term_type or due_date.
}

used in Invoice struct Doc: https://developer.paypal.com/docs/api/invoicing/v2/#definition-invoice_detail

type InvoiceEmailAddress added in v1.1.4

type InvoiceEmailAddress struct {
	EmailAddress string `json:"email_address,omitempty"`
}

used in Invoice struct Doc: https://developer.paypal.com/docs/api/invoicing/v2/#definition-email_address

type InvoiceFileReference added in v1.1.4

type InvoiceFileReference struct {
	ContentType string `json:"content_type,omitempty"`
	CreateTime  string `json:"create_time,omitempty"`
	ID          string `json:"id,omitempty"`
	URL         string `json:"reference_url,omitempty"`
	Size        string `json:"size,omitempty"`
}

used in InvoiceDetail structure Doc: https://developer.paypal.com/docs/api/invoicing/v2/#definition-file_reference

type InvoiceItem added in v1.1.4

type InvoiceItem struct {
	Name            string            `json:"name"`
	Quantity        string            `json:"quantity"`
	UnitAmount      Money             `json:"unit_amount"`
	Description     string            `json:"description,omitempty"`
	InvoiceDiscount InvoicingDiscount `json:"discount,omitempty"`
	ID              string            `json:"id,omitempty"`
	ItemDate        string            `json:"item_date,omitempty"`
	Tax             InvoiceTax        `json:"tax,omitempty"`
	UnitOfMeasure   string            `json:"unit_of_measure,omitempty"`
}

Used in Invoice struct Doc: https://developer.paypal.com/docs/api/invoicing/v2/#definition-item

type InvoiceNumber added in v1.1.4

type InvoiceNumber struct {
	InvoiceNumberValue string `json:"invoice_number"`
}

Invoicing relates structures Doc: https://developer.paypal.com/docs/api/invoicing/v2/#invoices_generate-next-invoice-number

type InvoicePartialPayment added in v1.1.4

type InvoicePartialPayment struct {
	AllowPartialPayment bool  `json:"allow_partial_payment,omitempty"`
	MinimumAmountDue    Money `json:"minimum_amount_due,omitempty"` // Valid only when allow_partial_payment is true.
}

Doc: https://developer.paypal.com/docs/api/invoicing/v2/#definition-partial_payment

type InvoicePaymentDetails added in v1.1.4

type InvoicePaymentDetails struct {
	Method       string             `json:"method"`
	Amount       Money              `json:"amount,omitempty"`
	Note         string             `json:"note,omitempty"`
	PaymentDate  string             `json:"payment_date,omitempty"`
	PaymentID    string             `json:"payment_id,omitempty"`
	ShippingInfo InvoiceContactInfo `json:"shipping_info,omitempty"` // The recipient's shipping information.
	Type         string             `json:"type,omitempty"`
}

used in InvoicePayments struct Doc: https://developer.paypal.com/docs/api/invoicing/v2/#definition-payment_detail

type InvoicePaymentTerm added in v1.1.4

type InvoicePaymentTerm struct {
	TermType string `json:"term_type,omitempty"`
	DueDate  string `json:"due_date,omitempty"`
}

used in InvoiceDetail struct Doc: https://developer.paypal.com/docs/api/invoicing/v2/#definition-invoice_payment_term

type InvoicePayments added in v1.1.4

type InvoicePayments struct {
	PaidAmount   Money                   `json:"paid_amount,omitempty"`
	Transactions []InvoicePaymentDetails `json:"transactions,omitempty"`
}

used in Invoice Doc: https://developer.paypal.com/docs/api/invoicing/v2/#definition-payments

type InvoiceRecipientInfo added in v1.1.4

type InvoiceRecipientInfo struct {
	BillingInfo  InvoiceBillingInfo `json:"billing_info,omitempty"`  // billing information for the invoice recipient.
	ShippingInfo InvoiceContactInfo `json:"shipping_info,omitempty"` // recipient's shipping information.
}

used in Invoice struct Doc:

type InvoiceRefund added in v1.1.4

type InvoiceRefund struct {
	RefundAmount  Money                  `json:"refund_amount,omitempty"`
	RefundDetails []InvoiceRefundDetails `json:"transactions,omitempty"`
}

used in Invoice struct Doc: https://developer.paypal.com/docs/api/invoicing/v2/#definition-refunds

type InvoiceRefundDetails added in v1.1.4

type InvoiceRefundDetails struct {
	Method       string `json:"method"`
	RefundAmount Money  `json:"amount,omitempty"`
	RefundDate   string `json:"refund_date,omitempty"`
	RefundID     string `json:"refund_id,omitempty"`
	RefundType   string `json:"type,omitempty"`
}

used in InvoiceRefund struct Doc: https://developer.paypal.com/docs/api/invoicing/v2/#definition-refund_detail

type InvoiceShippingCost added in v1.1.4

type InvoiceShippingCost struct {
	Amount Money      `json:"amount,omitempty"`
	Tax    InvoiceTax `json:"tax,omitempty"`
}

Used in InvoiceAmountWithBreakdown struct Doc: https://developer.paypal.com/docs/api/invoicing/v2/#definition-shipping_cost

type InvoiceTax added in v1.1.4

type InvoiceTax struct {
	Name    string `json:"name,omitempty"`
	Percent string `json:"percent,omitempty"`
	ID      string `json:"id,omitempty"` //  not mentioned here, but is still returned in response payload, when invoice is requested by ID.
	Amount  Money  `json:"amount,omitempty"`
}

Doc: https://developer.paypal.com/docs/api/invoicing/v2/#definition-tax

type InvoicerInfo added in v1.1.4

type InvoicerInfo struct {
	AdditionalNotes string                `json:"additional_notes,omitempty"`
	EmailAddress    string                `json:"email_address,omitempty"`
	LogoUrl         string                `json:"logo_url,omitempty"`
	Phones          []InvoicerPhoneDetail `json:"phones,omitempty"`
	TaxId           string                `json:"tax_id,omitempty"`
	Website         string                `json:"website,omitempty"`
}

used in Invoice struct Doc: https://developer.paypal.com/docs/api/invoicing/v2/#definition-invoicer_info

type InvoicerPhoneDetail added in v1.1.4

type InvoicerPhoneDetail struct {
	CountryCode     string `json:"country_code"`
	NationalNumber  string `json:"national_number"`
	ExtensionNumber string `json:"extension_number,omitempty"`
	PhoneType       string `json:"phone_type,omitempty"`
}

used in InvoicerInfo struct Doc: https://developer.paypal.com/docs/api/invoicing/v2/#definition-phone_detail

type InvoicingDiscount added in v1.1.4

type InvoicingDiscount struct {
	DiscountAmount Money  `json:"amount,omitempty"`
	Percent        string `json:"percent,omitempty"`
}

Used in AggregatedDiscount Doc: https://developer.paypal.com/docs/api/invoicing/v2/#definition-discount

type Item

type Item struct {
	Name        string `json:"name"`
	UnitAmount  *Money `json:"unit_amount,omitempty"`
	Tax         *Money `json:"tax,omitempty"`
	Quantity    string `json:"quantity"`
	Description string `json:"description,omitempty"`
	SKU         string `json:"sku,omitempty"`
	Category    string `json:"category,omitempty"`
}

Item struct

type ItemList

type ItemList struct {
	Items           []Item           `json:"items,omitempty"`
	ShippingAddress *ShippingAddress `json:"shipping_address,omitempty"`
}

ItemList struct

type JSONTime

type JSONTime time.Time

JSONTime overrides MarshalJson method to format in ISO8601

func (JSONTime) MarshalJSON

func (t JSONTime) MarshalJSON() ([]byte, error)

MarshalJSON for JSONTime

func (*JSONTime) UnmarshalJSON added in v1.1.2

func (t *JSONTime) UnmarshalJSON(b []byte) error

UnmarshalJSON for JSONTime, timezone offset is missing a colon ':"

type LastPayment added in v1.1.4

type LastPayment struct {
	Amount Money     `json:"amount,omitempty"`
	Time   time.Time `json:"time,omitempty"`
}

LastPayment struct

type Link struct {
	Href        string `json:"href"`
	Rel         string `json:"rel,omitempty"`
	Method      string `json:"method,omitempty"`
	Description string `json:"description,omitempty"`
	Enctype     string `json:"enctype,omitempty"`
}

Link struct

type ListParams added in v1.1.4

type ListParams struct {
	Page          string `json:"page,omitempty"`           //Default: 0.
	PageSize      string `json:"page_size,omitempty"`      //Default: 10.
	TotalRequired string `json:"total_required,omitempty"` //Default: no.
}

type ListProductsResponse added in v1.1.4

type ListProductsResponse struct {
	Products []Product `json:"products"`
	SharedListResponse
}

type ListSubscriptionPlansResponse added in v1.1.4

type ListSubscriptionPlansResponse struct {
	Plans []SubscriptionPlan `json:"plans"`
	SharedListResponse
}

type ListWebhookResponse added in v1.1.4

type ListWebhookResponse struct {
	Webhooks []Webhook `json:"webhooks"`
}

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 Money added in v1.1.4

type Money struct {
	Currency string `json:"currency_code"`
	Value    string `json:"value"`
}

Money struct

https://developer.paypal.com/docs/api/orders/v2/#definition-money

type Name added in v1.1.4

type Name struct {
	FullName   string `json:"full_name,omitempty"`
	Suffix     string `json:"suffix,omitempty"`
	Prefix     string `json:"prefix,omitempty"`
	GivenName  string `json:"given_name,omitempty"`
	Surname    string `json:"surname,omitempty"`
	MiddleName string `json:"middle_name,omitempty"`
}

Name struct Doc: https://developer.paypal.com/docs/api/subscriptions/v1/#definition-name

type Operation added in v1.1.4

type Operation struct {
	Operation                string              `json:"operation"`
	APIIntegrationPreference *IntegrationDetails `json:"api_integration_preference,omitempty"`
}

type Order

type Order struct {
	ID            string                 `json:"id,omitempty"`
	Status        string                 `json:"status,omitempty"`
	Intent        string                 `json:"intent,omitempty"`
	Payer         *PayerWithNameAndPhone `json:"payer,omitempty"`
	PurchaseUnits []PurchaseUnit         `json:"purchase_units,omitempty"`
	Links         []Link                 `json:"links,omitempty"`
	CreateTime    *time.Time             `json:"create_time,omitempty"`
	UpdateTime    *time.Time             `json:"update_time,omitempty"`
}

Order struct

type PartnerConfigOverride added in v1.1.4

type PartnerConfigOverride struct {
	PartnerLogoURL       string `json:"partner_logo_url,omitempty"`
	ReturnURL            string `json:"return_url,omitempty"`
	ReturnURLDescription string `json:"return_url_description,omitempty"`
	ActionRenewalURL     string `json:"action_renewal_url,omitempty"`
	ShowAddCreditCard    *bool  `json:"show_add_credit_card,omitempty"`
}

type Patch added in v1.1.4

type Patch struct {
	Operation string      `json:"op"`
	Path      string      `json:"path"`
	Value     interface{} `json:"value"`
}

type PatchField added in v1.1.2

type PatchField struct {
	Operation string      `json:"op"`
	Path      string      `json:"path"`
	Value     interface{} `json:"value"`
}

type Payee added in v1.0.2

type Payee struct {
	Email string `json:"email"`
}

Payee struct

type PayeeForOrders added in v1.1.4

type PayeeForOrders struct {
	EmailAddress string `json:"email_address,omitempty"`
	MerchantID   string `json:"merchant_id,omitempty"`
}

PayeeForOrders struct

type PayeePreferred added in v1.1.4

const (
	PayeePreferredUnrestricted             PayeePreferred = "UNRESTRICTED"
	PayeePreferredImmediatePaymentRequired PayeePreferred = "IMMEDIATE_PAYMENT_REQUIRED"
)

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"`
	CountryCode     string           `json:"country_code"`
}

PayerInfo struct

type PayerWithNameAndPhone added in v1.1.4

type PayerWithNameAndPhone struct {
	Name         *CreateOrderPayerName          `json:"name,omitempty"`
	EmailAddress string                         `json:"email_address,omitempty"`
	Phone        *PhoneWithType                 `json:"phone,omitempty"`
	PayerID      string                         `json:"payer_id,omitempty"`
	BirthDate    string                         `json:"birth_date,omitempty"`
	TaxInfo      *TaxInfo                       `json:"tax_info,omitempty"`
	Address      *ShippingDetailAddressPortable `json:"address,omitempty"`
}

PayerWithNameAndPhone struct

type PaymentCaptureRequest added in v1.1.4

type PaymentCaptureRequest struct {
	InvoiceID      string `json:"invoice_id,omitempty"`
	NoteToPayer    string `json:"note_to_payer,omitempty"`
	SoftDescriptor string `json:"soft_descriptor,omitempty"`
	Amount         *Money `json:"amount,omitempty"`
	FinalCapture   bool   `json:"final_capture,omitempty"`
}

https://developer.paypal.com/docs/api/payments/v2/#authorizations_capture

type PaymentCaptureResponse added in v1.1.4

type PaymentCaptureResponse struct {
	Status           string                `json:"status,omitempty"`
	StatusDetails    *CaptureStatusDetails `json:"status_details,omitempty"`
	ID               string                `json:"id,omitempty"`
	Amount           *Money                `json:"amount,omitempty"`
	InvoiceID        string                `json:"invoice_id,omitempty"`
	FinalCapture     bool                  `json:"final_capture,omitempty"`
	DisbursementMode string                `json:"disbursement_mode,omitempty"`
	Links            []Link                `json:"links,omitempty"`
}

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 PaymentInstruction added in v1.1.4

type PaymentInstruction struct {
	PlatformFees     []PlatformFee `json:"platform_fees,omitempty"`
	DisbursementMode string        `json:"disbursement_mode,omitempty"`
}

https://developer.paypal.com/docs/api/payments/v2/#definition-payment_instruction

type PaymentMethod added in v1.1.4

type PaymentMethod struct {
	PayeePreferred         PayeePreferred         `json:"payee_preferred,omitempty"`
	StandardEntryClassCode StandardEntryClassCode `json:"standard_entry_class_code,omitempty"`
}

Doc: https://developer.paypal.com/api/orders/v2/#definition-payment_method

type PaymentOptions added in v1.0.1

type PaymentOptions struct {
	AllowedPaymentMethod string `json:"allowed_payment_method,omitempty"`
}

PaymentOptions struct

type PaymentPatch added in v1.0.1

type PaymentPatch struct {
	Operation string      `json:"op"`
	Path      string      `json:"path"`
	Value     interface{} `json:"value"`
}

PaymentPatch PATCH /v2/payments/payment/{payment_id)

type PaymentPayer added in v1.0.1

type PaymentPayer struct {
	PaymentMethod string     `json:"payment_method"`
	Status        string     `json:"status,omitempty"`
	PayerInfo     *PayerInfo `json:"payer_info,omitempty"`
}

PaymentPayer struct

type PaymentPreferences added in v1.1.4

type PaymentPreferences struct {
	AutoBillOutstanding     bool                  `json:"auto_bill_outstanding"`
	SetupFee                *Money                `json:"setup_fee"`
	SetupFeeFailureAction   SetupFeeFailureAction `json:"setup_fee_failure_action"`
	PaymentFailureThreshold int                   `json:"payment_failure_threshold"`
}

Doc: https://developer.paypal.com/docs/api/subscriptions/v1/#definition-payment_preferences

type PaymentPreferencesOverride added in v1.1.4

type PaymentPreferencesOverride struct {
	AutoBillOutstanding     bool                  `json:"auto_bill_outstanding,omitempty"`
	SetupFee                Money                 `json:"setup_fee,omitempty"`
	SetupFeeFailureAction   SetupFeeFailureAction `json:"setup_fee_failure_action,omitempty"`
	PaymentFailureThreshold int                   `json:"payment_failure_threshold,omitempty"`
}

https://developer.paypal.com/docs/api/subscriptions/v1/#definition-payment_preferences_override

type PaymentResponse

type PaymentResponse struct {
	ID           string        `json:"id"`
	State        string        `json:"state"`
	Intent       string        `json:"intent"`
	Payer        Payer         `json:"payer"`
	Transactions []Transaction `json:"transactions"`
	Links        []Link        `json:"links"`
}

PaymentResponse structure

type PaymentSource added in v1.1.4

type PaymentSource struct {
	Card  *PaymentSourceCard  `json:"card,omitempty"`
	Token *PaymentSourceToken `json:"token,omitempty"`
}

PaymentSource structure

type PaymentSourceCard added in v1.1.4

type PaymentSourceCard struct {
	ID             string              `json:"id"`
	Name           string              `json:"name"`
	Number         string              `json:"number"`
	Expiry         string              `json:"expiry"`
	SecurityCode   string              `json:"security_code"`
	LastDigits     string              `json:"last_digits"`
	CardType       string              `json:"card_type"`
	BillingAddress *CardBillingAddress `json:"billing_address"`
}

PaymentSourceCard structure

type PaymentSourceToken added in v1.1.4

type PaymentSourceToken struct {
	ID   string `json:"id"`
	Type string `json:"type"`
}

PaymentSourceToken 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"`
	RecipientWallet string        `json:"recipient_wallet"`
	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"`
	Error             ErrorResponse `json:"errors,omitempty"`
}

PayoutItemResponse struct

type PayoutResponse

type PayoutResponse struct {
	BatchHeader *BatchHeader         `json:"batch_header"`
	Items       []PayoutItemResponse `json:"items"`
	Links       []Link               `json:"links"`
}

PayoutResponse struct

type PhoneWithType added in v1.1.4

type PhoneWithType struct {
	PhoneType   string               `json:"phone_type,omitempty"`
	PhoneNumber *PhoneWithTypeNumber `json:"phone_number,omitempty"`
}

PhoneWithType struct used for orders

type PhoneWithTypeNumber added in v1.1.4

type PhoneWithTypeNumber struct {
	NationalNumber string `json:"national_number,omitempty"`
}

PhoneWithTypeNumber struct for PhoneWithType

type Plan added in v1.1.4

type Plan struct {
	ID                 string              `json:"id"`
	Name               string              `json:"name"`
	Description        string              `json:"description"`
	CreateTime         string              `json:"create_time,omitempty"`
	UpdateTime         string              `json:"update_time,omitempty"`
	PaymentDefinitions []PaymentDefinition `json:"payment_definitions,omitempty"`
}

Plan struct

type PlanOverride added in v1.1.4

type PlanOverride struct {
	BillingCycles      []BillingCycleOverride      `json:"billing_cycles,omitempty"`
	PaymentPreferences *PaymentPreferencesOverride `json:"payment_preferences,omitempty"`
	Taxes              *TaxesOverride              `json:"taxes,omitempty"`
}

https://developer.paypal.com/docs/api/subscriptions/v1/#definition-plan_override

type PlatformFee added in v1.1.4

type PlatformFee struct {
	Amount *Money          `json:"amount,omitempty"`
	Payee  *PayeeForOrders `json:"payee,omitempty"`
}

https://developer.paypal.com/docs/api/payments/v2/#definition-platform_fee

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 PricingScheme added in v1.1.4

type PricingScheme struct {
	Version    int       `json:"version"`
	FixedPrice Money     `json:"fixed_price"`
	CreateTime time.Time `json:"create_time"`
	UpdateTime time.Time `json:"update_time"`
}

type PricingSchemeUpdate added in v1.1.4

type PricingSchemeUpdate struct {
	BillingCycleSequence int           `json:"billing_cycle_sequence"`
	PricingScheme        PricingScheme `json:"pricing_scheme"`
}

type PricingSchemeUpdateRequest added in v1.1.4

type PricingSchemeUpdateRequest struct {
	Schemes []PricingSchemeUpdate `json:"pricing_schemes"`
}

type Product added in v1.1.4

type Product struct {
	ID          string          `json:"id,omitempty"`
	Name        string          `json:"name"`
	Description string          `json:"description,omitempty"`
	Category    ProductCategory `json:"category,omitempty"`
	Type        ProductType     `json:"type"`
	ImageUrl    string          `json:"image_url,omitempty"`
	HomeUrl     string          `json:"home_url,omitempty"`
}

Product struct

func (*Product) GetUpdatePatch added in v1.1.4

func (self *Product) GetUpdatePatch() []Patch

type ProductListParameters added in v1.1.4

type ProductListParameters struct {
	ListParams
}

type ProductType added in v1.1.4

type ProductType string

type PurchaseUnit added in v1.1.4

type PurchaseUnit struct {
	ReferenceID        string              `json:"reference_id"`
	Amount             *PurchaseUnitAmount `json:"amount,omitempty"`
	Payee              *PayeeForOrders     `json:"payee,omitempty"`
	Payments           *CapturedPayments   `json:"payments,omitempty"`
	PaymentInstruction *PaymentInstruction `json:"payment_instruction,omitempty"`
	Description        string              `json:"description,omitempty"`
	CustomID           string              `json:"custom_id,omitempty"`
	InvoiceID          string              `json:"invoice_id,omitempty"`
	ID                 string              `json:"id,omitempty"`
	SoftDescriptor     string              `json:"soft_descriptor,omitempty"`
	Shipping           *ShippingDetail     `json:"shipping,omitempty"`
	Items              []Item              `json:"items,omitempty"`
}

PurchaseUnit struct

type PurchaseUnitAmount added in v1.1.4

type PurchaseUnitAmount struct {
	Currency  string                       `json:"currency_code"`
	Value     string                       `json:"value"`
	Breakdown *PurchaseUnitAmountBreakdown `json:"breakdown,omitempty"`
}

PurchaseUnitAmount struct

type PurchaseUnitAmountBreakdown added in v1.1.4

type PurchaseUnitAmountBreakdown struct {
	ItemTotal        *Money `json:"item_total,omitempty"`
	Shipping         *Money `json:"shipping,omitempty"`
	Handling         *Money `json:"handling,omitempty"`
	TaxTotal         *Money `json:"tax_total,omitempty"`
	Insurance        *Money `json:"insurance,omitempty"`
	ShippingDiscount *Money `json:"shipping_discount,omitempty"`
	Discount         *Money `json:"discount,omitempty"`
}

PurchaseUnitAmountBreakdown struct

type PurchaseUnitRequest added in v1.1.4

type PurchaseUnitRequest struct {
	ReferenceID        string              `json:"reference_id,omitempty"`
	Amount             *PurchaseUnitAmount `json:"amount"`
	Payee              *PayeeForOrders     `json:"payee,omitempty"`
	Description        string              `json:"description,omitempty"`
	CustomID           string              `json:"custom_id,omitempty"`
	InvoiceID          string              `json:"invoice_id,omitempty"`
	SoftDescriptor     string              `json:"soft_descriptor,omitempty"`
	Items              []Item              `json:"items,omitempty"`
	Shipping           *ShippingDetail     `json:"shipping,omitempty"`
	PaymentInstruction *PaymentInstruction `json:"payment_instruction,omitempty"`
}

PurchaseUnitRequest struct

type RedirectURLs

type RedirectURLs struct {
	ReturnURL string `json:"return_url,omitempty"`
	CancelURL string `json:"cancel_url,omitempty"`
}

RedirectURLs struct

type ReferralRequest added in v1.1.4

type ReferralRequest struct {
	TrackingID            string                 `json:"tracking_id"`
	PartnerConfigOverride *PartnerConfigOverride `json:"partner_config_override,omitempty"`
	Operations            []Operation            `json:"operations,omitempty"`
	Products              []string               `json:"products,omitempty"`
	LegalConsents         []Consent              `json:"legal_consents,omitempty"`
}

type ReferralResponse added in v1.1.4

type ReferralResponse struct {
	Links []Link `json:"links,omitempty"`
}

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"`
	SaleID        string     `json:"sale_id,omitempty"`
}

Refund struct

type RefundCaptureRequest added in v1.1.4

type RefundCaptureRequest struct {
	Amount      *Money `json:"amount,omitempty"`
	InvoiceID   string `json:"invoice_id,omitempty"`
	NoteToPayer string `json:"note_to_payer,omitempty"`
}

RefundOrderRequest - https://developer.paypal.com/docs/api/payments/v2/#captures_refund

type RefundResponse added in v1.1.4

type RefundResponse struct {
	ID     string              `json:"id,omitempty"`
	Amount *PurchaseUnitAmount `json:"amount,omitempty"`
	Status string              `json:"status,omitempty"`
	Links  []Link              `json:"links,omitempty"`
}

RefundResponse .

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 Resource deprecated added in v1.1.4

type Resource struct {
	ID                        string                     `json:"id,omitempty"`
	Status                    string                     `json:"status,omitempty"`
	StatusDetails             *CaptureStatusDetails      `json:"status_details,omitempty"`
	Amount                    *PurchaseUnitAmount        `json:"amount,omitempty"`
	UpdateTime                string                     `json:"update_time,omitempty"`
	CreateTime                string                     `json:"create_time,omitempty"`
	ExpirationTime            string                     `json:"expiration_time,omitempty"`
	SellerProtection          *SellerProtection          `json:"seller_protection,omitempty"`
	FinalCapture              bool                       `json:"final_capture,omitempty"`
	SellerPayableBreakdown    *CaptureSellerBreakdown    `json:"seller_payable_breakdown,omitempty"`
	SellerReceivableBreakdown *SellerReceivableBreakdown `json:"seller_receivable_breakdown,omitempty"`
	NoteToPayer               string                     `json:"note_to_payer,omitempty"`
	CustomID                  string                     `json:"custom_id,omitempty"`
	PartnerClientID           string                     `json:"partner_client_id,omitempty"`
	MerchantID                string                     `json:"merchant_id,omitempty"`
	Intent                    string                     `json:"intent,omitempty"`
	BillingAgreementID        *string                    `json:"billing_agreement_id,omitempty"`
	PurchaseUnits             []*PurchaseUnitRequest     `json:"purchase_units,omitempty"`
	Payer                     *PayerWithNameAndPhone     `json:"payer,omitempty"`
	Links                     []Link                     `json:"links,omitempty"`
}

Resource is a mix of fields from several webhook resource types.

Deprecated: Add implementation of specific resource types in your own code and don't use this catch all struct, you show know which resource type you are expecting and handle that type only.

Every resource struct type should be unique for every combination of "resource_type"/"resource_version" combination of the Event type / webhook message.

type RestAPIIntegration added in v1.1.4

type RestAPIIntegration struct {
	IntegrationMethod string            `json:"integration_method"`
	IntegrationType   string            `json:"integration_type"`
	ThirdPartyDetails ThirdPartyDetails `json:"third_party_details"`
}

type Sale

type Sale struct {
	ID                        string     `json:"id,omitempty"`
	Amount                    *Amount    `json:"amount,omitempty"`
	TransactionFee            *Currency  `json:"transaction_fee,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"`
	BillingAgreementID        string     `json:"billing_agreement_id,omitempty"`
	Links                     []Link     `json:"links,omitempty"`
}

Sale struct

type SearchCartInfo added in v1.1.4

type SearchCartInfo struct {
	ItemDetails     []SearchItemDetails `json:"item_details"`
	TaxInclusive    *bool               `json:"tax_inclusive"`
	PayPalInvoiceID string              `json:"paypal_invoice_id"`
}

type SearchCheckoutOption added in v1.1.4

type SearchCheckoutOption struct {
	CheckoutOptionName  string `json:"checkout_option_name"`
	CheckoutOptionValue string `json:"checkout_option_value"`
}

type SearchItemDetails added in v1.1.4

type SearchItemDetails struct {
	ItemCode            string                 `json:"item_code"`
	ItemName            string                 `json:"item_name"`
	ItemDescription     string                 `json:"item_description"`
	ItemOptions         string                 `json:"item_options"`
	ItemQuantity        string                 `json:"item_quantity"`
	ItemUnitPrice       Money                  `json:"item_unit_price"`
	ItemAmount          Money                  `json:"item_amount"`
	DiscountAmount      *Money                 `json:"discount_amount"`
	AdjustmentAmount    *Money                 `json:"adjustment_amount"`
	GiftWrapAmount      *Money                 `json:"gift_wrap_amount"`
	TaxPercentage       string                 `json:"tax_percentage"`
	TaxAmounts          []SearchTaxAmount      `json:"tax_amounts"`
	BasicShippingAmount *Money                 `json:"basic_shipping_amount"`
	ExtraShippingAmount *Money                 `json:"extra_shipping_amount"`
	HandlingAmount      *Money                 `json:"handling_amount"`
	InsuranceAmount     *Money                 `json:"insurance_amount"`
	TotalItemAmount     Money                  `json:"total_item_amount"`
	InvoiceNumber       string                 `json:"invoice_number"`
	CheckoutOptions     []SearchCheckoutOption `json:"checkout_options"`
}

type SearchPayerInfo added in v1.1.4

type SearchPayerInfo struct {
	AccountID     string               `json:"account_id"`
	EmailAddress  string               `json:"email_address"`
	PhoneNumber   *PhoneWithTypeNumber `json:"phone_number"`
	AddressStatus string               `json:"address_status"`
	PayerStatus   string               `json:"payer_status"`
	PayerName     SearchPayerName      `json:"payer_name"`
	CountryCode   string               `json:"country_code"`
	Address       *Address             `json:"address"`
}

type SearchPayerName added in v1.1.4

type SearchPayerName struct {
	GivenName string `json:"given_name"`
	Surname   string `json:"surname"`
}

type SearchShippingInfo added in v1.1.4

type SearchShippingInfo struct {
	Name                     string   `json:"name"`
	Method                   string   `json:"method"`
	Address                  Address  `json:"address"`
	SecondaryShippingAddress *Address `json:"secondary_shipping_address"`
}

type SearchTaxAmount added in v1.1.4

type SearchTaxAmount struct {
	TaxAmount Money `json:"tax_amount"`
}

type SearchTransactionDetails added in v1.1.4

type SearchTransactionDetails struct {
	TransactionInfo SearchTransactionInfo `json:"transaction_info"`
	PayerInfo       *SearchPayerInfo      `json:"payer_info"`
	ShippingInfo    *SearchShippingInfo   `json:"shipping_info"`
	CartInfo        *SearchCartInfo       `json:"cart_info"`
}

type SearchTransactionInfo added in v1.1.4

type SearchTransactionInfo struct {
	PayPalAccountID           string   `json:"paypal_account_id"`
	TransactionID             string   `json:"transaction_id"`
	PayPalReferenceID         string   `json:"paypal_reference_id"`
	PayPalReferenceIDType     string   `json:"paypal_reference_id_type"`
	TransactionEventCode      string   `json:"transaction_event_code"`
	TransactionInitiationDate JSONTime `json:"transaction_initiation_date"`
	TransactionUpdatedDate    JSONTime `json:"transaction_updated_date"`
	TransactionAmount         Money    `json:"transaction_amount"`
	FeeAmount                 *Money   `json:"fee_amount"`
	InsuranceAmount           *Money   `json:"insurance_amount"`
	ShippingAmount            *Money   `json:"shipping_amount"`
	ShippingDiscountAmount    *Money   `json:"shipping_discount_amount"`
	ShippingTaxAmount         *Money   `json:"shipping_tax_amount"`
	OtherAmount               *Money   `json:"other_amount"`
	TipAmount                 *Money   `json:"tip_amount"`
	TransactionStatus         string   `json:"transaction_status"`
	TransactionSubject        string   `json:"transaction_subject"`
	PaymentTrackingID         string   `json:"payment_tracking_id"`
	BankReferenceID           string   `json:"bank_reference_id"`
	TransactionNote           string   `json:"transaction_note"`
	EndingBalance             *Money   `json:"ending_balance"`
	AvailableBalance          *Money   `json:"available_balance"`
	InvoiceID                 string   `json:"invoice_id"`
	CustomField               string   `json:"custom_field"`
	ProtectionEligibility     string   `json:"protection_eligibility"`
	CreditTerm                string   `json:"credit_term"`
	CreditTransactionalFee    *Money   `json:"credit_transactional_fee"`
	CreditPromotionalFee      *Money   `json:"credit_promotional_fee"`
	AnnualPercentageRate      string   `json:"annual_percentage_rate"`
	PaymentMethodType         string   `json:"payment_method_type"`
}

type SellerProtection added in v1.1.4

type SellerProtection struct {
	Status            string   `json:"status,omitempty"`
	DisputeCategories []string `json:"dispute_categories,omitempty"`
}

type SellerReceivableBreakdown added in v1.1.4

type SellerReceivableBreakdown struct {
	GrossAmount                   *Money        `json:"gross_amount,omitempty"`
	PaypalFee                     *Money        `json:"paypal_fee,omitempty"`
	PaypalFeeInReceivableCurrency *Money        `json:"paypal_fee_in_receivable_currency,omitempty"`
	NetAmount                     *Money        `json:"net_amount,omitempty"`
	ReceivableAmount              *Money        `json:"receivable_amount,omitempty"`
	ExchangeRate                  *ExchangeRate `json:"exchange_rate,omitempty"`
	PlatformFees                  []PlatformFee `json:"platform_fees,omitempty"`
}

SellerReceivableBreakdown has the detailed breakdown of the capture activity.

type SenderBatchHeader

type SenderBatchHeader struct {
	EmailSubject  string `json:"email_subject"`
	EmailMessage  string `json:"email_message"`
	SenderBatchID string `json:"sender_batch_id,omitempty"`
}

SenderBatchHeader struct

type SetupFeeFailureAction added in v1.1.4

type SetupFeeFailureAction string
const (
	SetupFeeFailureActionContinue SetupFeeFailureAction = "CONTINUE"
	SetupFeeFailureActionCancel   SetupFeeFailureAction = "CANCEL"
)

type SharedListResponse added in v1.1.4

type SharedListResponse struct {
	TotalItems int    `json:"total_items,omitempty"`
	TotalPages int    `json:"total_pages,omitempty"`
	Links      []Link `json:"links,omitempty"`
}

type SharedResponse added in v1.1.4

type SharedResponse struct {
	CreateTime string `json:"create_time"`
	UpdateTime string `json:"update_time"`
	Links      []Link `json:"links"`
}

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 ShippingAmount added in v1.1.4

type ShippingAmount struct {
	Money
}

ShippingAmount struct

type ShippingDetail added in v1.1.4

type ShippingDetail struct {
	Name    *Name                          `json:"name,omitempty"`
	Address *ShippingDetailAddressPortable `json:"address,omitempty"`
}

ShippingDetail struct

type ShippingDetailAddressPortable added in v1.1.4

type ShippingDetailAddressPortable struct {
	AddressLine1 string `json:"address_line_1,omitempty"`
	AddressLine2 string `json:"address_line_2,omitempty"`
	AdminArea1   string `json:"admin_area_1,omitempty"`
	AdminArea2   string `json:"admin_area_2,omitempty"`
	PostalCode   string `json:"postal_code,omitempty"`
	CountryCode  string `json:"country_code,omitempty"`
}

ShippingDetailAddressPortable used with create orders

type ShippingPreference added in v1.1.4

type ShippingPreference string
const (
	ShippingPreferenceGetFromFile        ShippingPreference = "GET_FROM_FILE"
	ShippingPreferenceNoShipping         ShippingPreference = "NO_SHIPPING"
	ShippingPreferenceSetProvidedAddress ShippingPreference = "SET_PROVIDED_ADDRESS"
)

type StandardEntryClassCode added in v1.1.4

const (
	StandardEntryClassCodeTel StandardEntryClassCode = "TEL"
	StandardEntryClassCodeWeb StandardEntryClassCode = "WEB"
	StandardEntryClassCodeCcd StandardEntryClassCode = "CCD"
	StandardEntryClassCodePpd StandardEntryClassCode = "PPD"
)

type Subscriber added in v1.1.4

type Subscriber struct {
	PayerID         string               `json:"payer_id"`
	ShippingAddress *ShippingDetail      `json:"shipping_address,omitempty"`
	Name            CreateOrderPayerName `json:"name,omitempty"`
	EmailAddress    string               `json:"email_address,omitempty"`
}

Subscriber struct

type Subscription added in v1.1.4

type Subscription struct {
	SubscriptionDetailResp
}

func (*Subscription) GetUpdatePatch added in v1.1.4

func (self *Subscription) GetUpdatePatch() []Patch

type SubscriptionBase added in v1.1.4

type SubscriptionBase struct {
	PlanID             string              `json:"plan_id"`
	StartTime          *JSONTime           `json:"start_time,omitempty"`
	EffectiveTime      *JSONTime           `json:"effective_time,omitempty"`
	Quantity           string              `json:"quantity,omitempty"`
	ShippingAmount     *Money              `json:"shipping_amount,omitempty"`
	Subscriber         *Subscriber         `json:"subscriber,omitempty"`
	AutoRenewal        bool                `json:"auto_renewal,omitempty"`
	ApplicationContext *ApplicationContext `json:"application_context,omitempty"`
	CustomID           string              `json:"custom_id,omitempty"`
	Plan               *PlanOverride       `json:"plan,omitempty"`
}

type SubscriptionCaptureResponse added in v1.1.4

type SubscriptionCaptureResponse struct {
	Status              SubscriptionTransactionStatus `json:"status"`
	Id                  string                        `json:"id"`
	AmountWithBreakdown AmountWithBreakdown           `json:"amount_with_breakdown"`
	PayerName           Name                          `json:"payer_name"`
	PayerEmail          string                        `json:"payer_email"`
	Time                time.Time                     `json:"time"`
}

type SubscriptionDetailResp added in v1.1.4

type SubscriptionDetailResp struct {
	SubscriptionBase
	SubscriptionDetails
	BillingInfo BillingInfo `json:"billing_info,omitempty"` // not found in documentation
	SharedResponse
}

SubscriptionDetailResp struct

type SubscriptionDetails added in v1.1.4

type SubscriptionDetails struct {
	ID                           string             `json:"id,omitempty"`
	SubscriptionStatus           SubscriptionStatus `json:"status,omitempty"`
	SubscriptionStatusChangeNote string             `json:"status_change_note,omitempty"`
	StatusUpdateTime             time.Time          `json:"status_update_time,omitempty"`
}

type SubscriptionPlan added in v1.1.4

type SubscriptionPlan struct {
	ID                 string                 `json:"id,omitempty"`
	ProductId          string                 `json:"product_id"`
	Name               string                 `json:"name"`
	Status             SubscriptionPlanStatus `json:"status"`
	Description        string                 `json:"description,omitempty"`
	BillingCycles      []BillingCycle         `json:"billing_cycles"`
	PaymentPreferences *PaymentPreferences    `json:"payment_preferences"`
	Taxes              *Taxes                 `json:"taxes"`
	QuantitySupported  bool                   `json:"quantity_supported"` //Indicates whether you can subscribe to this plan by providing a quantity for the goods or service.
}

SubscriptionDetailResp struct

func (*SubscriptionPlan) GetUpdatePatch added in v1.1.4

func (self *SubscriptionPlan) GetUpdatePatch() []Patch

type SubscriptionPlanListParameters added in v1.1.4

type SubscriptionPlanListParameters struct {
	ProductId string `json:"product_id"`
	PlanIds   string `json:"plan_ids"` // Filters the response by list of plan IDs. Filter supports upto 10 plan IDs.
	ListParams
}

type SubscriptionPlanStatus added in v1.1.4

type SubscriptionPlanStatus string
const (
	SubscriptionPlanStatusCreated  SubscriptionPlanStatus = "CREATED"
	SubscriptionPlanStatusInactive SubscriptionPlanStatus = "INACTIVE"
	SubscriptionPlanStatusActive   SubscriptionPlanStatus = "ACTIVE"
)

type SubscriptionStatus added in v1.1.4

type SubscriptionStatus string
const (
	SubscriptionStatusApprovalPending SubscriptionStatus = "APPROVAL_PENDING"
	SubscriptionStatusApproved        SubscriptionStatus = "APPROVED"
	SubscriptionStatusActive          SubscriptionStatus = "ACTIVE"
	SubscriptionStatusSuspended       SubscriptionStatus = "SUSPENDED"
	SubscriptionStatusCancelled       SubscriptionStatus = "CANCELLED"
	SubscriptionStatusExpired         SubscriptionStatus = "EXPIRED"
)

type SubscriptionTransactionStatus added in v1.1.4

type SubscriptionTransactionStatus string

Doc: https://developer.paypal.com/docs/api/subscriptions/v1/#definition-transaction

const (
	SubscriptionCaptureStatusCompleted         SubscriptionTransactionStatus = "COMPLETED"
	SubscriptionCaptureStatusDeclined          SubscriptionTransactionStatus = "DECLINED"
	SubscriptionCaptureStatusPartiallyRefunded SubscriptionTransactionStatus = "PARTIALLY_REFUNDED"
	SubscriptionCaptureStatusPending           SubscriptionTransactionStatus = "PENDING"
	SubscriptionCaptureStatusRefunded          SubscriptionTransactionStatus = "REFUNDED"
)

type SubscriptionTransactionsParams added in v1.1.4

type SubscriptionTransactionsParams struct {
	SubscriptionId string
	StartTime      time.Time
	EndTime        time.Time
}

type SubscriptionTransactionsResponse added in v1.1.4

type SubscriptionTransactionsResponse struct {
	Transactions []SubscriptionCaptureResponse `json:"transactions"`
	SharedListResponse
}

type TaxInfo added in v1.1.4

type TaxInfo struct {
	TaxID     string `json:"tax_id,omitempty"`
	TaxIDType string `json:"tax_id_type,omitempty"`
}

TaxInfo used for orders.

type Taxes added in v1.1.4

type Taxes struct {
	Percentage string `json:"percentage"`
	Inclusive  bool   `json:"inclusive"`
}

type TaxesOverride added in v1.1.4

type TaxesOverride struct {
	Percentage string `json:"percentage,omitempty"`
	Inclusive  *bool  `json:"inclusive,omitempty"`
}

https://developer.paypal.com/docs/api/subscriptions/v1/#definition-payment_preferences_override

type TenureType added in v1.1.4

type TenureType string
const (
	TenureTypeRegular TenureType = "REGULAR"
	TenureTypeTrial   TenureType = "TRIAL"
)

type TextField added in v1.1.4

type TextField struct {
	Is string
	// contains filtered or unexported fields
}

TextField type

func (TextField) String added in v1.1.4

func (d TextField) String() string

type ThirdPartyDetails added in v1.1.4

type ThirdPartyDetails struct {
	Features []string `json:"features"`
}

type TimeField added in v1.1.4

type TimeField struct {
	Is time.Time
	// contains filtered or unexported fields
}

TimeField type

func (TimeField) String added in v1.1.4

func (d TimeField) String() string

String .

type TokenResponse

type TokenResponse struct {
	RefreshToken string         `json:"refresh_token"`
	Token        string         `json:"access_token"`
	Type         string         `json:"token_type"`
	ExpiresIn    expirationTime `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"`
	PaymentOptions   *PaymentOptions `json:"payment_options,omitempty"`
	NotifyURL        string          `json:"notify_url,omitempty"`
	OrderURL         string          `json:"order_url,omitempty"`
	Payee            *Payee          `json:"payee,omitempty"`
}

Transaction struct

type TransactionSearchRequest added in v1.1.4

type TransactionSearchRequest struct {
	TransactionID               *string
	TransactionType             *string
	TransactionStatus           *string
	TransactionAmount           *string
	TransactionCurrency         *string
	StartDate                   time.Time
	EndDate                     time.Time
	PaymentInstrumentType       *string
	StoreID                     *string
	TerminalID                  *string
	Fields                      *string
	BalanceAffectingRecordsOnly *string
	PageSize                    *int
	Page                        *int
}

type TransactionSearchResponse added in v1.1.4

type TransactionSearchResponse struct {
	TransactionDetails  []SearchTransactionDetails `json:"transaction_details"`
	AccountNumber       string                     `json:"account_number"`
	StartDate           JSONTime                   `json:"start_date"`
	EndDate             JSONTime                   `json:"end_date"`
	LastRefreshDatetime JSONTime                   `json:"last_refreshed_datetime"`
	Page                int                        `json:"page"`
	SharedListResponse
}

type UserAction added in v1.1.4

type UserAction string
const (
	UserActionContinue     UserAction = "CONTINUE"
	UserActionPayNow       UserAction = "PAY_NOW"
	UserActionSubscribeNow UserAction = "SUBSCRIBE_NOW"
)

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,string"`
	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,string"`
	AccountType     string   `json:"account_type,omitempty"`
	AgeRange        string   `json:"age_range,omitempty"`
	PayerID         string   `json:"payer_id,omitempty"`
}

UserInfo struct

type VerifyWebhookResponse added in v1.1.4

type VerifyWebhookResponse struct {
	VerificationStatus string `json:"verification_status,omitempty"`
}

VerifyWebhookResponse 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

https://developer.paypal.com/docs/api/payment-experience/

type Webhook added in v1.1.4

type Webhook struct {
	ID         string             `json:"id"`
	URL        string             `json:"url"`
	EventTypes []WebhookEventType `json:"event_types"`
	Links      []Link             `json:"links"`
}

Webhook struct

type WebhookEventType added in v1.1.4

type WebhookEventType struct {
	Name        string `json:"name"`
	Description string `json:"description"`
	Status      string `json:"status,omitempty"`
}

WebhookEventType struct

type WebhookEventTypesResponse added in v1.1.4

type WebhookEventTypesResponse struct {
	EventTypes []WebhookEventType `json:"event_types"`
}

type WebhookField added in v1.1.4

type WebhookField struct {
	Operation string      `json:"op"`
	Path      string      `json:"path"`
	Value     interface{} `json:"value"`
}

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL