PayPalPaymentObject
The setupPayPal method can be used to either:
- Create a PayPal Order (capture or authorization)
- Create a PayPal Billing Agreement (subscription)
Create a PayPal Order
Attribute | Type | Description | Required/Optional |
---|---|---|---|
paymentIntent | PaymentIntent | required | |
paymentMethod | OrderPaymentMethod | required |
OrderPaymentMethod
Attribute | Type | Description | Required/Optional |
---|---|---|---|
type | String | value: paypal_order | required |
data.intent | String | Possible values: capture, authorize | required |
data.options | OrderOptions | Merchant specific options | |
data.purchases | Array[OrderPurchase] | Purchase items & amounts Note: Currently, only 1 purchase is acceptable | required |
OrderOptions
Attribute | Type | Description | Required/Optional |
---|---|---|---|
brandName | String | The name of the brand | |
payeePreferredPayment | String | Possible values: UNRESTRICTED, IMMEDIATE_PAYMENT_REQUIRED | |
locale | String | en_US, ko_KR | |
landingPage | String | Possible values: LOGIN, BILLING, NO_PREFERENCE | |
shippingPreference | String | Possible values: NO_SHIPPING, SET_PROVIDED_ADDRESS GET_FROM_FILE |
OrderPurchase
Attribute | Type | Description | Required/Optional |
---|---|---|---|
description | String | The purchase description | |
softDescriptor | String | The soft descriptor is the dynamic text used to construct the statement descriptor that appears on a payer's card statement | |
amount | PurchaseAmount | required | |
items | Array[PurchaseItem] | ||
shippingAddress | required if shippingPreference != SET_PROVIDED_ADDRES | ||
shippingAddress.method | String | A name for the shipping method | |
shippingAddress.address | ShippingAddress | Shipping address provide by the merchant | required |
PurchaseAmount
Note: All amount values should be in the smallest currency unit (eg., 100 to charge $1.00, or 100 to Charge ¥100, a zero decimal currency).
Attribute | Type | Description | Required/Optional |
---|---|---|---|
itemTotal | Integer | The total purchase amount | required if request includes items[].unitAmount |
taxTotal | Integer | The total tax for all items | required if request includes items[].tax |
shipping | Integer | The shipping fee for all items | |
handling | Integer | The handling fee for all items | |
insurance | Integer | The insurance fee for all item | |
discount | Integer | The discount for all item | |
shippingDiscount | Integer | The shipping discount for all items |
PurchaseItem
Attribute | Type | Description | Required/Optional |
---|---|---|---|
name | String | The item name | required |
qty | Integer | The item quantity | required |
unitAmount | Integer | The item price, in the smallest currency unit (eg., 100 to charge $1.00, or 100 to Charge ¥100, a zero decimal currency) | required |
tax | Integer | The item tax | |
category | String | The item category type Possible values: DIGITAL_GOODS, PHYSICAL_GOODS | |
sku | String | The stock keeping unit (SKU) for the item | |
description | String | The item description |
ShippingAddress
Attribute | Type | Description | Required/Optional |
---|---|---|---|
firstName | String | User's first name | |
lastName | String | User's last name | |
address_1 | String | User's address line 1 | |
address_2 | String | User's address line 2 | |
city | String | User's city | required |
state | String | User's state | |
country | String | User's country | required |
postcode | String | User's postcode | required |
Note: Please refer to our documentation for more information on how to calculate the verification HMAC. Alternatively refer to PaymentIntent.
(Pseudo code) verification = hmac_md5(shared_secret, "reference:amount:currency")
var fz = new FatZebra({
username: MERCHANT_USERNAME,
})
const capturePayment = {
paymentIntent: {
payment: {
reference: reference, // merchant-generated reference
amount: 12000,
currency: "AUD",
},
verification: verification
},
paymentMethod: {
type: "paypal_order",
data: {
intent: "capture", // "capture" | "authorize"
options: {
brandName: "EXAMPLE INC",
landingPage: "NO_PREFERENCE", // "BILLING", "LOGIN"
payeePreferredPayment: "UNRESTRICTED" // "IMMEDIATE_PAYMENT_REQUIRED"
},
purchases: [
{
description: "Sporting Goods",
softDescriptor: "HighFashions",
amount: {
itemTotal: 9000,
shipping: 2000,
taxTotal: 1000
},
items: [
{
name: "T-Shirt",
unitAmount: 9000,
tax: 1000,
qty: 1,
sku: "sku01",
category: "PHYSICAL_GOODS" // "DIGITAL_GOODS"
}
],
shipping_address: {
method: "United States Postal Service 1",
address: {
firstName: "John",
lastName: "Doe",
address_1: "100 Kent Street",
address_2: "Cafe Lane",
city: "Sydney",
state: "NSW",
postcode: "2000",
country: "AU"
}
}
}
]
}
}
}
// This method should be called after setting event listeners!
fz.setupPayPal({
currency: "AUD",
payment: capturePayment,
clientId: MERCHANT_PAYPAL_CLIENT_ID,
containerId: "paypal-button-container"
})
Create a PayPal Billing Agreement
Attribute | Type | Description | Required/Optional |
---|---|---|---|
paymentMethod | BillingAgreementPaymentMethod | Includes required data for a fulfilling PayPal flow | required |
BillingAgreementPaymentMethod
Attribute | Type | Description | Required/Optional |
---|---|---|---|
type | String | value: paypal_billing | required |
data.name | String | A name for the Billing Agreement | |
data.description | String | A description for the Billing Agreement | |
data.shippingAddress | ShippingAddress | Shipping address provided by the merchant | required |
data.merchantCustomData | String | Merchant specific data, e.g. a UUID |
ShippingAdress
Attribute | Type | Description | Required/Optional |
---|---|---|---|
firstName | String | User's first name | |
lastName | String | User's last name | |
address_1 | String | User's address line 1 | required |
address_2 | String | User's address line 2 | |
city | String | User's city | required |
state | String | User's state | required |
country | String | User's country | required |
postcode | String | User's postcode | required |
const billingAgreementPayment = {
paymentMethod: {
type: "paypal_billing",
data: {
name: "Sample Billing Agreement",
description: "Stored PayPal account",
shippingAddress: {
firstName: "John",
lastName: "Doe",
address_1: "100 Kent Street",
address_2: "Cafe Lane",
city: "Sydney",
state: "NSW",
postcode: "2000",
country: "AU",
},
merchantCustomData: "UUID"
}
}
}
// This method should be called after setting event listeners!
fz.setupPayPal({
currency: "AUD",
payment: billingAgreementPayment,
containerId: "paypal-button-container"
})
Updated about 1 year ago