You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
372 lines
12 KiB
372 lines
12 KiB
package paypal
|
|
|
|
const (
|
|
baseurl = "https://api.sandbox.paypal.com" // sandbox
|
|
//baseurl = "https://api.paypal.com"// product
|
|
|
|
//sandbox
|
|
username = "AR_HpVdxFURck7pjWsej_8CKbUAaAcKeEp4G7z6LdU1Vd-L5D5x_3Z6_vMVjhcWA5eZ7pbT9bTCwCD1S"
|
|
password = "EL1gdqvwDaDCfj62C86LT3ptFgIJYsIrNg_lPpuepASe4P3za_Np3iOk_rytfU7SbYgXnSU7Z6WxxJot"
|
|
|
|
// product
|
|
//username = "ATefQ-JMD8VoIzBZUU50pJ9GMtn_fGWOt5E2jMl4f1AiKPUjle2XXPxADISx6de95am-g7FLmModG22G"
|
|
//password = "EE1Y9XJUDIc1trwnU4UQDHVLeNUH9cuM5ehzohH1iAps7O9zH7k9sn6Awn-QYLH-aOYy4wwO5OXeV5LK"
|
|
|
|
accessToken = "/v1/oauth2/token" // Authorization
|
|
orderBase = "/v2/checkout/orders" //
|
|
payouts = "/v1/payments/payouts" //
|
|
)
|
|
|
|
type AccessToken struct {
|
|
Scope string `json:"scope"`
|
|
AccessToken string `json:"access_token"`
|
|
TokenType string `json:"token_type"`
|
|
AppID string `json:"app_id"`
|
|
ExpiresIn int64 `json:"expires_in"`
|
|
Nonce string `json:"nonce"`
|
|
}
|
|
|
|
type PurchaseAmount struct {
|
|
Amount
|
|
//Breakdown Breakdown `json:"breakdown"` //
|
|
}
|
|
|
|
type Amount struct {
|
|
CurrencyCode string `json:"currency_code"`
|
|
Value string `json:"value"`
|
|
}
|
|
|
|
type Breakdown struct {
|
|
ItemTotal Amount `json:"item_total"` //
|
|
Shipping Amount `json:"shipping"` //
|
|
Handling Amount `json:"handling"` //
|
|
TaxTotal Amount `json:"tax_total"` //
|
|
Insurance Amount `json:"insurance"` //
|
|
ShippingDiscount Amount `json:"shipping_discount"` //
|
|
Discount Amount `json:"discount"` //
|
|
}
|
|
|
|
type PlatformFees struct {
|
|
Amount Amount `json:"amount"`
|
|
Payee Payee `json:"payee"`
|
|
}
|
|
|
|
type PaymentInstruction struct {
|
|
PlatformFees []PlatformFees `json:"platform_fees"`
|
|
PayeePricingTierId string `json:"payee_pricing_tier_id"`
|
|
PayeeReceivableFxRateId string `json:"payee_receivable_fx_rate_id"`
|
|
DisbursementMode string `json:"disbursement_mode"`
|
|
}
|
|
|
|
type Address struct {
|
|
AddressLine1 string `json:"address_line_1"`
|
|
AddressLine2 string `json:"address_line_2"`
|
|
AdminArea1 string `json:"admin_area_1"`
|
|
AdminArea2 string `json:"admin_area_2"`
|
|
PostalCode string `json:"postal_code"`
|
|
CountryCode string `json:"country_code"` //
|
|
}
|
|
|
|
type Name struct {
|
|
GivenName string `json:"given_name"`
|
|
Surname string `json:"surname"`
|
|
}
|
|
|
|
type Shipping struct {
|
|
Type string `json:"type"`
|
|
Name Name `json:"name"`
|
|
Address Address `json:"address"`
|
|
}
|
|
|
|
type PurchaseUnit struct {
|
|
//ReferenceId string `json:"reference_id"`
|
|
//Description string `json:"description"`
|
|
//CustomId string `json:"custom_id"`
|
|
//InvoiceId string `json:"invoice_id"`
|
|
//SoftDescriptor string `json:"soft_descriptor"`
|
|
//Items []PurchaseItem `json:"items"`
|
|
Amount PurchaseAmount `json:"amount"` //
|
|
Payments struct {
|
|
Captures []struct {
|
|
ID string `json:"id"`
|
|
Amount Amount `json:"amount"`
|
|
} `json:"captures"`
|
|
} `json:"payments"`
|
|
//Payee Payee `json:"payee"` //
|
|
//PaymentInstruction PaymentInstruction `json:"payment_instruction"`
|
|
//Shipping struct {
|
|
// Type string `json:"type"`
|
|
// Name Name `json:"name"`
|
|
// Address Address `json:"address"`
|
|
//} `json:"shipping"` //
|
|
//SupplementaryData struct {
|
|
// Card struct {
|
|
// Level2 struct {
|
|
// InvoiceId string `json:"invoice_id"`
|
|
// TaxTotal Amount `json:"tax_total"`
|
|
// } `json:"level_2"`
|
|
// Level3 struct {
|
|
// ShipsFromPostalCode string `json:"ships_from_postal_code"`
|
|
// LineItems []LineItems `json:"line_items"`
|
|
// ShippingAmount Amount `json:"shipping_amount"`
|
|
// DutyAmount Amount `json:"duty_amount"`
|
|
// DiscountAmount Amount `json:"discount_amount"`
|
|
// ShippingAddress Address `json:"shipping_address"`
|
|
// } `json:"level_3"`
|
|
// } `json:"card"`
|
|
//} `json:"supplementary_data"`
|
|
}
|
|
|
|
type Payee struct {
|
|
EmailAddress string `json:"email_address"`
|
|
MerchantId string `json:"merchant_id"`
|
|
}
|
|
|
|
type PurchaseItem struct {
|
|
Name string `json:"name"` //
|
|
Quantity string `json:"quantity"` //
|
|
Description string `json:"description"` //
|
|
Sku string `json:"sku"` //
|
|
Category string `json:"category"` //
|
|
UnitAmount Amount `json:"unit_amount"` //
|
|
Tax Amount `json:"tax"` //
|
|
}
|
|
|
|
type LineItems struct {
|
|
PurchaseItem
|
|
CommodityCode string `json:"commodity_code"`
|
|
UnitOfMeasure string `json:"unit_of_measure"`
|
|
DiscountAmount Amount `json:"discount_amount"`
|
|
TotalAmount Amount `json:"total_amount"`
|
|
}
|
|
|
|
type PhoneNumber struct {
|
|
NationalNumber string `json:"national_number"`
|
|
}
|
|
|
|
type Phone struct {
|
|
//PhoneType string `json:"phone_type"`
|
|
PhoneNumber PhoneNumber `json:"phone_number"`
|
|
}
|
|
|
|
type TaxInfo struct {
|
|
TaxId string `json:"tax_id"`
|
|
TaxIdType string `json:"tax_id_type"`
|
|
}
|
|
|
|
type Payer struct {
|
|
EmailAddress string `json:"email_address"`
|
|
Name Name `json:"name"`
|
|
Phone Phone `json:"phone"`
|
|
BirthDate string `json:"birth_date"`
|
|
TaxInfo TaxInfo `json:"tax_info"`
|
|
Address Address `json:"address"`
|
|
}
|
|
|
|
type Attribute struct {
|
|
Customer struct {
|
|
ID string `json:"id"`
|
|
//EmailAddress string `json:"email_address"`
|
|
//Phone Phone `json:"phone"`
|
|
} `json:"customer"`
|
|
//Vault struct {
|
|
// StoreInVault string `json:"store_in_vault"`
|
|
//} `json:"vault"`
|
|
}
|
|
|
|
type PreviousNetworkTransactionReference struct {
|
|
ID string `json:"id"`
|
|
Date string `json:"date"`
|
|
AcquirerReferenceNumber string `json:"acquirer_reference_number"`
|
|
Network string `json:"network"`
|
|
}
|
|
|
|
type TokenizedCard struct {
|
|
Name string `json:"name"`
|
|
Number string `json:"number"`
|
|
SecurityCode string `json:"security_code"`
|
|
Expiry string `json:"expiry"`
|
|
BillingAddress Address `json:"billing_address"`
|
|
Attributes Attribute `json:"attributes"`
|
|
}
|
|
|
|
type NetworkToken struct {
|
|
Number string `json:"number"`
|
|
Cryptogram string `json:"cryptogram"`
|
|
TokenRequestorId string `json:"token_requestor_id"`
|
|
Expiry string `json:"expiry"`
|
|
EciFlag string `json:"eci_flag"`
|
|
}
|
|
|
|
type Card struct {
|
|
TokenizedCard
|
|
StoredCredential StoredCredential `json:"stored_credential"`
|
|
VaultId string `json:"vault_id"`
|
|
NetworkToken NetworkToken `json:"network_token"`
|
|
}
|
|
|
|
type Token struct {
|
|
ID string `json:"id"`
|
|
Type string `json:"type"`
|
|
}
|
|
|
|
type Experience struct {
|
|
BrandName string `json:"brand_name"`
|
|
ShippingPreference string `json:"shipping_preference"`
|
|
}
|
|
|
|
type ExperienceContext struct {
|
|
//Experience
|
|
//Locale string `json:"locale"`
|
|
ReturnUrl string `json:"return_url"`
|
|
CancelUrl string `json:"cancel_url"`
|
|
}
|
|
|
|
type PExperienceContext struct {
|
|
ReturnURL string `json:"return_url,omitempty"`
|
|
CancelURL string `json:"cancel_url,omitempty"`
|
|
//LandingPage string `json:"landing_page"`
|
|
//UserAction string `json:"user_action"`
|
|
//PaymentMethodPreference string `json:"payment_method_preference"`
|
|
}
|
|
|
|
type Paypal struct {
|
|
ExperienceContext PExperienceContext `json:"experience_context"`
|
|
//BillingAgreementId string `json:"billing_agreement_id"`
|
|
//VaultId string `json:"vault_id"`
|
|
//EmailAddress string `json:"email_address"`
|
|
//Name Name `json:"name"`
|
|
//Phone Phone `json:"phone"`
|
|
//BirthDate string `json:"birth_date"`
|
|
//TaxInfo TaxInfo `json:"tax_info"`
|
|
//Address Address `json:"address"`
|
|
//Attributes Attribute `json:"attributes"`
|
|
}
|
|
|
|
type StoredCredential struct {
|
|
PaymentInitiator string `json:"payment_initiator"`
|
|
PaymentType string `json:"payment_type"`
|
|
Usage string `json:"usage"`
|
|
PreviousNetworkTransactionReference PreviousNetworkTransactionReference `json:"previous_network_transaction_reference"`
|
|
}
|
|
|
|
type PaymentSource struct {
|
|
//Card Card `json:"card"`
|
|
//Token Token `json:"token"`
|
|
//Paypal Paypal `json:"paypal"`
|
|
//Bancontact PaymentMethod `json:"bancontact"`
|
|
//Blik PaymentMethodBlik `json:"blik"`
|
|
//Eps PaymentMethod `json:"eps"`
|
|
//Giropay PaymentMethod `json:"giropay"`
|
|
//Ideal PaymentMethodIdeal `json:"ideal"`
|
|
//Mybank PaymentMethod `json:"mybank"`
|
|
//P24 PaymentMethodBlik `json:"p24"`
|
|
//Sofort PaymentMethod `json:"sofort"`
|
|
//Trustly PaymentMethod `json:"trustly"`
|
|
//ApplePay ApplePay `json:"apple_pay"`
|
|
//Venmo Venmo `json:"venmo"`
|
|
}
|
|
|
|
type (
|
|
ApplicationContext struct {
|
|
BrandName string `json:"brand_name,omitempty"`
|
|
Locale string `json:"locale,omitempty"`
|
|
LandingPage string `json:"landing_page,omitempty"`
|
|
ShippingPreference string `json:"shipping_preference,omitempty"`
|
|
UserAction string `json:"user_action,omitempty"`
|
|
ReturnURL string `json:"return_url,omitempty"`
|
|
CancelURL string `json:"cancel_url,omitempty"`
|
|
}
|
|
|
|
CreateOrderRequest struct {
|
|
PurchaseUnits []PurchaseUnit `json:"purchase_units"`
|
|
Intent string `json:"intent"`
|
|
//PaymentSource PaymentSource `json:"payment_source"`// 使用会带来PAYER_ACTION_REQUIRED问题
|
|
ApplicationContext ApplicationContext `json:"application_context"`
|
|
}
|
|
)
|
|
|
|
type Link struct {
|
|
Href string `json:"href"`
|
|
Rel string `json:"rel"`
|
|
Method string `json:"method"`
|
|
}
|
|
|
|
type OrderDetail struct {
|
|
CreateTime string `json:"create_time"`
|
|
UpdateTime string `json:"update_time"`
|
|
ID string `json:"id"`
|
|
ProcessingInstruction string `json:"processing_instruction"`
|
|
PurchaseUnits []PurchaseUnit `json:"purchase_units"`
|
|
Links []Link `json:"links"`
|
|
PaymentSource PaymentSource `json:"payment_source"`
|
|
Intent string `json:"intent"`
|
|
Payer Payer `json:"payer"`
|
|
Status string `json:"status"`
|
|
}
|
|
|
|
type PaymentSourceRequest struct {
|
|
PaymentSource PaymentSource `json:"payment_source"`
|
|
}
|
|
|
|
type PayoutPhone struct {
|
|
CountryCode string `json:"country_code"`
|
|
NationalNumber string `json:"national_number"`
|
|
ExtensionNumber string `json:"extension_number"`
|
|
}
|
|
|
|
type PayoutAmount struct {
|
|
Currency string `json:"currency"`
|
|
Value string `json:"value"`
|
|
}
|
|
|
|
type PayoutItem struct {
|
|
RecipientType string `json:"recipient_type"`
|
|
Note string `json:"note"`
|
|
Receiver string `json:"receiver"`
|
|
//SenderItemId string `json:"sender_item_id"`
|
|
//RecipientWallet string `json:"recipient_wallet"`
|
|
Amount PayoutAmount `json:"amount"`
|
|
//AlternateNotificationMethod PayoutPhone `json:"alternate_notification_method"`
|
|
//NotificationLanguage string `json:"notification_language"`
|
|
//ApplicationContext struct {
|
|
// SocialFeedPrivacy string `json:"social_feed_privacy"`
|
|
// HollerUrl string `json:"holler_url"`
|
|
// LogoUrl string `json:"logo_url"`
|
|
//} `json:"application_context"`
|
|
}
|
|
|
|
type PayoutRequest struct {
|
|
Items []PayoutItem `json:"items"`
|
|
SenderBatchHeader struct {
|
|
SenderBatchId string `json:"sender_batch_id"`
|
|
//RecipientType string `json:"recipient_type"`
|
|
//EmailSubject string `json:"email_subject"`
|
|
//EmailMessage string `json:"email_message"`
|
|
//Note string `json:"note"`
|
|
} `json:"sender_batch_header"`
|
|
}
|
|
|
|
type PayoutBatchHeader struct {
|
|
PayoutBatchId string `json:"payout_batch_id"`
|
|
TimeCreated string `json:"time_created"`
|
|
BatchStatus string `json:"batch_status"`
|
|
SenderBatchHeader struct {
|
|
SenderBatchId string `json:"sender_batch_id"`
|
|
EmailSubject string `json:"email_subject"`
|
|
EmailMessage string `json:"email_message"`
|
|
RecipientType string `json:"recipient_type"`
|
|
} `json:"sender_batch_header"`
|
|
}
|
|
|
|
type PayoutResponse struct {
|
|
Links []Link `json:"links"`
|
|
BatchHeader PayoutBatchHeader `json:"batch_header"`
|
|
}
|
|
|
|
type ShowPayoutsRequest struct {
|
|
Fields string `json:"fields"`
|
|
Page int `json:"page"`
|
|
PageSize int `json:"page_size"`
|
|
TotalRequired bool `json:"total_required"`
|
|
}
|
|
|