From eb6eb47336af2542f30ee19cfde352aa4ae03a90 Mon Sep 17 00:00:00 2001 From: japatel Date: Wed, 19 Nov 2014 12:15:35 -0600 Subject: [PATCH] Samples for All Invoice Operations including QR Code - Invoice search method is static now - Shipping Info has proper Phone Params - Small Changes to Image Class - Updated Sample Docs --- lib/PayPal/Api/Image.php | 7 +- lib/PayPal/Api/Invoice.php | 2 +- lib/PayPal/Api/InvoiceSearchResponse.php | 120 ++++ lib/PayPal/Api/InvoicingSearch.php | 849 ----------------------- lib/PayPal/Api/ShippingInfo.php | 2 + sample/doc/assets/behavior.js | 296 +++++++- sample/doc/invoice/CreateInvoice.html | 4 +- sample/doc/invoice/DeleteInvoice.html | 20 + sample/doc/invoice/ListInvoice.html | 2 +- sample/doc/invoice/RecordPayment.html | 30 + sample/doc/invoice/RecordRefund.html | 29 + sample/doc/invoice/RemindInvoice.html | 7 +- sample/doc/invoice/RetrieveQRCode.html | 27 + sample/doc/invoice/SearchInvoices.html | 27 + sample/doc/invoice/SendInvoice.html | 7 +- sample/doc/invoice/UpdateInvoice.html | 18 + sample/invoice/CreateInvoice.php | 4 +- sample/invoice/DeleteInvoice.php | 27 + sample/invoice/ListInvoice.php | 2 +- sample/invoice/RecordPayment.php | 39 ++ sample/invoice/RecordRefund.php | 38 + sample/invoice/RetrieveQRCode.php | 2 +- sample/invoice/SearchInvoices.php | 36 + sample/invoice/images/sample.png | Bin 0 -> 1679 bytes 24 files changed, 711 insertions(+), 884 deletions(-) create mode 100644 lib/PayPal/Api/InvoiceSearchResponse.php delete mode 100644 lib/PayPal/Api/InvoicingSearch.php create mode 100644 sample/doc/invoice/DeleteInvoice.html create mode 100644 sample/doc/invoice/RecordPayment.html create mode 100644 sample/doc/invoice/RecordRefund.html create mode 100644 sample/doc/invoice/RetrieveQRCode.html create mode 100644 sample/doc/invoice/SearchInvoices.html create mode 100644 sample/doc/invoice/UpdateInvoice.html create mode 100644 sample/invoice/DeleteInvoice.php create mode 100644 sample/invoice/RecordPayment.php create mode 100644 sample/invoice/RecordRefund.php create mode 100644 sample/invoice/SearchInvoices.php create mode 100644 sample/invoice/images/sample.png diff --git a/lib/PayPal/Api/Image.php b/lib/PayPal/Api/Image.php index 14109ce..fff9353 100644 --- a/lib/PayPal/Api/Image.php +++ b/lib/PayPal/Api/Image.php @@ -20,7 +20,7 @@ class Image extends PPModel * * @return $this */ - public function setImageBase64($imageBase64String) + public function setImage($imageBase64String) { $this->image = $imageBase64String; return $this; @@ -31,7 +31,7 @@ class Image extends PPModel * * @return string */ - public function getImageBase64() + public function getImage() { return $this->image; } @@ -40,6 +40,7 @@ class Image extends PPModel * Stores the Image to file * * @param string $name File Name + * @return string File name */ public function saveToFile($name = null) { @@ -48,7 +49,7 @@ class Image extends PPModel $name = uniqid() . '.png'; } // Save to File - file_put_contents($name, base64_decode($this->getImageBase64())); + file_put_contents($name, base64_decode($this->getImage())); return $name; } diff --git a/lib/PayPal/Api/Invoice.php b/lib/PayPal/Api/Invoice.php index 7768a14..1317160 100644 --- a/lib/PayPal/Api/Invoice.php +++ b/lib/PayPal/Api/Invoice.php @@ -1096,7 +1096,7 @@ class Invoice extends ResourceModel * @param PPRestCall $restCall is the Rest Call Service that is used to make rest calls * @return InvoiceSearchResponse */ - public function search($search, $apiContext = null, $restCall = null) + public static function search($search, $apiContext = null, $restCall = null) { ArgumentValidator::validate($search, 'search'); $payLoad = $search->toJSON(); diff --git a/lib/PayPal/Api/InvoiceSearchResponse.php b/lib/PayPal/Api/InvoiceSearchResponse.php new file mode 100644 index 0000000..9afda6a --- /dev/null +++ b/lib/PayPal/Api/InvoiceSearchResponse.php @@ -0,0 +1,120 @@ +total_count = $total_count; + return $this; + } + + /** + * Total number of invoices. + * + * @return int + */ + public function getTotalCount() + { + return $this->total_count; + } + + /** + * Total number of invoices. + * + * @deprecated Instead use setTotalCount + * + * @param int $total_count + * @return $this + */ + public function setTotal_count($total_count) + { + $this->total_count = $total_count; + return $this; + } + + /** + * Total number of invoices. + * @deprecated Instead use getTotalCount + * + * @return int + */ + public function getTotal_count() + { + return $this->total_count; + } + + /** + * List of invoices belonging to a merchant. + * + * @param \PayPal\Api\Invoice[] $invoices + * + * @return $this + */ + public function setInvoices($invoices) + { + $this->invoices = $invoices; + return $this; + } + + /** + * List of invoices belonging to a merchant. + * + * @return \PayPal\Api\Invoice[] + */ + public function getInvoices() + { + return $this->invoices; + } + + /** + * Append Invoices to the list. + * + * @param \PayPal\Api\Invoice $invoice + * @return $this + */ + public function addInvoice($invoice) + { + if (!$this->getInvoices()) { + return $this->setInvoices(array($invoice)); + } else { + return $this->setInvoices( + array_merge($this->getInvoices(), array($invoice)) + ); + } + } + + /** + * Remove Invoices from the list. + * + * @param \PayPal\Api\Invoice $invoice + * @return $this + */ + public function removeInvoice($invoice) + { + return $this->setInvoices( + array_diff($this->getInvoices(), array($invoice)) + ); + } + +} diff --git a/lib/PayPal/Api/InvoicingSearch.php b/lib/PayPal/Api/InvoicingSearch.php deleted file mode 100644 index 333d9ac..0000000 --- a/lib/PayPal/Api/InvoicingSearch.php +++ /dev/null @@ -1,849 +0,0 @@ -email = $email; - return $this; - } - - /** - * Initial letters of the email address. - * - * @return string - */ - public function getEmail() - { - return $this->email; - } - - /** - * Initial letters of the recipient's first name. - * - * @param string $recipient_first_name - * - * @return $this - */ - public function setRecipientFirstName($recipient_first_name) - { - $this->recipient_first_name = $recipient_first_name; - return $this; - } - - /** - * Initial letters of the recipient's first name. - * - * @return string - */ - public function getRecipientFirstName() - { - return $this->recipient_first_name; - } - - /** - * Initial letters of the recipient's first name. - * - * @deprecated Instead use setRecipientFirstName - * - * @param string $recipient_first_name - * @return $this - */ - public function setRecipient_first_name($recipient_first_name) - { - $this->recipient_first_name = $recipient_first_name; - return $this; - } - - /** - * Initial letters of the recipient's first name. - * @deprecated Instead use getRecipientFirstName - * - * @return string - */ - public function getRecipient_first_name() - { - return $this->recipient_first_name; - } - - /** - * Initial letters of the recipient's last name. - * - * @param string $recipient_last_name - * - * @return $this - */ - public function setRecipientLastName($recipient_last_name) - { - $this->recipient_last_name = $recipient_last_name; - return $this; - } - - /** - * Initial letters of the recipient's last name. - * - * @return string - */ - public function getRecipientLastName() - { - return $this->recipient_last_name; - } - - /** - * Initial letters of the recipient's last name. - * - * @deprecated Instead use setRecipientLastName - * - * @param string $recipient_last_name - * @return $this - */ - public function setRecipient_last_name($recipient_last_name) - { - $this->recipient_last_name = $recipient_last_name; - return $this; - } - - /** - * Initial letters of the recipient's last name. - * @deprecated Instead use getRecipientLastName - * - * @return string - */ - public function getRecipient_last_name() - { - return $this->recipient_last_name; - } - - /** - * Initial letters of the recipient's business name. - * - * @param string $recipient_business_name - * - * @return $this - */ - public function setRecipientBusinessName($recipient_business_name) - { - $this->recipient_business_name = $recipient_business_name; - return $this; - } - - /** - * Initial letters of the recipient's business name. - * - * @return string - */ - public function getRecipientBusinessName() - { - return $this->recipient_business_name; - } - - /** - * Initial letters of the recipient's business name. - * - * @deprecated Instead use setRecipientBusinessName - * - * @param string $recipient_business_name - * @return $this - */ - public function setRecipient_business_name($recipient_business_name) - { - $this->recipient_business_name = $recipient_business_name; - return $this; - } - - /** - * Initial letters of the recipient's business name. - * @deprecated Instead use getRecipientBusinessName - * - * @return string - */ - public function getRecipient_business_name() - { - return $this->recipient_business_name; - } - - /** - * The invoice number that appears on the invoice. - * - * @param string $number - * - * @return $this - */ - public function setNumber($number) - { - $this->number = $number; - return $this; - } - - /** - * The invoice number that appears on the invoice. - * - * @return string - */ - public function getNumber() - { - return $this->number; - } - - /** - * Status of the invoice. - * Valid Values: ["DRAFT", "SENT", "PAID", "MARKED_AS_PAID", "CANCELLED", "REFUNDED", "PARTIALLY_REFUNDED", "MARKED_AS_REFUNDED"] - * - * @param string $status - * - * @return $this - */ - public function setStatus($status) - { - $this->status = $status; - return $this; - } - - /** - * Status of the invoice. - * - * @return string - */ - public function getStatus() - { - return $this->status; - } - - /** - * Lower limit of total amount. - * - * @param \PayPal\Api\Currency $lower_total_amount - * - * @return $this - */ - public function setLowerTotalAmount($lower_total_amount) - { - $this->lower_total_amount = $lower_total_amount; - return $this; - } - - /** - * Lower limit of total amount. - * - * @return \PayPal\Api\Currency - */ - public function getLowerTotalAmount() - { - return $this->lower_total_amount; - } - - /** - * Lower limit of total amount. - * - * @deprecated Instead use setLowerTotalAmount - * - * @param \PayPal\Api\Currency $lower_total_amount - * @return $this - */ - public function setLower_total_amount($lower_total_amount) - { - $this->lower_total_amount = $lower_total_amount; - return $this; - } - - /** - * Lower limit of total amount. - * @deprecated Instead use getLowerTotalAmount - * - * @return \PayPal\Api\Currency - */ - public function getLower_total_amount() - { - return $this->lower_total_amount; - } - - /** - * Upper limit of total amount. - * - * @param \PayPal\Api\Currency $upper_total_amount - * - * @return $this - */ - public function setUpperTotalAmount($upper_total_amount) - { - $this->upper_total_amount = $upper_total_amount; - return $this; - } - - /** - * Upper limit of total amount. - * - * @return \PayPal\Api\Currency - */ - public function getUpperTotalAmount() - { - return $this->upper_total_amount; - } - - /** - * Upper limit of total amount. - * - * @deprecated Instead use setUpperTotalAmount - * - * @param \PayPal\Api\Currency $upper_total_amount - * @return $this - */ - public function setUpper_total_amount($upper_total_amount) - { - $this->upper_total_amount = $upper_total_amount; - return $this; - } - - /** - * Upper limit of total amount. - * @deprecated Instead use getUpperTotalAmount - * - * @return \PayPal\Api\Currency - */ - public function getUpper_total_amount() - { - return $this->upper_total_amount; - } - - /** - * Start invoice date. Date format yyyy-MM-dd z, as defined in [ISO8601](http://tools.ietf.org/html/rfc3339#section-5.6). - * - * @param string $start_invoice_date - * - * @return $this - */ - public function setStartInvoiceDate($start_invoice_date) - { - $this->start_invoice_date = $start_invoice_date; - return $this; - } - - /** - * Start invoice date. Date format yyyy-MM-dd z, as defined in [ISO8601](http://tools.ietf.org/html/rfc3339#section-5.6). - * - * @return string - */ - public function getStartInvoiceDate() - { - return $this->start_invoice_date; - } - - /** - * Start invoice date. Date format yyyy-MM-dd z, as defined in [ISO8601](http://tools.ietf.org/html/rfc3339#section-5.6). - * - * @deprecated Instead use setStartInvoiceDate - * - * @param string $start_invoice_date - * @return $this - */ - public function setStart_invoice_date($start_invoice_date) - { - $this->start_invoice_date = $start_invoice_date; - return $this; - } - - /** - * Start invoice date. Date format yyyy-MM-dd z, as defined in [ISO8601](http://tools.ietf.org/html/rfc3339#section-5.6). - * @deprecated Instead use getStartInvoiceDate - * - * @return string - */ - public function getStart_invoice_date() - { - return $this->start_invoice_date; - } - - /** - * End invoice date. Date format yyyy-MM-dd z, as defined in [ISO8601](http://tools.ietf.org/html/rfc3339#section-5.6). - * - * @param string $end_invoice_date - * - * @return $this - */ - public function setEndInvoiceDate($end_invoice_date) - { - $this->end_invoice_date = $end_invoice_date; - return $this; - } - - /** - * End invoice date. Date format yyyy-MM-dd z, as defined in [ISO8601](http://tools.ietf.org/html/rfc3339#section-5.6). - * - * @return string - */ - public function getEndInvoiceDate() - { - return $this->end_invoice_date; - } - - /** - * End invoice date. Date format yyyy-MM-dd z, as defined in [ISO8601](http://tools.ietf.org/html/rfc3339#section-5.6). - * - * @deprecated Instead use setEndInvoiceDate - * - * @param string $end_invoice_date - * @return $this - */ - public function setEnd_invoice_date($end_invoice_date) - { - $this->end_invoice_date = $end_invoice_date; - return $this; - } - - /** - * End invoice date. Date format yyyy-MM-dd z, as defined in [ISO8601](http://tools.ietf.org/html/rfc3339#section-5.6). - * @deprecated Instead use getEndInvoiceDate - * - * @return string - */ - public function getEnd_invoice_date() - { - return $this->end_invoice_date; - } - - /** - * Start invoice due date. Date format yyyy-MM-dd z, as defined in [ISO8601](http://tools.ietf.org/html/rfc3339#section-5.6). - * - * @param string $start_due_date - * - * @return $this - */ - public function setStartDueDate($start_due_date) - { - $this->start_due_date = $start_due_date; - return $this; - } - - /** - * Start invoice due date. Date format yyyy-MM-dd z, as defined in [ISO8601](http://tools.ietf.org/html/rfc3339#section-5.6). - * - * @return string - */ - public function getStartDueDate() - { - return $this->start_due_date; - } - - /** - * Start invoice due date. Date format yyyy-MM-dd z, as defined in [ISO8601](http://tools.ietf.org/html/rfc3339#section-5.6). - * - * @deprecated Instead use setStartDueDate - * - * @param string $start_due_date - * @return $this - */ - public function setStart_due_date($start_due_date) - { - $this->start_due_date = $start_due_date; - return $this; - } - - /** - * Start invoice due date. Date format yyyy-MM-dd z, as defined in [ISO8601](http://tools.ietf.org/html/rfc3339#section-5.6). - * @deprecated Instead use getStartDueDate - * - * @return string - */ - public function getStart_due_date() - { - return $this->start_due_date; - } - - /** - * End invoice due date. Date format yyyy-MM-dd z, as defined in [ISO8601](http://tools.ietf.org/html/rfc3339#section-5.6). - * - * @param string $end_due_date - * - * @return $this - */ - public function setEndDueDate($end_due_date) - { - $this->end_due_date = $end_due_date; - return $this; - } - - /** - * End invoice due date. Date format yyyy-MM-dd z, as defined in [ISO8601](http://tools.ietf.org/html/rfc3339#section-5.6). - * - * @return string - */ - public function getEndDueDate() - { - return $this->end_due_date; - } - - /** - * End invoice due date. Date format yyyy-MM-dd z, as defined in [ISO8601](http://tools.ietf.org/html/rfc3339#section-5.6). - * - * @deprecated Instead use setEndDueDate - * - * @param string $end_due_date - * @return $this - */ - public function setEnd_due_date($end_due_date) - { - $this->end_due_date = $end_due_date; - return $this; - } - - /** - * End invoice due date. Date format yyyy-MM-dd z, as defined in [ISO8601](http://tools.ietf.org/html/rfc3339#section-5.6). - * @deprecated Instead use getEndDueDate - * - * @return string - */ - public function getEnd_due_date() - { - return $this->end_due_date; - } - - /** - * Start invoice payment date. Date format yyyy-MM-dd z, as defined in [ISO8601](http://tools.ietf.org/html/rfc3339#section-5.6). - * - * @param string $start_payment_date - * - * @return $this - */ - public function setStartPaymentDate($start_payment_date) - { - $this->start_payment_date = $start_payment_date; - return $this; - } - - /** - * Start invoice payment date. Date format yyyy-MM-dd z, as defined in [ISO8601](http://tools.ietf.org/html/rfc3339#section-5.6). - * - * @return string - */ - public function getStartPaymentDate() - { - return $this->start_payment_date; - } - - /** - * Start invoice payment date. Date format yyyy-MM-dd z, as defined in [ISO8601](http://tools.ietf.org/html/rfc3339#section-5.6). - * - * @deprecated Instead use setStartPaymentDate - * - * @param string $start_payment_date - * @return $this - */ - public function setStart_payment_date($start_payment_date) - { - $this->start_payment_date = $start_payment_date; - return $this; - } - - /** - * Start invoice payment date. Date format yyyy-MM-dd z, as defined in [ISO8601](http://tools.ietf.org/html/rfc3339#section-5.6). - * @deprecated Instead use getStartPaymentDate - * - * @return string - */ - public function getStart_payment_date() - { - return $this->start_payment_date; - } - - /** - * End invoice payment date. Date format yyyy-MM-dd z, as defined in [ISO8601](http://tools.ietf.org/html/rfc3339#section-5.6). - * - * @param string $end_payment_date - * - * @return $this - */ - public function setEndPaymentDate($end_payment_date) - { - $this->end_payment_date = $end_payment_date; - return $this; - } - - /** - * End invoice payment date. Date format yyyy-MM-dd z, as defined in [ISO8601](http://tools.ietf.org/html/rfc3339#section-5.6). - * - * @return string - */ - public function getEndPaymentDate() - { - return $this->end_payment_date; - } - - /** - * End invoice payment date. Date format yyyy-MM-dd z, as defined in [ISO8601](http://tools.ietf.org/html/rfc3339#section-5.6). - * - * @deprecated Instead use setEndPaymentDate - * - * @param string $end_payment_date - * @return $this - */ - public function setEnd_payment_date($end_payment_date) - { - $this->end_payment_date = $end_payment_date; - return $this; - } - - /** - * End invoice payment date. Date format yyyy-MM-dd z, as defined in [ISO8601](http://tools.ietf.org/html/rfc3339#section-5.6). - * @deprecated Instead use getEndPaymentDate - * - * @return string - */ - public function getEnd_payment_date() - { - return $this->end_payment_date; - } - - /** - * Start invoice creation date. Date format yyyy-MM-dd z, as defined in [ISO8601](http://tools.ietf.org/html/rfc3339#section-5.6). - * - * @param string $start_creation_date - * - * @return $this - */ - public function setStartCreationDate($start_creation_date) - { - $this->start_creation_date = $start_creation_date; - return $this; - } - - /** - * Start invoice creation date. Date format yyyy-MM-dd z, as defined in [ISO8601](http://tools.ietf.org/html/rfc3339#section-5.6). - * - * @return string - */ - public function getStartCreationDate() - { - return $this->start_creation_date; - } - - /** - * Start invoice creation date. Date format yyyy-MM-dd z, as defined in [ISO8601](http://tools.ietf.org/html/rfc3339#section-5.6). - * - * @deprecated Instead use setStartCreationDate - * - * @param string $start_creation_date - * @return $this - */ - public function setStart_creation_date($start_creation_date) - { - $this->start_creation_date = $start_creation_date; - return $this; - } - - /** - * Start invoice creation date. Date format yyyy-MM-dd z, as defined in [ISO8601](http://tools.ietf.org/html/rfc3339#section-5.6). - * @deprecated Instead use getStartCreationDate - * - * @return string - */ - public function getStart_creation_date() - { - return $this->start_creation_date; - } - - /** - * End invoice creation date. Date format yyyy-MM-dd z, as defined in [ISO8601](http://tools.ietf.org/html/rfc3339#section-5.6). - * - * @param string $end_creation_date - * - * @return $this - */ - public function setEndCreationDate($end_creation_date) - { - $this->end_creation_date = $end_creation_date; - return $this; - } - - /** - * End invoice creation date. Date format yyyy-MM-dd z, as defined in [ISO8601](http://tools.ietf.org/html/rfc3339#section-5.6). - * - * @return string - */ - public function getEndCreationDate() - { - return $this->end_creation_date; - } - - /** - * End invoice creation date. Date format yyyy-MM-dd z, as defined in [ISO8601](http://tools.ietf.org/html/rfc3339#section-5.6). - * - * @deprecated Instead use setEndCreationDate - * - * @param string $end_creation_date - * @return $this - */ - public function setEnd_creation_date($end_creation_date) - { - $this->end_creation_date = $end_creation_date; - return $this; - } - - /** - * End invoice creation date. Date format yyyy-MM-dd z, as defined in [ISO8601](http://tools.ietf.org/html/rfc3339#section-5.6). - * @deprecated Instead use getEndCreationDate - * - * @return string - */ - public function getEnd_creation_date() - { - return $this->end_creation_date; - } - - /** - * Offset of the search results. - * - * @param \PayPal\Api\number $page - * - * @return $this - */ - public function setPage($page) - { - $this->page = $page; - return $this; - } - - /** - * Offset of the search results. - * - * @return \PayPal\Api\number - */ - public function getPage() - { - return $this->page; - } - - /** - * Page size of the search results. - * - * @param \PayPal\Api\number $page_size - * - * @return $this - */ - public function setPageSize($page_size) - { - $this->page_size = $page_size; - return $this; - } - - /** - * Page size of the search results. - * - * @return \PayPal\Api\number - */ - public function getPageSize() - { - return $this->page_size; - } - - /** - * Page size of the search results. - * - * @deprecated Instead use setPageSize - * - * @param \PayPal\Api\number $page_size - * @return $this - */ - public function setPage_size($page_size) - { - $this->page_size = $page_size; - return $this; - } - - /** - * Page size of the search results. - * @deprecated Instead use getPageSize - * - * @return \PayPal\Api\number - */ - public function getPage_size() - { - return $this->page_size; - } - - /** - * A flag indicating whether total count is required in the response. - * - * @param bool $total_count_required - * - * @return $this - */ - public function setTotalCountRequired($total_count_required) - { - $this->total_count_required = $total_count_required; - return $this; - } - - /** - * A flag indicating whether total count is required in the response. - * - * @return bool - */ - public function getTotalCountRequired() - { - return $this->total_count_required; - } - - /** - * A flag indicating whether total count is required in the response. - * - * @deprecated Instead use setTotalCountRequired - * - * @param bool $total_count_required - * @return $this - */ - public function setTotal_count_required($total_count_required) - { - $this->total_count_required = $total_count_required; - return $this; - } - - /** - * A flag indicating whether total count is required in the response. - * @deprecated Instead use getTotalCountRequired - * - * @return bool - */ - public function getTotal_count_required() - { - return $this->total_count_required; - } - -} diff --git a/lib/PayPal/Api/ShippingInfo.php b/lib/PayPal/Api/ShippingInfo.php index fb5533e..cc34993 100644 --- a/lib/PayPal/Api/ShippingInfo.php +++ b/lib/PayPal/Api/ShippingInfo.php @@ -14,6 +14,7 @@ use PayPal\Common\PPModel; * @property string first_name * @property string last_name * @property string business_name + * @property \PayPal\Api\Phone phone * @property \PayPal\Api\Address address */ class ShippingInfo extends PPModel @@ -166,6 +167,7 @@ class ShippingInfo extends PPModel * * * @param \PayPal\Api\Phone $phone + * @return $this */ public function setPhone($phone) { diff --git a/sample/doc/assets/behavior.js b/sample/doc/assets/behavior.js index 84e38cd..72151e9 100644 --- a/sample/doc/assets/behavior.js +++ b/sample/doc/assets/behavior.js @@ -576,6 +576,46 @@ f.event={add:function(a,c,d,e,g){var h,i,j,k,l,m,n,o,p,q,r,s;if(!(a.nodeType===3 ] } ] + }, { + "type": "file", + "data": { + "language": { + "nameMatchers": [{}, ".fbp"], + "pygmentsLexer": "php", + "singleLineComment": ["//"], + "ignorePrefix": "}", + "foldPrefix": "^", + "name": "PHP" + }, + "sourcePath": "/Users/japatel/Documents/workspace/Server-SDK/PayPal-PHP-SDK/sample/invoice/DeleteInvoice.php", + "projectPath": "invoice/DeleteInvoice.php", + "targetPath": "invoice/DeleteInvoice", + "pageTitle": "invoice/DeleteInvoice", + "title": "DeleteInvoice" + }, + "depth": 2, + "outline": [ + { + "type": "heading", + "data": { + "level": 1, + "title": "Delete Invoice Sample", + "slug": "delete-invoice-sample" + }, + "depth": 1, + "children": [ + { + "type": "heading", + "data": { + "level": 3, + "title": "Delete Invoice", + "slug": "delete-invoice" + }, + "depth": 3 + } + ] + } + ] }, { "type": "file", "data": { @@ -656,6 +696,102 @@ f.event={add:function(a,c,d,e,g){var h,i,j,k,l,m,n,o,p,q,r,s;if(!(a.nodeType===3 ] } ] + }, { + "type": "file", + "data": { + "language": { + "nameMatchers": [{}, ".fbp"], + "pygmentsLexer": "php", + "singleLineComment": ["//"], + "ignorePrefix": "}", + "foldPrefix": "^", + "name": "PHP" + }, + "sourcePath": "/Users/japatel/Documents/workspace/Server-SDK/PayPal-PHP-SDK/sample/invoice/RecordPayment.php", + "projectPath": "invoice/RecordPayment.php", + "targetPath": "invoice/RecordPayment", + "pageTitle": "invoice/RecordPayment", + "title": "RecordPayment" + }, + "depth": 2, + "outline": [ + { + "type": "heading", + "data": { + "level": 1, + "title": "Record Payment Sample", + "slug": "record-payment-sample" + }, + "depth": 1, + "children": [ + { + "type": "heading", + "data": { + "level": 3, + "title": "Record Object", + "slug": "record-object" + }, + "depth": 3 + }, { + "type": "heading", + "data": { + "level": 3, + "title": "Record Payment for Invoice", + "slug": "record-payment-for-invoice" + }, + "depth": 3 + } + ] + } + ] + }, { + "type": "file", + "data": { + "language": { + "nameMatchers": [{}, ".fbp"], + "pygmentsLexer": "php", + "singleLineComment": ["//"], + "ignorePrefix": "}", + "foldPrefix": "^", + "name": "PHP" + }, + "sourcePath": "/Users/japatel/Documents/workspace/Server-SDK/PayPal-PHP-SDK/sample/invoice/RecordRefund.php", + "projectPath": "invoice/RecordRefund.php", + "targetPath": "invoice/RecordRefund", + "pageTitle": "invoice/RecordRefund", + "title": "RecordRefund" + }, + "depth": 2, + "outline": [ + { + "type": "heading", + "data": { + "level": 1, + "title": "Record Refund Sample", + "slug": "record-refund-sample" + }, + "depth": 1, + "children": [ + { + "type": "heading", + "data": { + "level": 3, + "title": "Record Object", + "slug": "record-object" + }, + "depth": 3 + }, { + "type": "heading", + "data": { + "level": 3, + "title": "Record Refund for Invoice", + "slug": "record-refund-for-invoice" + }, + "depth": 3 + } + ] + } + ] }, { "type": "file", "data": { @@ -685,14 +821,6 @@ f.event={add:function(a,c,d,e,g){var h,i,j,k,l,m,n,o,p,q,r,s;if(!(a.nodeType===3 "depth": 1, "children": [ { - "type": "heading", - "data": { - "level": 3, - "title": "Retrieve Invoice", - "slug": "retrieve-invoice" - }, - "depth": 3 - }, { "type": "heading", "data": { "level": 3, @@ -712,6 +840,110 @@ f.event={add:function(a,c,d,e,g){var h,i,j,k,l,m,n,o,p,q,r,s;if(!(a.nodeType===3 ] } ] + }, { + "type": "file", + "data": { + "language": { + "nameMatchers": [{}, ".fbp"], + "pygmentsLexer": "php", + "singleLineComment": ["//"], + "ignorePrefix": "}", + "foldPrefix": "^", + "name": "PHP" + }, + "sourcePath": "/Users/japatel/Documents/workspace/Server-SDK/PayPal-PHP-SDK/sample/invoice/RetrieveQRCode.php", + "projectPath": "invoice/RetrieveQRCode.php", + "targetPath": "invoice/RetrieveQRCode", + "pageTitle": "invoice/RetrieveQRCode", + "title": "RetrieveQRCode" + }, + "depth": 2, + "outline": [ + { + "type": "heading", + "data": { + "level": 1, + "title": "Retrieve QR Code for Invoice Sample", + "slug": "retrieve-qr-code-for-invoice-sample" + }, + "depth": 1, + "children": [ + { + "type": "heading", + "data": { + "level": 3, + "title": "Retrieve QR Code of Sent Invoice", + "slug": "retrieve-qr-code-of-sent-invoice" + }, + "depth": 3 + }, { + "type": "heading", + "data": { + "level": 3, + "title": "Optionally Save to File", + "slug": "optionally-save-to-file" + }, + "depth": 3 + }, { + "type": "heading", + "data": { + "level": 3, + "title": "Show the Image", + "slug": "show-the-image" + }, + "depth": 3 + } + ] + } + ] + }, { + "type": "file", + "data": { + "language": { + "nameMatchers": [{}, ".fbp"], + "pygmentsLexer": "php", + "singleLineComment": ["//"], + "ignorePrefix": "}", + "foldPrefix": "^", + "name": "PHP" + }, + "sourcePath": "/Users/japatel/Documents/workspace/Server-SDK/PayPal-PHP-SDK/sample/invoice/SearchInvoices.php", + "projectPath": "invoice/SearchInvoices.php", + "targetPath": "invoice/SearchInvoices", + "pageTitle": "invoice/SearchInvoices", + "title": "SearchInvoices" + }, + "depth": 2, + "outline": [ + { + "type": "heading", + "data": { + "level": 1, + "title": "Search Invoices Sample", + "slug": "search-invoices-sample" + }, + "depth": 1, + "children": [ + { + "type": "heading", + "data": { + "level": 3, + "title": "Search Object", + "slug": "search-object" + }, + "depth": 3 + }, { + "type": "heading", + "data": { + "level": 3, + "title": "Search Invoices", + "slug": "search-invoices" + }, + "depth": 3 + } + ] + } + ] }, { "type": "file", "data": { @@ -744,16 +976,56 @@ f.event={add:function(a,c,d,e,g){var h,i,j,k,l,m,n,o,p,q,r,s;if(!(a.nodeType===3 "type": "heading", "data": { "level": 3, - "title": "Retrieve Invoice", - "slug": "retrieve-invoice" + "title": "Send Invoice", + "slug": "send-invoice" + }, + "depth": 3 + } + ] + } + ] + }, { + "type": "file", + "data": { + "language": { + "nameMatchers": [{}, ".fbp"], + "pygmentsLexer": "php", + "singleLineComment": ["//"], + "ignorePrefix": "}", + "foldPrefix": "^", + "name": "PHP" + }, + "sourcePath": "/Users/japatel/Documents/workspace/Server-SDK/PayPal-PHP-SDK/sample/invoice/UpdateInvoice.php", + "projectPath": "invoice/UpdateInvoice.php", + "targetPath": "invoice/UpdateInvoice", + "pageTitle": "invoice/UpdateInvoice", + "title": "UpdateInvoice" + }, + "depth": 2, + "outline": [ + { + "type": "heading", + "data": { + "level": 1, + "title": "Update Invoice Sample", + "slug": "update-invoice-sample" + }, + "depth": 1, + "children": [ + { + "type": "heading", + "data": { + "level": 3, + "title": "Update Invoice", + "slug": "update-invoice" }, "depth": 3 }, { "type": "heading", "data": { "level": 3, - "title": "Send Invoice", - "slug": "send-invoice" + "title": "Update Invoice", + "slug": "update-invoice" }, "depth": 3 } diff --git a/sample/doc/invoice/CreateInvoice.html b/sample/doc/invoice/CreateInvoice.html index 6a8bb11..b7303e6 100644 --- a/sample/doc/invoice/CreateInvoice.html +++ b/sample/doc/invoice/CreateInvoice.html @@ -75,10 +75,10 @@ detailed breakdown of invoice

$invoice->create($apiContext); } catch (Exception $ex) { - ResultPrinter::printError("Invoice Creation", "Invoice", null, $request, $ex); + ResultPrinter::printError("Create Invoice", "Invoice", null, $request, $ex); exit(1); } -ResultPrinter::printResult("Invoice Creation", "Invoice", $invoice->getId(), $request, $invoice); +ResultPrinter::printResult("Create Invoice", "Invoice", $invoice->getId(), $request, $invoice); return $invoice;
\ No newline at end of file diff --git a/sample/doc/invoice/DeleteInvoice.html b/sample/doc/invoice/DeleteInvoice.html new file mode 100644 index 0000000..6de371b --- /dev/null +++ b/sample/doc/invoice/DeleteInvoice.html @@ -0,0 +1,20 @@ +invoice/DeleteInvoice
invoice/DeleteInvoice.php
<?php

Delete Invoice Sample

+

This sample code demonstrate how you can delete +an invoice.

/** @var Invoice $invoice */ +$invoice = require 'CreateInvoice.php'; + +use PayPal\Api\Invoice; +use PayPal\Api\CancelNotification; + +try {

Delete Invoice

+

Delete invoice object by calling the +delete method +on the Invoice class by passing a valid +notification object +(See bootstrap.php for more on ApiContext)

$deleteStatus = $invoice->delete($apiContext); +} catch (Exception $ex) { + ResultPrinter::printError("Delete Invoice", "Invoice", null, $deleteStatus, $ex); + exit(1); +} + +ResultPrinter::printResult("Delete Invoice", "Invoice", $invoice->getId(), null, null);
\ No newline at end of file diff --git a/sample/doc/invoice/ListInvoice.html b/sample/doc/invoice/ListInvoice.html index c28bcb0..465c799 100644 --- a/sample/doc/invoice/ListInvoice.html +++ b/sample/doc/invoice/ListInvoice.html @@ -8,7 +8,7 @@ all invoice from history.

Retrieve the Invoice History object by calling the static get_all method on the Invoice class. Refer the method doc for valid values for keys -(See bootstrap.php for more on ApiContext)

$invoices = Invoice::get_all($apiContext); +(See bootstrap.php for more on ApiContext)

$invoices = Invoice::getAll(array('page' => 0, 'page_size' => 4, 'total_count_required' => "true"), $apiContext); } catch (Exception $ex) { ResultPrinter::printError("Lookup Invoice History", "Invoice", null, null, $ex); exit(1); diff --git a/sample/doc/invoice/RecordPayment.html b/sample/doc/invoice/RecordPayment.html new file mode 100644 index 0000000..201afc1 --- /dev/null +++ b/sample/doc/invoice/RecordPayment.html @@ -0,0 +1,30 @@ +invoice/RecordPayment
invoice/RecordPayment.php
<?php

Record Payment Sample

+

This sample code demonstrate how you can record +an invoice as paid.

/** @var Invoice $invoice */ +$invoice = require 'SendInvoice.php'; + +use PayPal\Api\Invoice; +use PayPal\Api\PaymentDetail; + +try {

Record Object

+

Create a PaymentDetail object, and fill in the required fields +You can use the new way of injecting json directly to the object.

$record = new PaymentDetail( + '{ + "method" : "CASH", + "date" : "2014-07-06 03:30:00 PST", + "note" : "Cash received." + }' + );

Record Payment for Invoice

+

Record a payment on invoice object by calling the +recordPayment method +on the Invoice class by passing a valid +notification object +(See bootstrap.php for more on ApiContext)

$recordStatus = $invoice->recordPayment($record, $apiContext); +} catch (Exception $ex) { + ResultPrinter::printError("Payment for Invoice", "Invoice", null, $recordStatus, $ex); + exit(1); +} + +ResultPrinter::printResult("Payment for Invoice", "Invoice", $invoice->getId(), $record, null); + +return $invoice;
\ No newline at end of file diff --git a/sample/doc/invoice/RecordRefund.html b/sample/doc/invoice/RecordRefund.html new file mode 100644 index 0000000..effcc4e --- /dev/null +++ b/sample/doc/invoice/RecordRefund.html @@ -0,0 +1,29 @@ +invoice/RecordRefund
invoice/RecordRefund.php
<?php

Record Refund Sample

+

This sample code demonstrate how you can record +an invoice as refunded.

/** @var Invoice $invoice */ +$invoice = require 'RecordPayment.php'; + +use PayPal\Api\Invoice; +use PayPal\Api\RefundDetail; + +try {

Record Object

+

Create a RefundDetail object, and fill in the required fields +You can use the new way of injecting json directly to the object.

$refund = new RefundDetail( + '{ + "date" : "2014-07-06 03:30:00 PST", + "note" : "Refund provided by cash." + }' + );

Record Refund for Invoice

+

Record a refund on invoice object by calling the +recordRefund method +on the Invoice class by passing a valid +notification object +(See bootstrap.php for more on ApiContext)

$refundStatus = $invoice->recordRefund($refund, $apiContext); +} catch (Exception $ex) { + ResultPrinter::printError("Refund for Invoice", "Invoice", null, $refundStatus, $ex); + exit(1); +} + +ResultPrinter::printResult("Refund for Invoice", "Invoice", $invoice->getId(), $refund, null); + +return $invoice;
\ No newline at end of file diff --git a/sample/doc/invoice/RemindInvoice.html b/sample/doc/invoice/RemindInvoice.html index de012dc..69b3eeb 100644 --- a/sample/doc/invoice/RemindInvoice.html +++ b/sample/doc/invoice/RemindInvoice.html @@ -6,12 +6,7 @@ an invoice to the payer

use PayPal\Api\Invoice; use PayPal\Api\Notification; -try {

Retrieve Invoice

-

Retrieve the invoice object by calling the -static get method -on the Invoice class by passing a valid -Invoice ID -(See bootstrap.php for more on ApiContext)

$invoice = Invoice::get($invoice->getId(), $apiContext);

Notification Object

+try {

Notification Object

This would send a notification to both merchant as well the payer. The information of merchant and payer is retrieved from the invoice details

$notify = new Notification(); diff --git a/sample/doc/invoice/RetrieveQRCode.html b/sample/doc/invoice/RetrieveQRCode.html new file mode 100644 index 0000000..aa1771e --- /dev/null +++ b/sample/doc/invoice/RetrieveQRCode.html @@ -0,0 +1,27 @@ +invoice/RetrieveQRCode
invoice/RetrieveQRCode.php
<?php

Retrieve QR Code for Invoice Sample

+

Specify an invoice ID to get a QR code (image) that corresponds to the invoice ID. A QR code for an invoice can be added to a paper or PDF invoice. When a customer uses their mobile device to scan the QR code, the customer is redirected to the PayPal mobile payment flow, where they can pay online with PayPal or a credit card.

/** @var Invoice $invoice */ +$invoice = require 'SendInvoice.php'; + +use PayPal\Api\Invoice; +use PayPal\Api\Notification; + +try {

Retrieve QR Code of Sent Invoice

+

Retrieve QR Code of Sent Invoice by calling the +qrCode method +on the Invoice class by passing a valid +notification object +(See bootstrap.php for more on ApiContext)

$image = Invoice::qrCode($invoice->getId(), array('height' => '300', 'width' => '300'), $apiContext);

Optionally Save to File

+

This is not a required step. However, if you want to store this image as a file, you can use +'saveToFile' method with proper file name. +This will save the image as /samples/invoice/images/sample.png

$path = $image->saveToFile("images/sample.png"); + + +} catch (Exception $ex) { + ResultPrinter::printError("Retrieved QR Code for Invoice", "Invoice", $invoice->getId(), null, $ex); + exit(1); +} + +ResultPrinter::printResult("Retrieved QR Code for Invoice", "Invoice", $invoice->getId(), null, $image);

Show the Image

+

In PHP, there are many ways to present an images. +One of the ways, you could directly inject the base64-encoded string +with proper image information in front of it.

echo '<img src="data:image/png;base64,'. $image->getImage() . '" alt="Invoice QR Code" />';
\ No newline at end of file diff --git a/sample/doc/invoice/SearchInvoices.html b/sample/doc/invoice/SearchInvoices.html new file mode 100644 index 0000000..b458d8c --- /dev/null +++ b/sample/doc/invoice/SearchInvoices.html @@ -0,0 +1,27 @@ +invoice/SearchInvoices
invoice/SearchInvoices.php
<?php

Search Invoices Sample

+

This sample code demonstrate how you can +search invoices from history.

/** @var Invoice $invoice */ +$invoice = require 'CreateInvoice.php'; +use PayPal\Api\Invoice; +use PayPal\Api\Search; + +try {

Search Object

+

Fill up your search criteria for Invoice search. +Using the new way to inject raw json string to constructor

$search = new Search( + '{ + "start_invoice_date" : "2010-05-10 PST", + "end_invoice_date" : "2019-05-11 PST", + "page" : 1, + "page_size" : 20, + "total_count_required" : true + }' + );

Search Invoices

+

Retrieve the Invoice History object by calling the +static search method on the Invoice class. +Refer the method doc for valid values for keys +(See bootstrap.php for more on ApiContext)

$invoices = Invoice::search($search, $apiContext); +} catch (Exception $ex) { + ResultPrinter::printError("Search Invoice", "Invoice", null, null, $ex); + exit(1); +} +ResultPrinter::printResult("Search Invoice", "Invoice", null, $search, $invoices);
\ No newline at end of file diff --git a/sample/doc/invoice/SendInvoice.html b/sample/doc/invoice/SendInvoice.html index 709990c..95c50aa 100644 --- a/sample/doc/invoice/SendInvoice.html +++ b/sample/doc/invoice/SendInvoice.html @@ -5,12 +5,7 @@ a legitimate invoice to the payer

use PayPal\Api\Invoice; -try {

Retrieve Invoice

-

Retrieve the invoice object by calling the -static get method -on the Invoice class by passing a valid -Invoice ID -(See bootstrap.php for more on ApiContext)

$invoice = Invoice::get($invoice->getId(), $apiContext);

Send Invoice

+try {

Send Invoice

Send a legitimate invoice to the payer with a valid ApiContext (See bootstrap.php for more on ApiContext)

$sendStatus = $invoice->send($apiContext); } catch (Exception $ex) { diff --git a/sample/doc/invoice/UpdateInvoice.html b/sample/doc/invoice/UpdateInvoice.html new file mode 100644 index 0000000..888a2dd --- /dev/null +++ b/sample/doc/invoice/UpdateInvoice.html @@ -0,0 +1,18 @@ +invoice/UpdateInvoice
invoice/UpdateInvoice.php
<?php

Update Invoice Sample

+

This sample code demonstrate how you can update +an invoice.

/** @var Invoice $invoice */ +$invoice = require 'CreateInvoice.php'; +use PayPal\Api\Invoice;

Update Invoice

+

Lets update some information

$invoice->setInvoiceDate("2014-11-16 PST");

For Sample Purposes Only.

$request = clone $invoice; + +try {

Update Invoice

+

Update an invoice by calling the invoice->update() method +with a valid ApiContext (See bootstrap.php for more on ApiContext)

$invoice->update($apiContext); +} catch (Exception $ex) { + ResultPrinter::printError("Invoice Updated", "Invoice", null, $request, $ex); + exit(1); +} + +ResultPrinter::printResult("Invoice Updated", "Invoice", $invoice->getId(), $request, $invoice); + +return $invoice;
\ No newline at end of file diff --git a/sample/invoice/CreateInvoice.php b/sample/invoice/CreateInvoice.php index 2cd9e3f..8b50721 100644 --- a/sample/invoice/CreateInvoice.php +++ b/sample/invoice/CreateInvoice.php @@ -102,10 +102,10 @@ try { // with a valid ApiContext (See bootstrap.php for more on `ApiContext`) $invoice->create($apiContext); } catch (Exception $ex) { - ResultPrinter::printError("Invoice Creation", "Invoice", null, $request, $ex); + ResultPrinter::printError("Create Invoice", "Invoice", null, $request, $ex); exit(1); } -ResultPrinter::printResult("Invoice Creation", "Invoice", $invoice->getId(), $request, $invoice); +ResultPrinter::printResult("Create Invoice", "Invoice", $invoice->getId(), $request, $invoice); return $invoice; diff --git a/sample/invoice/DeleteInvoice.php b/sample/invoice/DeleteInvoice.php new file mode 100644 index 0000000..2c5a392 --- /dev/null +++ b/sample/invoice/DeleteInvoice.php @@ -0,0 +1,27 @@ +delete($apiContext); +} catch (Exception $ex) { + ResultPrinter::printError("Delete Invoice", "Invoice", null, $deleteStatus, $ex); + exit(1); +} + +ResultPrinter::printResult("Delete Invoice", "Invoice", $invoice->getId(), null, null); diff --git a/sample/invoice/ListInvoice.php b/sample/invoice/ListInvoice.php index 0bcb91f..d3f338b 100644 --- a/sample/invoice/ListInvoice.php +++ b/sample/invoice/ListInvoice.php @@ -14,7 +14,7 @@ try { // static `get_all` method on the Invoice class. // Refer the method doc for valid values for keys // (See bootstrap.php for more on `ApiContext`) - $invoices = Invoice::getAll(array('page' => 0, 'page_size' => 4, 'total_count_required' => true), $apiContext); + $invoices = Invoice::getAll(array('page' => 0, 'page_size' => 4, 'total_count_required' => "true"), $apiContext); } catch (Exception $ex) { ResultPrinter::printError("Lookup Invoice History", "Invoice", null, null, $ex); exit(1); diff --git a/sample/invoice/RecordPayment.php b/sample/invoice/RecordPayment.php new file mode 100644 index 0000000..6bd2a97 --- /dev/null +++ b/sample/invoice/RecordPayment.php @@ -0,0 +1,39 @@ +recordPayment($record, $apiContext); +} catch (Exception $ex) { + ResultPrinter::printError("Payment for Invoice", "Invoice", null, $recordStatus, $ex); + exit(1); +} + +ResultPrinter::printResult("Payment for Invoice", "Invoice", $invoice->getId(), $record, null); + +return $invoice; diff --git a/sample/invoice/RecordRefund.php b/sample/invoice/RecordRefund.php new file mode 100644 index 0000000..48f2d57 --- /dev/null +++ b/sample/invoice/RecordRefund.php @@ -0,0 +1,38 @@ +recordRefund($refund, $apiContext); +} catch (Exception $ex) { + ResultPrinter::printError("Refund for Invoice", "Invoice", null, $refundStatus, $ex); + exit(1); +} + +ResultPrinter::printResult("Refund for Invoice", "Invoice", $invoice->getId(), $refund, null); + +return $invoice; diff --git a/sample/invoice/RetrieveQRCode.php b/sample/invoice/RetrieveQRCode.php index ee82eb2..e1bd78b 100644 --- a/sample/invoice/RetrieveQRCode.php +++ b/sample/invoice/RetrieveQRCode.php @@ -37,5 +37,5 @@ ResultPrinter::printResult("Retrieved QR Code for Invoice", "Invoice", $invoice- // In PHP, there are many ways to present an images. // One of the ways, you could directly inject the base64-encoded string // with proper image information in front of it. -echo 'Invoice QR Code'; +echo 'Invoice QR Code'; diff --git a/sample/invoice/SearchInvoices.php b/sample/invoice/SearchInvoices.php new file mode 100644 index 0000000..155e048 --- /dev/null +++ b/sample/invoice/SearchInvoices.php @@ -0,0 +1,36 @@ +s z|No_LyfS?oR~f0^i!V1Zd9g9T@bl~KOEUJyFmXC@I(Z6s33xRHGzAE?2(?U7n4&O+ zWg*K#6%JJnRYwg+4HA`nxZf}JHa&gE&)b{B|6MVk|I6q0tp))n4#gI9;?QPq#p*Tl z@6NOQF#G=HZ3}K+W5ZAb)>n4OVymuQ`Ioa756Lu3%g-v#X2xco6G!~63pb-Hl$XB= zZAG^Xs$p};vuSsGyT4vdcH~f$fGL96+r;?L?vT!p;OBdGT5JM(VZ-i1S?o4F{GVeu zUyJ){y4o>*uybnJoH#%j>`fTsZ0`4bzNk&o-&MQ!<=x!D0<}*A8W;5psCvj^R7U!AeLZT9}Z z8{3(%2B!S~{flp=nr|1`)NS`WXe%QpR#gIdd7yG z2aCFgrQ6kaYtENd$+2tL)GUuxjbe_&4Ks!tdlDlhmalvD%(?j89Bf7@wroh8nELU~ z4iU5XPxE%4a}&Yp#kyRViLtY0_fOiE=o~#eoCkYy$ak#BlD67?WV8PI{CS`6q(8%z zl+ALS(~nE!>Wh8Pzw^C+t^yW60v$H_&K3PY?X06_M0d>YU;E}eR#hAi|1GQeU-nJi`+H}clllcHiv@$p&F7jk)i z$(PMm7RDB&9EyLW4(;4{@J{}DK95cN_m=fAVv9w^me2>!>yAGA_Un#h9xz>p%V7_& z<%v1dV#{XVpHr)GhPU+DIqc3StI#G?^#97PXINVyHEF`dqt}5I4TGnvpUXO@geCyL CGBBk8 literal 0 HcmV?d00001