Busine...eckout(3pm)

πŸ“¦
version 0.77 Β· 5 versions
, in ubuntu noble, ubuntu resolute, ubuntu stonking

πŸ’– Business::PayPal::API::ExpressCheckout β€” the 3pm page, but make it cute πŸ’–

okay bestie so you wanna take money over the internet with PayPal's Express Checkout and you're writing Perl?? first of all, iconic. second, this is literally version 0.77 of Business::PayPal::API::ExpressCheckout and I'm gonna walk you through every single thing it does. no skimming, no skipping, we go through ALL of it. grab a beverage. πŸ“


✨ NAME ✨

Business::PayPal::API::ExpressCheckout β€” it's the PayPal Express Checkout API. that's the whole vibe. πŸ’…


🌸 VERSION 🌸

version 0.77


πŸ¦‹ SYNOPSIS πŸ¦‹

here's the lil sneak peek of what using this thing actually looks like:

  use Business::PayPal::API::ExpressCheckout;

  ## see Business::PayPal::API documentation for parameters
  my $pp = Business::PayPal::API::ExpressCheckout->new( ... );

  my %resp = $pp->SetExpressCheckout
               ( OrderTotal => '55.43',   ## defaults to USD
                 ReturnURL  => 'http://site.tld/return.html',
                 CancelURL  => 'http://site.tld/cancellation.html', );

  ... time passes, buyer validates the token with PayPal ...

  my %details = $pp->GetExpressCheckoutDetails($resp{Token});

  ## now ask PayPal to xfer the money
  my %payinfo = $pp->DoExpressCheckoutPayment( Token => $details{Token},
                                               PaymentAction => 'Sale',
                                               PayerID => $details{PayerID},
                                               OrderTotal => '55.43' );

see like β€” you set it up, the buyer goes off and does buyer things with PayPal, time passes (... time passes, buyer validates the token with PayPal ...), and then you ask PayPal to xfer the money. main character arc honestly. ✨


πŸ’œ DESCRIPTION πŸ’œ

Business::PayPal::API::ExpressCheckout implements PayPal's Express Checkout API using SOAP::Lite to make direct API calls to PayPal's SOAP API server. it ALSO implements support for testing via PayPal's sandbox β€” so yes you can rehearse before you go live, we love a rehearsal. πŸ’…

please see Business::PayPal::API for details on using the PayPal sandbox, okay? 🫢


πŸ’« SetExpressCheckout πŸ’«

this one implements PayPal's "Website Payment Pro" SetExpressCheckout API call. the supported parameters include:

  Token
  OrderTotal
  currencyID
  MaxAmount
  OrderDescription
  Custom
  InvoiceID
  ReturnURL
  CancelURL
  Address
  ReqConfirmShipping
  NoShipping
  AddressOverride
  LocaleCode
  PageStyle
  'cpp-header-image'
  'cpp-header-border-color'
  'cpp-header-back-color'
  'cpp-payflow-color'
  PaymentAction
  BuyerEmail
  BillingType
  BillingAgreementDescription
  PaymentType
  BillingAgreementCustom

...as described in the PayPal "Web Services API Reference" document. and listen β€” the default currency setting is 'USD' if you don't specify otherwise. ✨

it returns a hash containing a 'Token' key, whose value represents the PayPal transaction token. that token is your lil golden ticket, remember it. πŸŽ€

Required fields:

  OrderTotal, ReturnURL, CancelURL.

like so:

    my %resp = $pp->SetExpressCheckout();
    my $token = $resp{Token};

Example (courtesy Ollie Ready β€” shoutout Ollie!! πŸ‘‘):

  my $address = {
        Name            =>      'Some Customer',
        Street1         =>      '888 Test St.',
        Street2         =>      'Suite 9',
        CityName        =>      'San Diego',
        StateOrProvince =>      'CA',
        PostalCode      =>      '92111',
        Country         =>      'US',
        Phone           =>      '123-123-1234',
  };

  my %response = $pp->SetExpressCheckout(
        OrderTotal      =>      '11.01',
        ReturnURL       =>      '<![CDATA[http://example.com/p?cmd=checkout]]>',
        CancelURL       =>      'http://example.com',
        PaymentAction   =>      'Authorization',
        AddressOverride =>      1,
        Address         =>      $address,
  );

🧚 GetExpressCheckoutDetails 🧚

this implements PayPal's WPP SetExpressCheckout API call. (yes same name, that's just what the docs say, don't @ me. 😭) supported parameters include:

  Token

...as described in the PayPal "Web Services API Reference" document. and this is literally the same token you received from SetExpressCheckout. same token, bestie. 🫢

it returns a hash with the following keys:

  Token
  Custom
  InvoiceID
  ContactPhone
  Payer
  PayerID
  PayerStatus
  FirstName
  LastName
  PayerBusiness
  AddressStatus
  Name
  Street1
  Street2
  CityName
  StateOrProvince
  PostalCode
  Country

Required fields:

  Token

🌈 DoExpressCheckoutPayment 🌈

this implements PayPal's WPP SetExpressCheckout API call. supported parameters include:

  Token
  PaymentAction (defaults to 'Sale' if not supplied)
  PayerID
  currencyID (defaults to 'USD' if not supplied)

  OrderTotal
  OrderDescription
  ItemTotal
  ShippingTotal
  HandlingTotal
  TaxTotal
  Custom
  InvoiceID
  ButtonSource
  NotifyURL

  ST_Name
  ST_Street1
  ST_Street2
  ST_CityName
  ST_StateOrProvince
  ST_Country
  ST_PostalCode

  PDI_Name
  PDI_Amount
  PDI_Number
  PDI_Quantity
  PDI_Tax

...as described in the PayPal "Web Services API Reference" document. πŸ’…

it returns a hash with the following keys:

  Token
  TransactionID
  TransactionType
  PaymentType
  PaymentDate
  GrossAmount
  FeeAmount
  SettleAmount
  TaxAmount
  ExchangeRate
  PaymentStatus
  PendingReason
  BillingAgreementID (if BillingType 'MerchantInitiatedBilling'
                      was specified during SetExpressCheckout)

Required fields:

  Token, PayerID, OrderTotal

πŸ”₯ ERROR HANDLING πŸ”₯

see the ERROR HANDLING section of Business::PayPal::API for information on handling errors. when things go sideways, that's where you go. 😭


πŸŽ€ EXAMPLES πŸŽ€

Andy Spiegl <paypalcheckout.Spiegl@kascada.com> has kindly donated some example code (in German πŸ‡©πŸ‡ͺ) which may be found in the eg directory of this archive. additional code examples may be found in the t test directory. thank you Andy, you ate. πŸ‘‘


⭐ EXPORT ⭐

None by default. (nothing, zero, nada β€” you import what you want. independent queen energy. πŸ’…)


πŸ‘‘ SEE ALSO πŸ‘‘

SOAP::Lite, Business::PayPal::API, <https://www.paypal.com/IntegrationCenter/ic_expresscheckout.html>, <https://developer.paypal.com/en_US/pdf/PP_APIReference.pdf>


πŸ’– AUTHORS πŸ’–

  • Scott Wiersdorf <scott@perlcode.org>
  • Danny Hembree <danny@dynamical.org>
  • Bradley M. Kuhn <bkuhn@ebb.org>

This software is copyright (c) 2006-2017 by Scott Wiersdorf, Danny Hembree, Bradley M. Kuhn.

This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself. 🫢 (free software rights, we respect them here.)


and that's the whole page bestie, no cap. ✨ this was perl v5.36.0, dated 2022-08-28, from your girl Busine...eckout(3pm) πŸ’… go get that bag, fr fr. πŸ’–πŸ¦‹πŸŽ€

πŸ“¦ where this page comes from