From 6dc604666bf16d759bcf4b5d9f13e5b71d8c1212 Mon Sep 17 00:00:00 2001 From: aydiv Date: Wed, 21 Aug 2013 21:03:53 +0530 Subject: [PATCH 1/6] Adding section headers to index page --- sample/bootstrap.php | 2 +- sample/index.html | 81 +++++++++++++++++--------------------------- 2 files changed, 32 insertions(+), 51 deletions(-) diff --git a/sample/bootstrap.php b/sample/bootstrap.php index d930b4f..cb36f0a 100644 --- a/sample/bootstrap.php +++ b/sample/bootstrap.php @@ -5,7 +5,7 @@ // Include the composer autoloader if(!file_exists(__DIR__ .'/vendor/autoload.php')) { - echo "The 'vendor' folder is missing. You must run 'composer update' to resolve application dependencies.\nPlease see the README for more information.\n"; + echo "The 'vendor' folder is missing. You must run 'composer update --no-dev' to resolve application dependencies.\nPlease see the README for more information.\n"; exit(1); } require __DIR__ . '/vendor/autoload.php'; diff --git a/sample/index.html b/sample/index.html index 648cf4d..b90b55d 100644 --- a/sample/index.html +++ b/sample/index.html @@ -13,124 +13,105 @@ .source { background: url('images/edt-format-source-button.png') no-repeat left top; } + .header { + font-weight: bold; + } + .header td { + padding: 10px 0px 10px 0px; + }

PayPal REST API Samples

-

+ + + - - - - - - - - + - - - - + - - - + - - - + - + + + - - - - - - + + + + + + + + + - - - + - - - + - - - + - - - + - - - + - - - - - - - -
Payments
Payment with a credit card Execute Source
Payment with a PayPal Account Execute Source
Get Payment DetailsGet payment details Execute Source
Get Payment HistoryGet payment history Execute Source
Get Sale DetailsGet sale details Execute Source
Refund a PaymentRefund a payment Execute Source
Vault
Save a credit card Execute Source
Retrieve saved credit card Execute Source
Get Details of Authorized PaymentDelete saved credit cardExecuteSource
Authorization and capture
Get details of an authorized payment Execute Source
Capture Authorized PaymentCapture an authorized payment Execute Source
Void Authorized PaymentVoid an authorized payment Execute Source
Reauthorize a PaymentReauthorize a payment Execute Source
Get Details of Captured PaymentGet details of a captured payment Execute Source
Refund Captured PaymentRefund captured payment Execute Source
Delete saved CreditCardExecuteSource
- \ No newline at end of file + From 14b9a13f8a07b22884659683e8af3c726fa97005 Mon Sep 17 00:00:00 2001 From: aydiv Date: Wed, 21 Aug 2013 21:37:42 +0530 Subject: [PATCH 2/6] Changing test case and samples to use newer camelcase setters --- sample/payments/AuthorizationCapture.php | 20 ++++++++--------- sample/payments/CreatePayment.php | 20 ++++++++--------- sample/payments/CreatePaymentUsingPayPal.php | 8 +++---- .../payments/CreatePaymentUsingSavedCard.php | 10 ++++----- sample/payments/ExecutePayment.php | 4 ++-- sample/payments/GetAuthorization.php | 20 ++++++++--------- sample/payments/GetCapture.php | 20 ++++++++--------- sample/payments/RefundCapture.php | 20 ++++++++--------- sample/payments/VoidAuthorization.php | 20 ++++++++--------- sample/source/AuthorizationCapture.html | 20 ++++++++--------- sample/source/CreateCreditCard.html | 10 ++++----- sample/source/CreatePayment.html | 20 ++++++++--------- sample/source/CreatePaymentUsingPayPal.html | 8 +++---- .../source/CreatePaymentUsingSavedCard.html | 10 ++++----- sample/source/DeleteCreditCard.html | 12 +++++----- sample/source/ExecutePayment.html | 2 +- sample/source/GetAuthorization.html | 20 ++++++++--------- sample/source/GetCapture.html | 20 ++++++++--------- sample/source/GetCreditCard.html | 4 ++-- sample/source/RefundCapture.html | 20 ++++++++--------- sample/source/VoidAuthorization.html | 20 ++++++++--------- sample/vault/CreateCreditCard.php | 12 +++++----- sample/vault/DeleteCreditCard.php | 14 ++++++------ sample/vault/GetCreditCard.php | 6 ++--- tests/PayPal/Test/Api/AddressTest.php | 2 +- tests/PayPal/Test/Api/AuthorizationTest.php | 22 +++++++++---------- tests/PayPal/Test/Api/TransactionTest.php | 2 +- 27 files changed, 183 insertions(+), 183 deletions(-) diff --git a/sample/payments/AuthorizationCapture.php b/sample/payments/AuthorizationCapture.php index 6b064b9..d39e607 100644 --- a/sample/payments/AuthorizationCapture.php +++ b/sample/payments/AuthorizationCapture.php @@ -62,26 +62,26 @@ function createAuthorization($apiContext) $addr->setLine2("Niagara Falls"); $addr->setCity("Niagara Falls"); $addr->setState("NY"); - $addr->setPostal_code("14305"); - $addr->setCountry_code("US"); + $addr->setPostalCode("14305"); + $addr->setCountryCode("US"); $addr->setPhone("716-298-1822"); $card = new CreditCard(); $card->setType("visa"); $card->setNumber("4417119669820331"); - $card->setExpire_month("11"); - $card->setExpire_year("2019"); + $card->setExpireMonth("11"); + $card->setExpireYear("2019"); $card->setCvv2("012"); - $card->setFirst_name("Joe"); - $card->setLast_name("Shopper"); - $card->setBilling_address($addr); + $card->setFirstName("Joe"); + $card->setLastName("Shopper"); + $card->setBillingAddress($addr); $fi = new FundingInstrument(); - $fi->setCredit_card($card); + $fi->setCreditCard($card); $payer = new Payer(); - $payer->setPayment_method("credit_card"); - $payer->setFunding_instruments(array($fi)); + $payer->setPaymentMethod("credit_card"); + $payer->setFundingInstruments(array($fi)); $amount = new Amount(); $amount->setCurrency("USD"); diff --git a/sample/payments/CreatePayment.php b/sample/payments/CreatePayment.php index 7c34bb8..257226a 100644 --- a/sample/payments/CreatePayment.php +++ b/sample/payments/CreatePayment.php @@ -22,8 +22,8 @@ $addr->setLine1("3909 Witmer Road"); $addr->setLine2("Niagara Falls"); $addr->setCity("Niagara Falls"); $addr->setState("NY"); -$addr->setPostal_code("14305"); -$addr->setCountry_code("US"); +$addr->setPostalCode("14305"); +$addr->setCountryCode("US"); $addr->setPhone("716-298-1822"); // ### CreditCard @@ -32,12 +32,12 @@ $addr->setPhone("716-298-1822"); $card = new CreditCard(); $card->setType("visa"); $card->setNumber("4417119669820331"); -$card->setExpire_month("11"); -$card->setExpire_year("2019"); +$card->setExpireMonth("11"); +$card->setExpireYear("2019"); $card->setCvv2("012"); -$card->setFirst_name("Joe"); -$card->setLast_name("Shopper"); -$card->setBilling_address($addr); +$card->setFirstName("Joe"); +$card->setLastName("Shopper"); +$card->setBillingAddress($addr); // ### FundingInstrument // A resource representing a Payer's funding instrument. @@ -46,15 +46,15 @@ $card->setBilling_address($addr); // creating or using a tokenized funding instrument) // and the `CreditCardDetails` $fi = new FundingInstrument(); -$fi->setCredit_card($card); +$fi->setCreditCard($card); // ### Payer // A resource representing a Payer that funds a payment // Use the List of `FundingInstrument` and the Payment Method // as 'credit_card' $payer = new Payer(); -$payer->setPayment_method("credit_card"); -$payer->setFunding_instruments(array($fi)); +$payer->setPaymentMethod("credit_card"); +$payer->setFundingInstruments(array($fi)); // ### Amount // Let's you specify a payment amount. diff --git a/sample/payments/CreatePaymentUsingPayPal.php b/sample/payments/CreatePaymentUsingPayPal.php index 0f4163c..ea116e1 100644 --- a/sample/payments/CreatePaymentUsingPayPal.php +++ b/sample/payments/CreatePaymentUsingPayPal.php @@ -20,7 +20,7 @@ session_start(); // Use the List of `FundingInstrument` and the Payment Method // as 'credit_card' $payer = new Payer(); -$payer->setPayment_method("paypal"); +$payer->setPaymentMethod("paypal"); // ### Amount // Let's you specify a payment amount. @@ -42,8 +42,8 @@ $transaction->setDescription("This is the payment description."); // payment approval/ cancellation. $baseUrl = getBaseUrl(); $redirectUrls = new RedirectUrls(); -$redirectUrls->setReturn_url("$baseUrl/ExecutePayment.php?success=true"); -$redirectUrls->setCancel_url("$baseUrl/ExecutePayment.php?success=false"); +$redirectUrls->setReturnUrl("$baseUrl/ExecutePayment.php?success=true"); +$redirectUrls->setCancelUrl("$baseUrl/ExecutePayment.php?success=false"); // ### Payment // A Payment Resource; create one using @@ -51,7 +51,7 @@ $redirectUrls->setCancel_url("$baseUrl/ExecutePayment.php?success=false"); $payment = new Payment(); $payment->setIntent("sale"); $payment->setPayer($payer); -$payment->setRedirect_urls($redirectUrls); +$payment->setRedirectUrls($redirectUrls); $payment->setTransactions(array($transaction)); // ### Create Payment diff --git a/sample/payments/CreatePaymentUsingSavedCard.php b/sample/payments/CreatePaymentUsingSavedCard.php index 18fa312..dc93e4e 100644 --- a/sample/payments/CreatePaymentUsingSavedCard.php +++ b/sample/payments/CreatePaymentUsingSavedCard.php @@ -22,7 +22,7 @@ use PayPal\Auth\OAuthTokenCredential; // CreateCreditCard.php $creditCardId = 'CARD-5BT058015C739554AKE2GCEI'; $creditCardToken = new CreditCardToken(); -$creditCardToken->setCredit_card_id($creditCardId); +$creditCardToken->setCreditCardId($creditCardId); // ### FundingInstrument // A resource representing a Payer's funding instrument. @@ -31,15 +31,15 @@ $creditCardToken->setCredit_card_id($creditCardId); // creating or using a tokenized funding instrument) // and the `CreditCardDetails` $fi = new FundingInstrument(); -$fi->setCredit_card_token($creditCardToken); +$fi->setCreditCardToken($creditCardToken); // ### Payer // A resource representing a Payer that funds a payment // Use the List of `FundingInstrument` and the Payment Method // as 'credit_card' $payer = new Payer(); -$payer->setPayment_method("credit_card"); -$payer->setFunding_instruments(array($fi)); +$payer->setPaymentMethod("credit_card"); +$payer->setFundingInstruments(array($fi)); // ### Amount // Let's you specify a payment amount. @@ -70,7 +70,7 @@ $payment->setTransactions(array($transaction)); // The return object contains the status; try { $payment->create($apiContext); -} catch (PayPal\ExceptionPayPal\Exception\PPConnectionException $ex) { +} catch (PayPal\Exception\PPConnectionException $ex) { echo "Exception: " . $ex->getMessage() . PHP_EOL; var_dump($ex->getData()); exit(1); diff --git a/sample/payments/ExecutePayment.php b/sample/payments/ExecutePayment.php index 6827c99..ca87360 100644 --- a/sample/payments/ExecutePayment.php +++ b/sample/payments/ExecutePayment.php @@ -25,7 +25,7 @@ if(isset($_GET['success']) && $_GET['success'] == 'true') { // The payer_id is added to the request query parameters // when the user is redirected from paypal back to your site $execution = new PaymentExecution(); - $execution->setPayer_id($_GET['PayerID']); + $execution->setPayerId($_GET['PayerID']); //Execute the payment // (See bootstrap.php for more on `ApiContext`) @@ -37,4 +37,4 @@ if(isset($_GET['success']) && $_GET['success'] == 'true') { } else { echo "User cancelled payment."; -} \ No newline at end of file +} diff --git a/sample/payments/GetAuthorization.php b/sample/payments/GetAuthorization.php index 18a8a88..d57da8e 100644 --- a/sample/payments/GetAuthorization.php +++ b/sample/payments/GetAuthorization.php @@ -48,26 +48,26 @@ function createAuthorization($apiContext) $addr->setLine2("Niagara Falls"); $addr->setCity("Niagara Falls"); $addr->setState("NY"); - $addr->setPostal_code("14305"); - $addr->setCountry_code("US"); + $addr->setPostalCode("14305"); + $addr->setCountryCode("US"); $addr->setPhone("716-298-1822"); $card = new CreditCard(); $card->setType("visa"); $card->setNumber("4417119669820331"); - $card->setExpire_month("11"); - $card->setExpire_year("2019"); + $card->setExpireMonth("11"); + $card->setExpireYear("2019"); $card->setCvv2("012"); - $card->setFirst_name("Joe"); - $card->setLast_name("Shopper"); - $card->setBilling_address($addr); + $card->setFirstName("Joe"); + $card->setLastName("Shopper"); + $card->setBillingAddress($addr); $fi = new FundingInstrument(); - $fi->setCredit_card($card); + $fi->setCreditCard($card); $payer = new Payer(); - $payer->setPayment_method("credit_card"); - $payer->setFunding_instruments(array($fi)); + $payer->setPaymentMethod("credit_card"); + $payer->setFundingInstruments(array($fi)); $amount = new Amount(); $amount->setCurrency("USD"); diff --git a/sample/payments/GetCapture.php b/sample/payments/GetCapture.php index 194de6c..8db26af 100644 --- a/sample/payments/GetCapture.php +++ b/sample/payments/GetCapture.php @@ -71,26 +71,26 @@ function createAuthorization($apiContext) $addr->setLine2("Niagara Falls"); $addr->setCity("Niagara Falls"); $addr->setState("NY"); - $addr->setPostal_code("14305"); - $addr->setCountry_code("US"); + $addr->setPostalCode("14305"); + $addr->setCountryCode("US"); $addr->setPhone("716-298-1822"); $card = new CreditCard(); $card->setType("visa"); $card->setNumber("4417119669820331"); - $card->setExpire_month("11"); - $card->setExpire_year("2019"); + $card->setExpireMonth("11"); + $card->setExpireYear("2019"); $card->setCvv2("012"); - $card->setFirst_name("Joe"); - $card->setLast_name("Shopper"); - $card->setBilling_address($addr); + $card->setFirstName("Joe"); + $card->setLastName("Shopper"); + $card->setBillingAddress($addr); $fi = new FundingInstrument(); - $fi->setCredit_card($card); + $fi->setCreditCard($card); $payer = new Payer(); - $payer->setPayment_method("credit_card"); - $payer->setFunding_instruments(array($fi)); + $payer->setPaymentMethod("credit_card"); + $payer->setFundingInstruments(array($fi)); $amount = new Amount(); $amount->setCurrency("USD"); diff --git a/sample/payments/RefundCapture.php b/sample/payments/RefundCapture.php index 7988a5f..2d8ec26 100644 --- a/sample/payments/RefundCapture.php +++ b/sample/payments/RefundCapture.php @@ -83,26 +83,26 @@ function createAuthorization($apiContext) $addr->setLine2("Niagara Falls"); $addr->setCity("Niagara Falls"); $addr->setState("NY"); - $addr->setPostal_code("14305"); - $addr->setCountry_code("US"); + $addr->setPostalCode("14305"); + $addr->setCountryCode("US"); $addr->setPhone("716-298-1822"); $card = new CreditCard(); $card->setType("visa"); $card->setNumber("4417119669820331"); - $card->setExpire_month("11"); - $card->setExpire_year("2019"); + $card->setExpireMonth("11"); + $card->setExpireYear("2019"); $card->setCvv2("012"); - $card->setFirst_name("Joe"); - $card->setLast_name("Shopper"); - $card->setBilling_address($addr); + $card->setFirstName("Joe"); + $card->setLastName("Shopper"); + $card->setBillingAddress($addr); $fi = new FundingInstrument(); - $fi->setCredit_card($card); + $fi->setCreditCard($card); $payer = new Payer(); - $payer->setPayment_method("credit_card"); - $payer->setFunding_instruments(array($fi)); + $payer->setPaymentMethod("credit_card"); + $payer->setFundingInstruments(array($fi)); $amount = new Amount(); $amount->setCurrency("USD"); diff --git a/sample/payments/VoidAuthorization.php b/sample/payments/VoidAuthorization.php index c5e07e3..ddddc76 100644 --- a/sample/payments/VoidAuthorization.php +++ b/sample/payments/VoidAuthorization.php @@ -49,26 +49,26 @@ function createAuthorization($apiContext) $addr->setLine2("Niagara Falls"); $addr->setCity("Niagara Falls"); $addr->setState("NY"); - $addr->setPostal_code("14305"); - $addr->setCountry_code("US"); + $addr->setPostalCode("14305"); + $addr->setCountryCode("US"); $addr->setPhone("716-298-1822"); $card = new CreditCard(); $card->setType("visa"); $card->setNumber("4417119669820331"); - $card->setExpire_month("11"); - $card->setExpire_year("2019"); + $card->setExpireMonth("11"); + $card->setExpireYear("2019"); $card->setCvv2("012"); - $card->setFirst_name("Joe"); - $card->setLast_name("Shopper"); - $card->setBilling_address($addr); + $card->setFirstName("Joe"); + $card->setLastName("Shopper"); + $card->setBillingAddress($addr); $fi = new FundingInstrument(); - $fi->setCredit_card($card); + $fi->setCreditCard($card); $payer = new Payer(); - $payer->setPayment_method("credit_card"); - $payer->setFunding_instruments(array($fi)); + $payer->setPaymentMethod("credit_card"); + $payer->setFundingInstruments(array($fi)); $amount = new Amount(); $amount->setCurrency("USD"); diff --git a/sample/source/AuthorizationCapture.html b/sample/source/AuthorizationCapture.html index 5042253..3bc228e 100644 --- a/sample/source/AuthorizationCapture.html +++ b/sample/source/AuthorizationCapture.html @@ -52,26 +52,26 @@ The return object contains the status;

$addr->setLine2("Niagara Falls"); $addr->setCity("Niagara Falls"); $addr->setState("NY"); - $addr->setPostal_code("14305"); - $addr->setCountry_code("US"); + $addr->setPostalCode("14305"); + $addr->setCountryCode("US"); $addr->setPhone("716-298-1822"); $card = new CreditCard(); $card->setType("visa"); $card->setNumber("4417119669820331"); - $card->setExpire_month("11"); - $card->setExpire_year("2019"); + $card->setExpireMonth("11"); + $card->setExpireYear("2019"); $card->setCvv2("012"); - $card->setFirst_name("Joe"); - $card->setLast_name("Shopper"); - $card->setBilling_address($addr); + $card->setFirstName("Joe"); + $card->setLastName("Shopper"); + $card->setBillingAddress($addr); $fi = new FundingInstrument(); - $fi->setCredit_card($card); + $fi->setCreditCard($card); $payer = new Payer(); - $payer->setPayment_method("credit_card"); - $payer->setFunding_instruments(array($fi)); + $payer->setPaymentMethod("credit_card"); + $payer->setFundingInstruments(array($fi)); $amount = new Amount(); $amount->setCurrency("USD"); diff --git a/sample/source/CreateCreditCard.html b/sample/source/CreateCreditCard.html index 23b4c92..4e4dc69 100644 --- a/sample/source/CreateCreditCard.html +++ b/sample/source/CreateCreditCard.html @@ -15,11 +15,11 @@ API used: POST /v1/vault/credit-card

$card = new CreditCard(); $card->setType("visa"); $card->setNumber("4417119669820331"); -$card->setExpire_month("11"); -$card->setExpire_year("2019"); +$card->setExpireMonth("11"); +$card->setExpireYear("2019"); $card->setCvv2("012"); -$card->setFirst_name("Joe"); -$card->setLast_name("Shopper");

Save card

+$card->setFirstName("Joe"); +$card->setLastName("Shopper");

Save card

Creates the credit card as a resource in the PayPal vault. The response contains @@ -27,7 +27,7 @@ an 'id' that you can use to refer to it in the future payments. (See bootstrap.php for more on ApiContext)

try { $card->create($apiContext); -} catch (\PPConnectionException $ex) { +} catch (PayPal\Exception\PPConnectionException $ex) { echo "Exception:" . $ex->getMessage() . PHP_EOL; var_dump($ex->getData()); exit(1); diff --git a/sample/source/CreatePayment.html b/sample/source/CreatePayment.html index 89b6e93..b3cd52e 100644 --- a/sample/source/CreatePayment.html +++ b/sample/source/CreatePayment.html @@ -17,33 +17,33 @@ address in a payment. [Optional]

$addr->setLine2("Niagara Falls"); $addr->setCity("Niagara Falls"); $addr->setState("NY"); -$addr->setPostal_code("14305"); -$addr->setCountry_code("US"); +$addr->setPostalCode("14305"); +$addr->setCountryCode("US"); $addr->setPhone("716-298-1822");

CreditCard

A resource representing a credit card that can be used to fund a payment.

$card = new CreditCard(); $card->setType("visa"); $card->setNumber("4417119669820331"); -$card->setExpire_month("11"); -$card->setExpire_year("2019"); +$card->setExpireMonth("11"); +$card->setExpireYear("2019"); $card->setCvv2("012"); -$card->setFirst_name("Joe"); -$card->setLast_name("Shopper"); -$card->setBilling_address($addr);

FundingInstrument

+$card->setFirstName("Joe"); +$card->setLastName("Shopper"); +$card->setBillingAddress($addr);

FundingInstrument

A resource representing a Payer's funding instrument. Use a Payer ID (A unique identifier of the payer generated and provided by the facilitator. This is required when creating or using a tokenized funding instrument) and the CreditCardDetails

$fi = new FundingInstrument(); -$fi->setCredit_card($card);

Payer

+$fi->setCreditCard($card);

Payer

A resource representing a Payer that funds a payment Use the List of FundingInstrument and the Payment Method as 'credit_card'

$payer = new Payer(); -$payer->setPayment_method("credit_card"); -$payer->setFunding_instruments(array($fi));

Amount

+$payer->setPaymentMethod("credit_card"); +$payer->setFundingInstruments(array($fi));

Amount

Let's you specify a payment amount.

$amount = new Amount(); $amount->setCurrency("USD"); diff --git a/sample/source/CreatePaymentUsingPayPal.html b/sample/source/CreatePaymentUsingPayPal.html index de7b031..28122f5 100644 --- a/sample/source/CreatePaymentUsingPayPal.html +++ b/sample/source/CreatePaymentUsingPayPal.html @@ -15,7 +15,7 @@ API used: /v1/payments/payment

$payer = new Payer(); -$payer->setPayment_method("paypal");

Amount

+$payer->setPaymentMethod("paypal");

Amount

Let's you specify a payment amount.

$amount = new Amount(); $amount->setCurrency("USD"); @@ -31,14 +31,14 @@ a Payee and Amount types

$baseUrl = getBaseUrl(); $redirectUrls = new RedirectUrls(); -$redirectUrls->setReturn_url("$baseUrl/ExecutePayment.php?success=true"); -$redirectUrls->setCancel_url("$baseUrl/ExecutePayment.php?success=false");

Payment

+$redirectUrls->setReturnUrl("$baseUrl/ExecutePayment.php?success=true"); +$redirectUrls->setCancelUrl("$baseUrl/ExecutePayment.php?success=false");

Payment

A Payment Resource; create one using the above types and intent as 'sale'

$payment = new Payment(); $payment->setIntent("sale"); $payment->setPayer($payer); -$payment->setRedirect_urls($redirectUrls); +$payment->setRedirectUrls($redirectUrls); $payment->setTransactions(array($transaction));

Create Payment

Create a payment by posting to the APIService diff --git a/sample/source/CreatePaymentUsingSavedCard.html b/sample/source/CreatePaymentUsingSavedCard.html index 07417ff..fa4aeec 100644 --- a/sample/source/CreatePaymentUsingSavedCard.html +++ b/sample/source/CreatePaymentUsingSavedCard.html @@ -17,20 +17,20 @@ API used: /v1/payments/payment

FundingInstrument

+$creditCardToken->setCreditCardId($creditCardId);

FundingInstrument

A resource representing a Payer's funding instrument. Use a Payer ID (A unique identifier of the payer generated and provided by the facilitator. This is required when creating or using a tokenized funding instrument) and the CreditCardDetails

$fi = new FundingInstrument(); -$fi->setCredit_card_token($creditCardToken);

Payer

+$fi->setCreditCardToken($creditCardToken);

Payer

A resource representing a Payer that funds a payment Use the List of FundingInstrument and the Payment Method as 'credit_card'

$payer = new Payer(); -$payer->setPayment_method("credit_card"); -$payer->setFunding_instruments(array($fi));

Amount

+$payer->setPaymentMethod("credit_card"); +$payer->setFundingInstruments(array($fi));

Amount

Let's you specify a payment amount.

$amount = new Amount(); $amount->setCurrency("USD"); @@ -53,7 +53,7 @@ the above types and intent as 'sale'

ApiContext) The return object contains the status;

try { $payment->create($apiContext); -} catch (PayPal\ExceptionPayPal\Exception\PPConnectionException $ex) { +} catch (PayPal\Exception\PPConnectionException $ex) { echo "Exception: " . $ex->getMessage() . PHP_EOL; var_dump($ex->getData()); exit(1); diff --git a/sample/source/DeleteCreditCard.html b/sample/source/DeleteCreditCard.html index f8e45ed..2988d11 100644 --- a/sample/source/DeleteCreditCard.html +++ b/sample/source/DeleteCreditCard.html @@ -12,11 +12,11 @@ NOTE: HTTP method used here is DELETE

$card = new CreditCard(); $card->setType("visa"); $card->setNumber("4417119669820331"); -$card->setExpire_month("11"); -$card->setExpire_year("2019"); +$card->setExpireMonth("11"); +$card->setExpireYear("2019"); $card->setCvv2("012"); -$card->setFirst_name("Joe"); -$card->setLast_name("Shopper");

Save card

+$card->setFirstName("Joe"); +$card->setLastName("Shopper");

Save card

Creates the credit card as a resource in the PayPal vault. The response contains @@ -24,7 +24,7 @@ an 'id' that you can use to refer to it in the future payments. (See bootstrap.php for more on ApiContext)

try { $res = $card->create($apiContext); -} catch (\PPConnectionException $ex) { +} catch (PayPal\Exception\PPConnectionException $ex) { echo "Exception:" . $ex->getMessage() . PHP_EOL; var_dump($ex->getData()); exit(1); @@ -35,7 +35,7 @@ in the future payments.

deletes saved credit card (See bootstrap.php for more on ApiContext)

$creditCard->delete($apiContext); -} catch (\PPConnectionException $ex) { +} catch (PayPal\Exception\PPConnectionException $ex) { echo "Exception: " . $ex->getMessage() . PHP_EOL; exit(1); } diff --git a/sample/source/ExecutePayment.html b/sample/source/ExecutePayment.html index ab77e3d..8a6a6c0 100644 --- a/sample/source/ExecutePayment.html +++ b/sample/source/ExecutePayment.html @@ -19,7 +19,7 @@ CreatePaymentUsingPayPal.php

(See bootstrap.php for more on ApiContext)

$payment->execute($execution, $apiContext); diff --git a/sample/source/GetAuthorization.html b/sample/source/GetAuthorization.html index 0648f9c..e690427 100644 --- a/sample/source/GetAuthorization.html +++ b/sample/source/GetAuthorization.html @@ -41,26 +41,26 @@ The return object contains the status;

$addr->setLine2("Niagara Falls"); $addr->setCity("Niagara Falls"); $addr->setState("NY"); - $addr->setPostal_code("14305"); - $addr->setCountry_code("US"); + $addr->setPostalCode("14305"); + $addr->setCountryCode("US"); $addr->setPhone("716-298-1822"); $card = new CreditCard(); $card->setType("visa"); $card->setNumber("4417119669820331"); - $card->setExpire_month("11"); - $card->setExpire_year("2019"); + $card->setExpireMonth("11"); + $card->setExpireYear("2019"); $card->setCvv2("012"); - $card->setFirst_name("Joe"); - $card->setLast_name("Shopper"); - $card->setBilling_address($addr); + $card->setFirstName("Joe"); + $card->setLastName("Shopper"); + $card->setBillingAddress($addr); $fi = new FundingInstrument(); - $fi->setCredit_card($card); + $fi->setCreditCard($card); $payer = new Payer(); - $payer->setPayment_method("credit_card"); - $payer->setFunding_instruments(array($fi)); + $payer->setPaymentMethod("credit_card"); + $payer->setFundingInstruments(array($fi)); $amount = new Amount(); $amount->setCurrency("USD"); diff --git a/sample/source/GetCapture.html b/sample/source/GetCapture.html index 50302d9..7fe202b 100644 --- a/sample/source/GetCapture.html +++ b/sample/source/GetCapture.html @@ -59,26 +59,26 @@ The return object contains the status;

$addr->setLine2("Niagara Falls"); $addr->setCity("Niagara Falls"); $addr->setState("NY"); - $addr->setPostal_code("14305"); - $addr->setCountry_code("US"); + $addr->setPostalCode("14305"); + $addr->setCountryCode("US"); $addr->setPhone("716-298-1822"); $card = new CreditCard(); $card->setType("visa"); $card->setNumber("4417119669820331"); - $card->setExpire_month("11"); - $card->setExpire_year("2019"); + $card->setExpireMonth("11"); + $card->setExpireYear("2019"); $card->setCvv2("012"); - $card->setFirst_name("Joe"); - $card->setLast_name("Shopper"); - $card->setBilling_address($addr); + $card->setFirstName("Joe"); + $card->setLastName("Shopper"); + $card->setBillingAddress($addr); $fi = new FundingInstrument(); - $fi->setCredit_card($card); + $fi->setCreditCard($card); $payer = new Payer(); - $payer->setPayment_method("credit_card"); - $payer->setFunding_instruments(array($fi)); + $payer->setPaymentMethod("credit_card"); + $payer->setFundingInstruments(array($fi)); $amount = new Amount(); $amount->setCurrency("USD"); diff --git a/sample/source/GetCreditCard.html b/sample/source/GetCreditCard.html index a46eaae..1455817 100644 --- a/sample/source/GetCreditCard.html +++ b/sample/source/GetCreditCard.html @@ -7,11 +7,11 @@ by sending a GET request to the URI The following code takes you through the process of retrieving a saved CreditCard

require __DIR__ . '/../bootstrap.php'; use PayPal\Api\CreditCard;

The cardId can be obtained from a previous save credit -card operation. Use $card->getId()

$cardId = "CARD-5BT058015C739554AKE2GCEI"; +card operation. Use $card->getId()

$cardId = "CARD-5AR29593TC404090HKIKN77Q"; /// ### Retrieve card

(See bootstrap.php for more on ApiContext)

try { $card = CreditCard::get($cardId, $apiContext); -} catch (\PPConnectionException $ex) { +} catch (PayPal\Exception\PPConnectionException $ex) { echo "Exception: " . $ex->getMessage() . PHP_EOL; var_dump($ex->getData()); exit(1); diff --git a/sample/source/RefundCapture.html b/sample/source/RefundCapture.html index c53b095..30ee488 100644 --- a/sample/source/RefundCapture.html +++ b/sample/source/RefundCapture.html @@ -67,26 +67,26 @@ PayPal-Request-Id (idempotency) header for this resource

$addr->setLine2("Niagara Falls"); $addr->setCity("Niagara Falls"); $addr->setState("NY"); - $addr->setPostal_code("14305"); - $addr->setCountry_code("US"); + $addr->setPostalCode("14305"); + $addr->setCountryCode("US"); $addr->setPhone("716-298-1822"); $card = new CreditCard(); $card->setType("visa"); $card->setNumber("4417119669820331"); - $card->setExpire_month("11"); - $card->setExpire_year("2019"); + $card->setExpireMonth("11"); + $card->setExpireYear("2019"); $card->setCvv2("012"); - $card->setFirst_name("Joe"); - $card->setLast_name("Shopper"); - $card->setBilling_address($addr); + $card->setFirstName("Joe"); + $card->setLastName("Shopper"); + $card->setBillingAddress($addr); $fi = new FundingInstrument(); - $fi->setCredit_card($card); + $fi->setCreditCard($card); $payer = new Payer(); - $payer->setPayment_method("credit_card"); - $payer->setFunding_instruments(array($fi)); + $payer->setPaymentMethod("credit_card"); + $payer->setFundingInstruments(array($fi)); $amount = new Amount(); $amount->setCurrency("USD"); diff --git a/sample/source/VoidAuthorization.html b/sample/source/VoidAuthorization.html index bf9b900..1351f16 100644 --- a/sample/source/VoidAuthorization.html +++ b/sample/source/VoidAuthorization.html @@ -41,26 +41,26 @@ The return object contains the status;

$addr->setLine2("Niagara Falls"); $addr->setCity("Niagara Falls"); $addr->setState("NY"); - $addr->setPostal_code("14305"); - $addr->setCountry_code("US"); + $addr->setPostalCode("14305"); + $addr->setCountryCode("US"); $addr->setPhone("716-298-1822"); $card = new CreditCard(); $card->setType("visa"); $card->setNumber("4417119669820331"); - $card->setExpire_month("11"); - $card->setExpire_year("2019"); + $card->setExpireMonth("11"); + $card->setExpireYear("2019"); $card->setCvv2("012"); - $card->setFirst_name("Joe"); - $card->setLast_name("Shopper"); - $card->setBilling_address($addr); + $card->setFirstName("Joe"); + $card->setLastName("Shopper"); + $card->setBillingAddress($addr); $fi = new FundingInstrument(); - $fi->setCredit_card($card); + $fi->setCreditCard($card); $payer = new Payer(); - $payer->setPayment_method("credit_card"); - $payer->setFunding_instruments(array($fi)); + $payer->setPaymentMethod("credit_card"); + $payer->setFundingInstruments(array($fi)); $amount = new Amount(); $amount->setCurrency("USD"); diff --git a/sample/vault/CreateCreditCard.php b/sample/vault/CreateCreditCard.php index bf50d4c..04bda56 100644 --- a/sample/vault/CreateCreditCard.php +++ b/sample/vault/CreateCreditCard.php @@ -21,11 +21,11 @@ use PayPal\Api\Address; $card = new CreditCard(); $card->setType("visa"); $card->setNumber("4417119669820331"); -$card->setExpire_month("11"); -$card->setExpire_year("2019"); +$card->setExpireMonth("11"); +$card->setExpireYear("2019"); $card->setCvv2("012"); -$card->setFirst_name("Joe"); -$card->setLast_name("Shopper"); +$card->setFirstName("Joe"); +$card->setLastName("Shopper"); // ### Save card // Creates the credit card as a resource @@ -35,7 +35,7 @@ $card->setLast_name("Shopper"); // (See bootstrap.php for more on `ApiContext`) try { $card->create($apiContext); -} catch (\PPConnectionException $ex) { +} catch (PayPal\Exception\PPConnectionException $ex) { echo "Exception:" . $ex->getMessage() . PHP_EOL; var_dump($ex->getData()); exit(1); @@ -47,4 +47,4 @@ try {
Back - \ No newline at end of file + diff --git a/sample/vault/DeleteCreditCard.php b/sample/vault/DeleteCreditCard.php index 29d25e0..0e409ab 100644 --- a/sample/vault/DeleteCreditCard.php +++ b/sample/vault/DeleteCreditCard.php @@ -16,11 +16,11 @@ use PayPal\Api\Address; $card = new CreditCard(); $card->setType("visa"); $card->setNumber("4417119669820331"); -$card->setExpire_month("11"); -$card->setExpire_year("2019"); +$card->setExpireMonth("11"); +$card->setExpireYear("2019"); $card->setCvv2("012"); -$card->setFirst_name("Joe"); -$card->setLast_name("Shopper"); +$card->setFirstName("Joe"); +$card->setLastName("Shopper"); // ### Save card // Creates the credit card as a resource @@ -30,7 +30,7 @@ $card->setLast_name("Shopper"); // (See bootstrap.php for more on `ApiContext`) try { $res = $card->create($apiContext); -} catch (\PPConnectionException $ex) { +} catch (PayPal\Exception\PPConnectionException $ex) { echo "Exception:" . $ex->getMessage() . PHP_EOL; var_dump($ex->getData()); exit(1); @@ -42,7 +42,7 @@ try { // deletes saved credit card // (See bootstrap.php for more on `ApiContext`) $creditCard->delete($apiContext); -} catch (\PPConnectionException $ex) { +} catch (PayPal\Exception\PPConnectionException $ex) { echo "Exception: " . $ex->getMessage() . PHP_EOL; exit(1); } @@ -54,4 +54,4 @@ try {

Credit Card deleted Successfully

Back - \ No newline at end of file + diff --git a/sample/vault/GetCreditCard.php b/sample/vault/GetCreditCard.php index 815bfaf..c8781a4 100644 --- a/sample/vault/GetCreditCard.php +++ b/sample/vault/GetCreditCard.php @@ -12,13 +12,13 @@ use PayPal\Api\CreditCard; // The cardId can be obtained from a previous save credit // card operation. Use $card->getId() -$cardId = "CARD-5BT058015C739554AKE2GCEI"; +$cardId = "CARD-5AR29593TC404090HKIKN77Q"; /// ### Retrieve card // (See bootstrap.php for more on `ApiContext`) try { $card = CreditCard::get($cardId, $apiContext); -} catch (\PPConnectionException $ex) { +} catch (PayPal\Exception\PPConnectionException $ex) { echo "Exception: " . $ex->getMessage() . PHP_EOL; var_dump($ex->getData()); exit(1); @@ -30,4 +30,4 @@ try {
Back - \ No newline at end of file + diff --git a/tests/PayPal/Test/Api/AddressTest.php b/tests/PayPal/Test/Api/AddressTest.php index ec271c9..b02dd07 100644 --- a/tests/PayPal/Test/Api/AddressTest.php +++ b/tests/PayPal/Test/Api/AddressTest.php @@ -51,4 +51,4 @@ class AddressTest extends \PHPUnit_Framework_TestCase { $this->assertEquals($a1, $a2); } -} \ No newline at end of file +} diff --git a/tests/PayPal/Test/Api/AuthorizationTest.php b/tests/PayPal/Test/Api/AuthorizationTest.php index 63ba8cb..73b2f25 100644 --- a/tests/PayPal/Test/Api/AuthorizationTest.php +++ b/tests/PayPal/Test/Api/AuthorizationTest.php @@ -47,26 +47,26 @@ class AuthorizationTest extends \PHPUnit_Framework_TestCase { $addr->setLine2("Niagara Falls"); $addr->setCity("Niagara Falls"); $addr->setState("NY"); - $addr->setPostal_code("14305"); - $addr->setCountry_code("US"); + $addr->setPostalCode("14305"); + $addr->setCountryCode("US"); $addr->setPhone("716-298-1822"); $card = new CreditCard(); $card->setType("visa"); $card->setNumber("4417119669820331"); - $card->setExpire_month("11"); - $card->setExpire_year("2019"); + $card->setExpireMonth("11"); + $card->setExpireYear("2019"); $card->setCvv2("012"); - $card->setFirst_name("Joe"); - $card->setLast_name("Shopper"); - $card->setBilling_address($addr); + $card->setFirstName("Joe"); + $card->setLastName("Shopper"); + $card->setBillingAddress($addr); $fi = new FundingInstrument(); - $fi->setCredit_card($card); + $fi->setCreditCard($card); $payer = new Payer(); - $payer->setPayment_method("credit_card"); - $payer->setFunding_instruments(array($fi)); + $payer->setPaymentMethod("credit_card"); + $payer->setFundingInstruments(array($fi)); $amount = new Amount(); $amount->setCurrency("USD"); @@ -153,4 +153,4 @@ class AuthorizationTest extends \PHPUnit_Framework_TestCase { $this->assertEquals(strpos($ex->getMessage(),"500"), false); } } -} \ No newline at end of file +} diff --git a/tests/PayPal/Test/Api/TransactionTest.php b/tests/PayPal/Test/Api/TransactionTest.php index f2e0ba3..4659f0d 100644 --- a/tests/PayPal/Test/Api/TransactionTest.php +++ b/tests/PayPal/Test/Api/TransactionTest.php @@ -46,4 +46,4 @@ class TransactionTest extends \PHPUnit_Framework_TestCase { $this->assertEquals($t1, $t2); } -} \ No newline at end of file +} From f4d687b52b8423b504e50dcca7a8e827016a5250 Mon Sep 17 00:00:00 2001 From: aydiv Date: Thu, 22 Aug 2013 17:24:04 +0530 Subject: [PATCH 3/6] Updating samples to use fluent setters + doc fixes --- sample/bootstrap.php | 23 +---- sample/common.php | 91 ++++++++++++++++++ sample/payments/AuthorizationCapture.php | 74 +++----------- sample/payments/CreatePayment.php | 58 ++++++----- sample/payments/CreatePaymentUsingPayPal.php | 20 ++-- .../payments/CreatePaymentUsingSavedCard.php | 18 ++-- sample/payments/GetAuthorization.php | 68 ++----------- sample/payments/GetCapture.php | 79 +++------------ sample/payments/Reauthorization.php | 23 +++-- sample/payments/RefundCapture.php | 75 ++------------- sample/payments/VoidAuthorization.php | 70 ++------------ sample/sale/RefundSale.php | 4 +- sample/source/AuthorizationCapture.html | 76 +++------------ sample/source/CreateCreditCard.html | 16 ++-- sample/source/CreatePayment.html | 48 +++++----- sample/source/CreatePaymentUsingPayPal.html | 20 ++-- .../source/CreatePaymentUsingSavedCard.html | 18 ++-- sample/source/DeleteCreditCard.html | 19 ++-- sample/source/GetAuthorization.html | 71 ++------------ sample/source/GetCapture.html | 81 +++------------- sample/source/Reauthorization.html | 23 ++--- sample/source/RefundCapture.html | 82 +++------------- sample/source/RefundSale.html | 4 +- sample/source/VoidAuthorization.html | 73 ++------------ sample/vault/CreateCreditCard.php | 96 +++++++++---------- sample/vault/DeleteCreditCard.php | 19 ++-- sample/vault/GetCreditCard.php | 66 ++++++------- 27 files changed, 422 insertions(+), 893 deletions(-) create mode 100644 sample/common.php diff --git a/sample/bootstrap.php b/sample/bootstrap.php index cb36f0a..eb9fed9 100644 --- a/sample/bootstrap.php +++ b/sample/bootstrap.php @@ -9,6 +9,8 @@ if(!file_exists(__DIR__ .'/vendor/autoload.php')) { exit(1); } require __DIR__ . '/vendor/autoload.php'; +require __DIR__ . '/common.php'; + define("PP_CONFIG_PATH", __DIR__); use PayPal\Rest\ApiContext; @@ -36,24 +38,3 @@ $apiContext->setConfig(array( */ -/** - * ### getBaseUrl function - * // utility function that returns base url for - * // determining return/cancel urls - * @return string - */ -function getBaseUrl() { - - $protocol = 'http'; - if ($_SERVER['SERVER_PORT'] == 443 || (!empty($_SERVER['HTTPS']) && strtolower($_SERVER['HTTPS']) == 'on')) { - $protocol .= 's'; - $protocol_port = $_SERVER['SERVER_PORT']; - } else { - $protocol_port = 80; - } - - $host = $_SERVER['HTTP_HOST']; - $port = $_SERVER['SERVER_PORT']; - $request = $_SERVER['PHP_SELF']; - return dirname($protocol . '://' . $host . ($port == $protocol_port ? '' : ':' . $port) . $request); -} diff --git a/sample/common.php b/sample/common.php new file mode 100644 index 0000000..2ab665f --- /dev/null +++ b/sample/common.php @@ -0,0 +1,91 @@ +setLine1("3909 Witmer Road") + ->setLine2("Niagara Falls") + ->setCity("Niagara Falls") + ->setState("NY") + ->setPostalCode("14305") + ->setCountryCode("US") + ->setPhone("716-298-1822"); + + $card = new CreditCard(); + $card->setType("visa") + ->setNumber("4417119669820331") + ->setExpireMonth("11") + ->setExpireYear("2019") + ->setCvv2("012") + ->setFirstName("Joe") + ->setLastName("Shopper") + ->setBillingAddress($addr); + + $fi = new FundingInstrument(); + $fi->setCreditCard($card); + + $payer = new Payer(); + $payer->setPaymentMethod("credit_card") + ->setFundingInstruments(array($fi)); + + $amount = new Amount(); + $amount->setCurrency("USD") + ->setTotal("1.00"); + + $transaction = new Transaction(); + $transaction->setAmount($amount) + ->setDescription("This is the payment description."); + + $payment = new Payment(); + + // Setting intent to authorize creates a payment + // authorization. Setting it to sale makes an actual payment + $payment->setIntent("authorize") + ->setPayer($payer) + ->setTransactions(array($transaction)); + + $paymnt = $payment->create($apiContext); + $resArray = $paymnt->toArray(); + + return $authId = $resArray['transactions'][0]['related_resources'][0]['authorization']['id']; +} diff --git a/sample/payments/AuthorizationCapture.php b/sample/payments/AuthorizationCapture.php index d39e607..df5ed7a 100644 --- a/sample/payments/AuthorizationCapture.php +++ b/sample/payments/AuthorizationCapture.php @@ -4,35 +4,30 @@ // API used: /v1/payments/payment require __DIR__ . '/../bootstrap.php'; +use PayPal\Api\Amount; use PayPal\Api\Capture; use PayPal\Api\Authorization; -use PayPal\Api\Address; -use PayPal\Api\Amount; -use PayPal\Api\CreditCard; -use PayPal\Api\Payer; -use PayPal\Api\Payment; -use PayPal\Api\FundingInstrument; -use PayPal\Api\Transaction; // ### Capture Payment -// Capture Payment by posting to the APIService -// using a valid ApiContext (See bootstrap.php for more on `ApiContext`) -// The return object contains the status; +// You can capture and process a previously created authorization +// by invoking the $authorization->capture method +// with a valid ApiContext (See bootstrap.php for more on `ApiContext`) try { // create payment to get authorization Id + // createAuthorization defined in common.php $authId = createAuthorization($apiContext); $amt = new Amount(); - $amt->setCurrency("USD"); - $amt->setTotal("1.00"); + $amt->setCurrency("USD") + ->setTotal("1.00"); ### Capture $capture = new Capture(); - $capture->setId($authId); - $capture->setAmount($amt); + $capture->setId($authId) + ->setAmount($amt); - // get the authorization + // Get the authorization $authorization = Authorization::get($authId, $apiContext); $getCapture = $authorization->capture($capture, $apiContext); @@ -45,7 +40,7 @@ try {
- Capture payment: + Captured payment getParentPayment(); ?>. Capture Id: getId();?>
@@ -54,50 +49,3 @@ try {
 	Back
 
 
-setLine1("3909 Witmer Road");
-	$addr->setLine2("Niagara Falls");
-	$addr->setCity("Niagara Falls");
-	$addr->setState("NY");
-	$addr->setPostalCode("14305");
-	$addr->setCountryCode("US");
-	$addr->setPhone("716-298-1822");
-	
-	$card = new CreditCard();
-	$card->setType("visa");
-	$card->setNumber("4417119669820331");
-	$card->setExpireMonth("11");
-	$card->setExpireYear("2019");
-	$card->setCvv2("012");
-	$card->setFirstName("Joe");
-	$card->setLastName("Shopper");
-	$card->setBillingAddress($addr);
-	
-	$fi = new FundingInstrument();
-	$fi->setCreditCard($card);
-	
-	$payer = new Payer();
-	$payer->setPaymentMethod("credit_card");
-	$payer->setFundingInstruments(array($fi));
-	
-	$amount = new Amount();
-	$amount->setCurrency("USD");
-	$amount->setTotal("1.00");
-	
-	$transaction = new Transaction();
-	$transaction->setAmount($amount);
-	$transaction->setDescription("This is the payment description.");
-	
-	$payment = new Payment();
-	$payment->setIntent("authorize");
-	$payment->setPayer($payer);
-	$payment->setTransactions(array($transaction));
-	
-	$paymnt = $payment->create($apiContext);
-	$resArray = $paymnt->toArray();
-	
-	return $authId = $resArray['transactions'][0]['related_resources'][0]['authorization']['id'];
-}
diff --git a/sample/payments/CreatePayment.php b/sample/payments/CreatePayment.php
index 257226a..3218f1c 100644
--- a/sample/payments/CreatePayment.php
+++ b/sample/payments/CreatePayment.php
@@ -18,26 +18,26 @@ use PayPal\Api\Transaction;
 // Base Address object used as shipping or billing
 // address in a payment. [Optional]
 $addr = new Address();
-$addr->setLine1("3909 Witmer Road");
-$addr->setLine2("Niagara Falls");
-$addr->setCity("Niagara Falls");
-$addr->setState("NY");
-$addr->setPostalCode("14305");
-$addr->setCountryCode("US");
-$addr->setPhone("716-298-1822");
+$addr->setLine1("3909 Witmer Road")
+	->setLine2("Niagara Falls")
+	->setCity("Niagara Falls")
+	->setState("NY")
+	->setPostalCode("14305")
+	->setCountryCode("US")
+	->setPhone("716-298-1822");
 
 // ### CreditCard
 // A resource representing a credit card that can be
 // used to fund a payment.
 $card = new CreditCard();
-$card->setType("visa");
-$card->setNumber("4417119669820331");
-$card->setExpireMonth("11");
-$card->setExpireYear("2019");
-$card->setCvv2("012");
-$card->setFirstName("Joe");
-$card->setLastName("Shopper");
-$card->setBillingAddress($addr);
+$card->setType("visa")
+	->setNumber("4417119669820331")
+	->setExpireMonth("11")
+	->setExpireYear("2019")
+	->setCvv2("012")
+	->setFirstName("Joe")
+	->setLastName("Shopper")
+	->setBillingAddress($addr);
 
 // ### FundingInstrument
 // A resource representing a Payer's funding instrument.
@@ -53,14 +53,14 @@ $fi->setCreditCard($card);
 // Use the List of `FundingInstrument` and the Payment Method
 // as 'credit_card'
 $payer = new Payer();
-$payer->setPaymentMethod("credit_card");
-$payer->setFundingInstruments(array($fi));
+$payer->setPaymentMethod("credit_card")
+	->setFundingInstruments(array($fi));
 
 // ### Amount
 // Let's you specify a payment amount.
 $amount = new Amount();
-$amount->setCurrency("USD");
-$amount->setTotal("1.00");
+$amount->setCurrency("USD")
+	->setTotal("1.00");
 
 // ### Transaction
 // A transaction defines the contract of a
@@ -68,19 +68,25 @@ $amount->setTotal("1.00");
 // is fulfilling it. Transaction is created with
 // a `Payee` and `Amount` types
 $transaction = new Transaction();
-$transaction->setAmount($amount);
-$transaction->setDescription("This is the payment description.");
+$transaction->setAmount($amount)
+	->setDescription("This is the payment description.");
+
+$transaction2 = new Transaction();
+$transaction->setAmount($amount)
+	->setDescription("This is fee payment.");
+var_dump($transaction2->toJson());
 
 // ### Payment
 // A Payment Resource; create one using
 // the above types and intent as 'sale'
 $payment = new Payment();
-$payment->setIntent("sale");
-$payment->setPayer($payer);
-$payment->setTransactions(array($transaction));
-
-
+$payment->setIntent("sale")
+//	->setPayer($payer)
+	->addTransaction($transaction)->addTransaction($transaction2);
 
+echo "*************
"; +var_dump($payment->toJson()); +exit; // ### Create Payment // Create a payment by posting to the APIService // using a valid ApiContext (See bootstrap.php for more on `ApiContext`) diff --git a/sample/payments/CreatePaymentUsingPayPal.php b/sample/payments/CreatePaymentUsingPayPal.php index ea116e1..d228111 100644 --- a/sample/payments/CreatePaymentUsingPayPal.php +++ b/sample/payments/CreatePaymentUsingPayPal.php @@ -25,8 +25,8 @@ $payer->setPaymentMethod("paypal"); // ### Amount // Let's you specify a payment amount. $amount = new Amount(); -$amount->setCurrency("USD"); -$amount->setTotal("1.00"); +$amount->setCurrency("USD") + ->setTotal("1.00"); // ### Transaction // A transaction defines the contract of a @@ -34,25 +34,25 @@ $amount->setTotal("1.00"); // is fulfilling it. Transaction is created with // a `Payee` and `Amount` types $transaction = new Transaction(); -$transaction->setAmount($amount); -$transaction->setDescription("This is the payment description."); +$transaction->setAmount($amount) + ->setDescription("This is the payment description."); // ### Redirect urls // Set the urls that the buyer must be redirected to after // payment approval/ cancellation. $baseUrl = getBaseUrl(); $redirectUrls = new RedirectUrls(); -$redirectUrls->setReturnUrl("$baseUrl/ExecutePayment.php?success=true"); -$redirectUrls->setCancelUrl("$baseUrl/ExecutePayment.php?success=false"); +$redirectUrls->setReturnUrl("$baseUrl/ExecutePayment.php?success=true") + ->setCancelUrl("$baseUrl/ExecutePayment.php?success=false"); // ### Payment // A Payment Resource; create one using // the above types and intent as 'sale' $payment = new Payment(); -$payment->setIntent("sale"); -$payment->setPayer($payer); -$payment->setRedirectUrls($redirectUrls); -$payment->setTransactions(array($transaction)); +$payment->setIntent("sale") + ->setPayer($payer) + ->setRedirectUrls($redirectUrls) + ->setTransactions(array($transaction)); // ### Create Payment // Create a payment by posting to the APIService diff --git a/sample/payments/CreatePaymentUsingSavedCard.php b/sample/payments/CreatePaymentUsingSavedCard.php index dc93e4e..e74cee3 100644 --- a/sample/payments/CreatePaymentUsingSavedCard.php +++ b/sample/payments/CreatePaymentUsingSavedCard.php @@ -38,14 +38,14 @@ $fi->setCreditCardToken($creditCardToken); // Use the List of `FundingInstrument` and the Payment Method // as 'credit_card' $payer = new Payer(); -$payer->setPaymentMethod("credit_card"); -$payer->setFundingInstruments(array($fi)); +$payer->setPaymentMethod("credit_card") + ->setFundingInstruments(array($fi)); // ### Amount // Let's you specify a payment amount. $amount = new Amount(); -$amount->setCurrency("USD"); -$amount->setTotal("1.00"); +$amount->setCurrency("USD") + ->setTotal("1.00"); // ### Transaction // A transaction defines the contract of a @@ -53,16 +53,16 @@ $amount->setTotal("1.00"); // is fulfilling it. Transaction is created with // a `Payee` and `Amount` types $transaction = new Transaction(); -$transaction->setAmount($amount); -$transaction->setDescription("This is the payment description."); +$transaction->setAmount($amount) + ->setDescription("This is the payment description."); // ### Payment // A Payment Resource; create one using // the above types and intent as 'sale' $payment = new Payment(); -$payment->setIntent("sale"); -$payment->setPayer($payer); -$payment->setTransactions(array($transaction)); +$payment->setIntent("sale") + ->setPayer($payer) + ->setTransactions(array($transaction)); // ###Create Payment // Create a payment by posting to the APIService diff --git a/sample/payments/GetAuthorization.php b/sample/payments/GetAuthorization.php index d57da8e..db3400c 100644 --- a/sample/payments/GetAuthorization.php +++ b/sample/payments/GetAuthorization.php @@ -6,23 +6,20 @@ require __DIR__ . '/../bootstrap.php'; use PayPal\Api\Authorization; -use PayPal\Api\Address; -use PayPal\Api\Amount; -use PayPal\Api\CreditCard; -use PayPal\Api\Payer; -use PayPal\Api\Payment; -use PayPal\Api\FundingInstrument; -use PayPal\Api\Transaction; // ### GetAuthorization -// GetAuthorization by posting to the APIService -// using a valid ApiContext (See bootstrap.php for more on `ApiContext`) -// The return object contains the status; +// You can retrieve info about an Authorization +// by invoking the Authorization::get method +// with a valid ApiContext (See bootstrap.php for more on `ApiContext`) +// The return object contains the authorization state. + try { - // create payment to get authorization Id + // create a authorization to get authorization Id + // createAuthorization is defined in common.php $authId = createAuthorization($apiContext); + // Retrieve the authorization $authorization = Authorization::get($authId, $apiContext); } catch (PayPal\Exception\PPConnectionException $ex) { echo "Exception: " . $ex->getMessage() . PHP_EOL; @@ -33,57 +30,10 @@ try {
- Get Authorization: + Retrieved Authorization: getId();?>
toArray());?>
Back -setLine1("3909 Witmer Road"); - $addr->setLine2("Niagara Falls"); - $addr->setCity("Niagara Falls"); - $addr->setState("NY"); - $addr->setPostalCode("14305"); - $addr->setCountryCode("US"); - $addr->setPhone("716-298-1822"); - - $card = new CreditCard(); - $card->setType("visa"); - $card->setNumber("4417119669820331"); - $card->setExpireMonth("11"); - $card->setExpireYear("2019"); - $card->setCvv2("012"); - $card->setFirstName("Joe"); - $card->setLastName("Shopper"); - $card->setBillingAddress($addr); - - $fi = new FundingInstrument(); - $fi->setCreditCard($card); - - $payer = new Payer(); - $payer->setPaymentMethod("credit_card"); - $payer->setFundingInstruments(array($fi)); - - $amount = new Amount(); - $amount->setCurrency("USD"); - $amount->setTotal("1.00"); - - $transaction = new Transaction(); - $transaction->setAmount($amount); - $transaction->setDescription("This is the payment description."); - - $payment = new Payment(); - $payment->setIntent("authorize"); - $payment->setPayer($payer); - $payment->setTransactions(array($transaction)); - - $paymnt = $payment->create($apiContext); - $resArray = $paymnt->toArray(); - - return $authId = $resArray['transactions'][0]['related_resources'][0]['authorization']['id']; -} diff --git a/sample/payments/GetCapture.php b/sample/payments/GetCapture.php index 8db26af..5fbe148 100644 --- a/sample/payments/GetCapture.php +++ b/sample/payments/GetCapture.php @@ -4,36 +4,29 @@ // API used: /v1/payments/capture/<$captureId> require __DIR__ . '/../bootstrap.php'; + use PayPal\Api\Capture; -use PayPal\Api\Address; use PayPal\Api\Amount; -use PayPal\Api\CreditCard; -use PayPal\Api\Payer; -use PayPal\Api\Payment; -use PayPal\Api\FundingInstrument; -use PayPal\Api\Transaction; use PayPal\Api\Authorization; -// ### Capture Payment -// Capture Payment by posting to the APIService -// using a valid ApiContext (See bootstrap.php for more on `ApiContext`) -// The return object contains the status; +// ### Create a mock Capture try { // create payment to get authorization Id $authId = createAuthorization($apiContext); $amt = new Amount(); - $amt->setCurrency("USD"); - $amt->setTotal("1.00"); + $amt->setCurrency("USD") + ->setTotal("1.00"); ### Capture $captur = new Capture(); - $captur->setId($authId); - $captur->setAmount($amt); + $captur->setId($authId) + ->setAmount($amt); // get the authorization $authorization = Authorization::get($authId, $apiContext); - + + // Create a capture $capt = $authorization->capture($captur, $apiContext); } catch (PayPal\Exception\PPConnectionException $ex) { echo "Exception: " . $ex->getMessage() . PHP_EOL; @@ -41,10 +34,9 @@ try { exit(1); } -// ### Get Capture -// Get Capture by posting to the APIService -// using a valid ApiContext (See bootstrap.php for more on `ApiContext`) -// The return object contains the status; +// ### Retrieve Capture details +// You can look up a capture by invoking the Capture::get method +// with a valid ApiContext (See bootstrap.php for more on `ApiContext`) try { $capture = Capture::get($capt->getId(), $apiContext); } catch (PayPal\Exception\PPConnectionException $ex) { @@ -56,57 +48,10 @@ try {
- Get Capture : + Capture Id: getId();?>
toArray());?>
Back -setLine1("3909 Witmer Road"); - $addr->setLine2("Niagara Falls"); - $addr->setCity("Niagara Falls"); - $addr->setState("NY"); - $addr->setPostalCode("14305"); - $addr->setCountryCode("US"); - $addr->setPhone("716-298-1822"); - - $card = new CreditCard(); - $card->setType("visa"); - $card->setNumber("4417119669820331"); - $card->setExpireMonth("11"); - $card->setExpireYear("2019"); - $card->setCvv2("012"); - $card->setFirstName("Joe"); - $card->setLastName("Shopper"); - $card->setBillingAddress($addr); - - $fi = new FundingInstrument(); - $fi->setCreditCard($card); - - $payer = new Payer(); - $payer->setPaymentMethod("credit_card"); - $payer->setFundingInstruments(array($fi)); - - $amount = new Amount(); - $amount->setCurrency("USD"); - $amount->setTotal("1.00"); - - $transaction = new Transaction(); - $transaction->setAmount($amount); - $transaction->setDescription("This is the payment description."); - - $payment = new Payment(); - $payment->setIntent("authorize"); - $payment->setPayer($payer); - $payment->setTransactions(array($transaction)); - - $paymnt = $payment->create($apiContext); - $resArray = $paymnt->toArray(); - - return $authId = $resArray['transactions'][0]['related_resources'][0]['authorization']['id']; -} diff --git a/sample/payments/Reauthorization.php b/sample/payments/Reauthorization.php index 8e5f004..e4c42b2 100644 --- a/sample/payments/Reauthorization.php +++ b/sample/payments/Reauthorization.php @@ -2,27 +2,32 @@ // ##Reauthorization Sample // Sample showing how to do a reauthorization // API used: v1/payments/authorization/{authorization_id}/reauthorize + require __DIR__ . '/../bootstrap.php'; use PayPal\Api\Authorization; use PayPal\Api\Amount; +// ### Reauthorization +// Reauthorization is available only for PayPal account payments +// and not for credit card payments. + +// You can reauthorize a payment only once 4 to 29 +// days after the 3-day honor period for the original authorization +// has expired. + try { - // ###Reauthorization - // Retrieve a authorization id from authorization object - // by making a `Payment Using PayPal` with intent - // as `authorize`. You can reauthorize a payment only once 4 to 29 - // days after 3-day honor period for the original authorization - // expires. + + // ### Retrieve a authorization using the authorization id $authorization = Authorization::get('7GH53639GA425732B', $apiContext); $amount = new Amount(); $amount->setCurrency("USD"); $amount->setTotal("1.00"); + // ### Reauthorize with amount being reauthorized $authorization->setAmount($amount); - $reauthorization = $authorization->reauthorize($apiContext); -}catch (PayPal\Exception\PPConnectionException $ex){ +} catch (PayPal\Exception\PPConnectionException $ex) { echo "Exception: " . $ex->getMessage() . PHP_EOL; var_dump($ex->getData()); exit(1); @@ -31,7 +36,7 @@ try {
- Reauthorize: + Reauthorization Id: getId();?>
diff --git a/sample/payments/RefundCapture.php b/sample/payments/RefundCapture.php
index 2d8ec26..7a9bfd3 100644
--- a/sample/payments/RefundCapture.php
+++ b/sample/payments/RefundCapture.php
@@ -5,39 +5,31 @@
 // using the Capture API.
 // API used: /v1/payments/capture/{}/refund
 require __DIR__ . '/../bootstrap.php';
+
 use PayPal\Api\Authorization;
 use PayPal\Api\Capture;
 use PayPal\Api\Refund;
-use PayPal\Api\Address;
 use PayPal\Api\Amount;
-use PayPal\Api\CreditCard;
-use PayPal\Api\Payer;
-use PayPal\Api\Payment;
-use PayPal\Api\FundingInstrument;
-use PayPal\Api\Transaction;
 use PayPal\Rest\ApiContext;
-use PayPal\Auth\OAuthTokenCredential;
 
 
-// ### Capture Payment
-// Capture Payment by posting to the APIService
-// using a valid ApiContext (See bootstrap.php for more on `ApiContext`)
-// The return object contains the status;
+// ### Create a mock capture
 try {
 	// create payment to get authorization Id
 	$authId = createAuthorization($apiContext);
 
 	$amt = new Amount();
-	$amt->setCurrency("USD");
-	$amt->setTotal("1.00");
+	$amt->setCurrency("USD")
+		->setTotal("1.00");
 
 	### Capture
 	$captur = new Capture();
 	$captur->setAmount($amt);
 
-	// get the authorization
+	// Get the authorization
 	$authorization = Authorization::get($authId, $apiContext);
 	
+	// Create a capture
 	$capt = $authorization->capture($captur, $apiContext);
 } catch (PayPal\Exception\PPConnectionException $ex) {
 	echo "Exception: " . $ex->getMessage() . PHP_EOL;
@@ -47,20 +39,16 @@ try {
 
 // ### Refund
 // Create a refund object indicating
-// refund amount
-
+// refund amount and call the refund method
 
 $refund = new Refund();
 $refund->setAmount($amt);
 
-
 try {
-	$capture = Capture::get($capt->getId(), $apiContext);
-
 	// Create a new apiContext object so we send a new
 	// PayPal-Request-Id (idempotency) header for this resource
 	$apiContext = new ApiContext($apiContext->getCredential());
-	$captureRefund = $capture->refund($refund, $apiContext);
+	$captureRefund = $capt->refund($refund, $apiContext);
 } catch (PayPal\Exception\PPConnectionException $ex) {
 	echo "Exception: " . $ex->getMessage() . PHP_EOL;
 	var_dump($ex->getData());
@@ -75,50 +63,3 @@ try {
 	Back
 
 
-setLine1("3909 Witmer Road");
-	$addr->setLine2("Niagara Falls");
-	$addr->setCity("Niagara Falls");
-	$addr->setState("NY");
-	$addr->setPostalCode("14305");
-	$addr->setCountryCode("US");
-	$addr->setPhone("716-298-1822");
-	
-	$card = new CreditCard();
-	$card->setType("visa");
-	$card->setNumber("4417119669820331");
-	$card->setExpireMonth("11");
-	$card->setExpireYear("2019");
-	$card->setCvv2("012");
-	$card->setFirstName("Joe");
-	$card->setLastName("Shopper");
-	$card->setBillingAddress($addr);
-	
-	$fi = new FundingInstrument();
-	$fi->setCreditCard($card);
-	
-	$payer = new Payer();
-	$payer->setPaymentMethod("credit_card");
-	$payer->setFundingInstruments(array($fi));
-	
-	$amount = new Amount();
-	$amount->setCurrency("USD");
-	$amount->setTotal("10.00");
-	
-	$transaction = new Transaction();
-	$transaction->setAmount($amount);
-	$transaction->setDescription("This is the payment description.");
-	
-	$payment = new Payment();
-	$payment->setIntent("authorize");
-	$payment->setPayer($payer);
-	$payment->setTransactions(array($transaction));
-	
-	$paymnt = $payment->create($apiContext);
-	$resArray = $paymnt->toArray();
-	
-	return $authId = $resArray['transactions'][0]['related_resources'][0]['authorization']['id'];
-}
diff --git a/sample/payments/VoidAuthorization.php b/sample/payments/VoidAuthorization.php
index ddddc76..bc9dc7d 100644
--- a/sample/payments/VoidAuthorization.php
+++ b/sample/payments/VoidAuthorization.php
@@ -6,26 +6,19 @@
 require __DIR__ . '/../bootstrap.php';
 
 use PayPal\Api\Authorization;
-use PayPal\Api\Address;
-use PayPal\Api\Amount;
-use PayPal\Api\CreditCard;
-use PayPal\Api\Payer;
-use PayPal\Api\Payment;
-use PayPal\Api\FundingInstrument;
-use PayPal\Api\Transaction;
-
 
 
 // ### VoidAuthorization
-// VoidAuthorization by posting to the APIService
-// using a valid ApiContext (See bootstrap.php for more on `ApiContext`)
-// The return object contains the status;
+// You can void a previously authorized payment
+// by invoking the $authorization->void method
+// with a valid ApiContext (See bootstrap.php for more on `ApiContext`)
 try {
 	// create payment to get authorization Id
+	// createAuthorization is defined in common.php
 	$authId = createAuthorization($apiContext);
-	$authorization = Authorization::get($authId, $apiContext);
 	
-	$void = $authorization->void($apiContext);
+	$authorization = Authorization::get($authId, $apiContext);
+	$voidedAuth = $authorization->void($apiContext);
 } catch (PayPal\Exception\PPConnectionException $ex) {
 	echo "Exception: " . $ex->getMessage() . PHP_EOL;
 	var_dump($ex->getData());
@@ -35,56 +28,9 @@ try {
 
 
 	
- Void Authorization: + Voided authorization
-
toArray());?>
+
toArray());?>
Back -setLine1("3909 Witmer Road"); - $addr->setLine2("Niagara Falls"); - $addr->setCity("Niagara Falls"); - $addr->setState("NY"); - $addr->setPostalCode("14305"); - $addr->setCountryCode("US"); - $addr->setPhone("716-298-1822"); - - $card = new CreditCard(); - $card->setType("visa"); - $card->setNumber("4417119669820331"); - $card->setExpireMonth("11"); - $card->setExpireYear("2019"); - $card->setCvv2("012"); - $card->setFirstName("Joe"); - $card->setLastName("Shopper"); - $card->setBillingAddress($addr); - - $fi = new FundingInstrument(); - $fi->setCreditCard($card); - - $payer = new Payer(); - $payer->setPaymentMethod("credit_card"); - $payer->setFundingInstruments(array($fi)); - - $amount = new Amount(); - $amount->setCurrency("USD"); - $amount->setTotal("1.00"); - - $transaction = new Transaction(); - $transaction->setAmount($amount); - $transaction->setDescription("This is the payment description."); - - $payment = new Payment(); - $payment->setIntent("authorize"); - $payment->setPayer($payer); - $payment->setTransactions(array($transaction)); - - $paymnt = $payment->create($apiContext); - $resArray = $paymnt->toArray(); - - return $authId = $resArray['transactions'][0]['related_resources'][0]['authorization']['id']; -} diff --git a/sample/sale/RefundSale.php b/sample/sale/RefundSale.php index 1e9bff9..fa34854 100644 --- a/sample/sale/RefundSale.php +++ b/sample/sale/RefundSale.php @@ -15,8 +15,8 @@ use PayPal\Api\Sale; // Create a refund object indicating // refund amount $amt = new Amount(); -$amt->setCurrency('USD'); -$amt->setTotal('0.01'); +$amt->setCurrency('USD') + ->setTotal('0.01'); $refund = new Refund(); $refund->setAmount($amt); diff --git a/sample/source/AuthorizationCapture.html b/sample/source/AuthorizationCapture.html index 3bc228e..463eb12 100644 --- a/sample/source/AuthorizationCapture.html +++ b/sample/source/AuthorizationCapture.html @@ -2,28 +2,23 @@

This sample code demonstrate how you can capture the authorized payment API used: /v1/payments/payment

require __DIR__ . '/../bootstrap.php'; -use PayPal\Api\Capture; -use PayPal\Api\Authorization; -use PayPal\Api\Address; use PayPal\Api\Amount; -use PayPal\Api\CreditCard; -use PayPal\Api\Payer; -use PayPal\Api\Payment; -use PayPal\Api\FundingInstrument; -use PayPal\Api\Transaction;

Capture Payment

+use PayPal\Api\Capture; +use PayPal\Api\Authorization;

Capture Payment

-

Capture Payment by posting to the APIService -using a valid ApiContext (See bootstrap.php for more on ApiContext) -The return object contains the status;

try {

create payment to get authorization Id

$authId = createAuthorization($apiContext); +

You can capture and process a previously created authorization +by invoking the $authorization->capture method +with a valid ApiContext (See bootstrap.php for more on ApiContext)

try {

create payment to get authorization Id +createAuthorization defined in common.php

$authId = createAuthorization($apiContext); $amt = new Amount(); - $amt->setCurrency("USD"); - $amt->setTotal("1.00"); + $amt->setCurrency("USD") + ->setTotal("1.00"); ### Capture $capture = new Capture(); - $capture->setId($authId); - $capture->setAmount($amt);

get the authorization

$authorization = Authorization::get($authId, $apiContext); + $capture->setId($authId) + ->setAmount($amt);

Get the authorization

$authorization = Authorization::get($authId, $apiContext); $getCapture = $authorization->capture($capture, $apiContext); } catch (PayPal\Exception\PPConnectionException $ex) { @@ -35,7 +30,7 @@ The return object contains the status;

<html> <body> <div> - Capture payment: + Captured payment <?php echo $getCapture->getParentPayment(); ?>. Capture Id: <?php echo $getCapture->getId();?> </div> <pre> @@ -43,51 +38,4 @@ The return object contains the status;

</pre> <a href='../index.html'>Back</a> </body> -</html> -<?php -function createAuthorization($apiContext) -{ - $addr = new Address(); - $addr->setLine1("3909 Witmer Road"); - $addr->setLine2("Niagara Falls"); - $addr->setCity("Niagara Falls"); - $addr->setState("NY"); - $addr->setPostalCode("14305"); - $addr->setCountryCode("US"); - $addr->setPhone("716-298-1822"); - - $card = new CreditCard(); - $card->setType("visa"); - $card->setNumber("4417119669820331"); - $card->setExpireMonth("11"); - $card->setExpireYear("2019"); - $card->setCvv2("012"); - $card->setFirstName("Joe"); - $card->setLastName("Shopper"); - $card->setBillingAddress($addr); - - $fi = new FundingInstrument(); - $fi->setCreditCard($card); - - $payer = new Payer(); - $payer->setPaymentMethod("credit_card"); - $payer->setFundingInstruments(array($fi)); - - $amount = new Amount(); - $amount->setCurrency("USD"); - $amount->setTotal("1.00"); - - $transaction = new Transaction(); - $transaction->setAmount($amount); - $transaction->setDescription("This is the payment description."); - - $payment = new Payment(); - $payment->setIntent("authorize"); - $payment->setPayer($payer); - $payment->setTransactions(array($transaction)); - - $paymnt = $payment->create($apiContext); - $resArray = $paymnt->toArray(); - - return $authId = $resArray['transactions'][0]['related_resources'][0]['authorization']['id']; -}
\ No newline at end of file +</html>
\ No newline at end of file diff --git a/sample/source/CreateCreditCard.html b/sample/source/CreateCreditCard.html index 4e4dc69..9ca4434 100644 --- a/sample/source/CreateCreditCard.html +++ b/sample/source/CreateCreditCard.html @@ -13,18 +13,18 @@ API used: POST /v1/vault/credit-card

A resource representing a credit card that can be used to fund a payment.

$card = new CreditCard(); -$card->setType("visa"); -$card->setNumber("4417119669820331"); -$card->setExpireMonth("11"); -$card->setExpireYear("2019"); -$card->setCvv2("012"); -$card->setFirstName("Joe"); -$card->setLastName("Shopper");

Save card

+$card->setType("visa") + ->setNumber("4417119669820331") + ->setExpireMonth("11") + ->setExpireYear("2019") + ->setCvv2("012") + ->setFirstName("Joe") + ->setLastName("Shopper");

Save card

Creates the credit card as a resource in the PayPal vault. The response contains an 'id' that you can use to refer to it -in the future payments. +in future payments. (See bootstrap.php for more on ApiContext)

try { $card->create($apiContext); } catch (PayPal\Exception\PPConnectionException $ex) { diff --git a/sample/source/CreatePayment.html b/sample/source/CreatePayment.html index b3cd52e..ac4d0e6 100644 --- a/sample/source/CreatePayment.html +++ b/sample/source/CreatePayment.html @@ -13,24 +13,24 @@ API used: /v1/payments/payment

$addr = new Address(); -$addr->setLine1("3909 Witmer Road"); -$addr->setLine2("Niagara Falls"); -$addr->setCity("Niagara Falls"); -$addr->setState("NY"); -$addr->setPostalCode("14305"); -$addr->setCountryCode("US"); -$addr->setPhone("716-298-1822");

CreditCard

+$addr->setLine1("3909 Witmer Road") + ->setLine2("Niagara Falls") + ->setCity("Niagara Falls") + ->setState("NY") + ->setPostalCode("14305") + ->setCountryCode("US") + ->setPhone("716-298-1822");

CreditCard

A resource representing a credit card that can be used to fund a payment.

$card = new CreditCard(); -$card->setType("visa"); -$card->setNumber("4417119669820331"); -$card->setExpireMonth("11"); -$card->setExpireYear("2019"); -$card->setCvv2("012"); -$card->setFirstName("Joe"); -$card->setLastName("Shopper"); -$card->setBillingAddress($addr);

FundingInstrument

+$card->setType("visa") + ->setNumber("4417119669820331") + ->setExpireMonth("11") + ->setExpireYear("2019") + ->setCvv2("012") + ->setFirstName("Joe") + ->setLastName("Shopper") + ->setBillingAddress($addr);

FundingInstrument

A resource representing a Payer's funding instrument. Use a Payer ID (A unique identifier of the payer generated @@ -42,25 +42,25 @@ and the CreditCardDetails

A resource representing a Payer that funds a payment Use the List of FundingInstrument and the Payment Method as 'credit_card'

$payer = new Payer(); -$payer->setPaymentMethod("credit_card"); -$payer->setFundingInstruments(array($fi));

Amount

+$payer->setPaymentMethod("credit_card") + ->setFundingInstruments(array($fi));

Amount

Let's you specify a payment amount.

$amount = new Amount(); -$amount->setCurrency("USD"); -$amount->setTotal("1.00");

Transaction

+$amount->setCurrency("USD") + ->setTotal("1.00");

Transaction

A transaction defines the contract of a payment - what is the payment for and who is fulfilling it. Transaction is created with a Payee and Amount types

$transaction = new Transaction(); -$transaction->setAmount($amount); -$transaction->setDescription("This is the payment description.");

Payment

+$transaction->setAmount($amount) + ->setDescription("This is the payment description.");

Payment

A Payment Resource; create one using the above types and intent as 'sale'

$payment = new Payment(); -$payment->setIntent("sale"); -$payment->setPayer($payer); -$payment->setTransactions(array($transaction));

Create Payment

+$payment->setIntent("sale") + ->setPayer($payer) + ->setTransactions(array($transaction));

Create Payment

Create a payment by posting to the APIService using a valid ApiContext (See bootstrap.php for more on ApiContext) diff --git a/sample/source/CreatePaymentUsingPayPal.html b/sample/source/CreatePaymentUsingPayPal.html index 28122f5..4cca2db 100644 --- a/sample/source/CreatePaymentUsingPayPal.html +++ b/sample/source/CreatePaymentUsingPayPal.html @@ -18,28 +18,28 @@ as 'credit_card'

$payer->setPaymentMethod("paypal");

Amount

Let's you specify a payment amount.

$amount = new Amount(); -$amount->setCurrency("USD"); -$amount->setTotal("1.00");

Transaction

+$amount->setCurrency("USD") + ->setTotal("1.00");

Transaction

A transaction defines the contract of a payment - what is the payment for and who is fulfilling it. Transaction is created with a Payee and Amount types

$transaction = new Transaction(); -$transaction->setAmount($amount); -$transaction->setDescription("This is the payment description.");

Redirect urls

+$transaction->setAmount($amount) + ->setDescription("This is the payment description.");

Redirect urls

Set the urls that the buyer must be redirected to after payment approval/ cancellation.

$baseUrl = getBaseUrl(); $redirectUrls = new RedirectUrls(); -$redirectUrls->setReturnUrl("$baseUrl/ExecutePayment.php?success=true"); -$redirectUrls->setCancelUrl("$baseUrl/ExecutePayment.php?success=false");

Payment

+$redirectUrls->setReturnUrl("$baseUrl/ExecutePayment.php?success=true") + ->setCancelUrl("$baseUrl/ExecutePayment.php?success=false");

Payment

A Payment Resource; create one using the above types and intent as 'sale'

$payment = new Payment(); -$payment->setIntent("sale"); -$payment->setPayer($payer); -$payment->setRedirectUrls($redirectUrls); -$payment->setTransactions(array($transaction));

Create Payment

+$payment->setIntent("sale") + ->setPayer($payer) + ->setRedirectUrls($redirectUrls) + ->setTransactions(array($transaction));

Create Payment

Create a payment by posting to the APIService using a valid apiContext. diff --git a/sample/source/CreatePaymentUsingSavedCard.html b/sample/source/CreatePaymentUsingSavedCard.html index fa4aeec..4b207e1 100644 --- a/sample/source/CreatePaymentUsingSavedCard.html +++ b/sample/source/CreatePaymentUsingSavedCard.html @@ -29,25 +29,25 @@ and the CreditCardDetails

A resource representing a Payer that funds a payment Use the List of FundingInstrument and the Payment Method as 'credit_card'

$payer = new Payer(); -$payer->setPaymentMethod("credit_card"); -$payer->setFundingInstruments(array($fi));

Amount

+$payer->setPaymentMethod("credit_card") + ->setFundingInstruments(array($fi));

Amount

Let's you specify a payment amount.

$amount = new Amount(); -$amount->setCurrency("USD"); -$amount->setTotal("1.00");

Transaction

+$amount->setCurrency("USD") + ->setTotal("1.00");

Transaction

A transaction defines the contract of a payment - what is the payment for and who is fulfilling it. Transaction is created with a Payee and Amount types

$transaction = new Transaction(); -$transaction->setAmount($amount); -$transaction->setDescription("This is the payment description.");

Payment

+$transaction->setAmount($amount) + ->setDescription("This is the payment description.");

Payment

A Payment Resource; create one using the above types and intent as 'sale'

$payment = new Payment(); -$payment->setIntent("sale"); -$payment->setPayer($payer); -$payment->setTransactions(array($transaction));

Create Payment

+$payment->setIntent("sale") + ->setPayer($payer) + ->setTransactions(array($transaction));

Create Payment

Create a payment by posting to the APIService (See bootstrap.php for more on ApiContext) diff --git a/sample/source/DeleteCreditCard.html b/sample/source/DeleteCreditCard.html index 2988d11..a18ab74 100644 --- a/sample/source/DeleteCreditCard.html +++ b/sample/source/DeleteCreditCard.html @@ -10,27 +10,27 @@ NOTE: HTTP method used here is DELETE

A resource representing a credit card that can be used to fund a payment.

$card = new CreditCard(); -$card->setType("visa"); -$card->setNumber("4417119669820331"); -$card->setExpireMonth("11"); -$card->setExpireYear("2019"); -$card->setCvv2("012"); -$card->setFirstName("Joe"); -$card->setLastName("Shopper");

Save card

+$card->setType("visa") + ->setNumber("4417119669820331") + ->setExpireMonth("11") + ->setExpireYear("2019") + ->setCvv2("012") + ->setFirstName("Joe") + ->setLastName("Shopper");

Save card

Creates the credit card as a resource in the PayPal vault. The response contains an 'id' that you can use to refer to it in the future payments. (See bootstrap.php for more on ApiContext)

try { - $res = $card->create($apiContext); + $card = $card->create($apiContext); } catch (PayPal\Exception\PPConnectionException $ex) { echo "Exception:" . $ex->getMessage() . PHP_EOL; var_dump($ex->getData()); exit(1); } -$creditCard = CreditCard::get($res->getId(), $apiContext); +$creditCard = CreditCard::get($card->getId(), $apiContext); try {

Delete Card

deletes saved credit card @@ -43,7 +43,6 @@ in the future payments. <html> <body> -<div>Delete CreditCard:</div> <p> Credit Card deleted Successfully</p> <a href='../index.html'>Back</a> </body> diff --git a/sample/source/GetAuthorization.html b/sample/source/GetAuthorization.html index e690427..c9a1d71 100644 --- a/sample/source/GetAuthorization.html +++ b/sample/source/GetAuthorization.html @@ -3,20 +3,14 @@

This sample code demonstrate how you can get details of an authorized payment API used: /v1/payments/authorization/<$authorizationId>

require __DIR__ . '/../bootstrap.php'; -use PayPal\Api\Authorization; -use PayPal\Api\Address; -use PayPal\Api\Amount; -use PayPal\Api\CreditCard; -use PayPal\Api\Payer; -use PayPal\Api\Payment; -use PayPal\Api\FundingInstrument; -use PayPal\Api\Transaction;

GetAuthorization

+use PayPal\Api\Authorization;

GetAuthorization

-

GetAuthorization by posting to the APIService -using a valid ApiContext (See bootstrap.php for more on ApiContext) -The return object contains the status;

try {

create payment to get authorization Id

$authId = createAuthorization($apiContext); - - $authorization = Authorization::get($authId, $apiContext); +

You can retrieve info about an Authorization +by invoking the Authorization::get method +with a valid ApiContext (See bootstrap.php for more on ApiContext) +The return object contains the authorization state.

try {

create a authorization to get authorization Id +createAuthorization is defined in common.php

$authId = createAuthorization($apiContext); +

Retrieve the authorization

$authorization = Authorization::get($authId, $apiContext); } catch (PayPal\Exception\PPConnectionException $ex) { echo "Exception: " . $ex->getMessage() . PHP_EOL; var_dump($ex->getData()); @@ -26,57 +20,10 @@ The return object contains the status;

<html> <body> <div> - Get Authorization: + Retrieved Authorization: <?php echo $authorization->getId();?> </div> <pre><?php var_dump($authorization->toArray());?></pre> <a href='../index.html'>Back</a> </body> -</html> -<?php -function createAuthorization($apiContext) -{ - $addr = new Address(); - $addr->setLine1("3909 Witmer Road"); - $addr->setLine2("Niagara Falls"); - $addr->setCity("Niagara Falls"); - $addr->setState("NY"); - $addr->setPostalCode("14305"); - $addr->setCountryCode("US"); - $addr->setPhone("716-298-1822"); - - $card = new CreditCard(); - $card->setType("visa"); - $card->setNumber("4417119669820331"); - $card->setExpireMonth("11"); - $card->setExpireYear("2019"); - $card->setCvv2("012"); - $card->setFirstName("Joe"); - $card->setLastName("Shopper"); - $card->setBillingAddress($addr); - - $fi = new FundingInstrument(); - $fi->setCreditCard($card); - - $payer = new Payer(); - $payer->setPaymentMethod("credit_card"); - $payer->setFundingInstruments(array($fi)); - - $amount = new Amount(); - $amount->setCurrency("USD"); - $amount->setTotal("1.00"); - - $transaction = new Transaction(); - $transaction->setAmount($amount); - $transaction->setDescription("This is the payment description."); - - $payment = new Payment(); - $payment->setIntent("authorize"); - $payment->setPayer($payer); - $payment->setTransactions(array($transaction)); - - $paymnt = $payment->create($apiContext); - $resArray = $paymnt->toArray(); - - return $authId = $resArray['transactions'][0]['related_resources'][0]['authorization']['id']; -}
\ No newline at end of file +</html> \ No newline at end of file diff --git a/sample/source/GetCapture.html b/sample/source/GetCapture.html index 7fe202b..481e401 100644 --- a/sample/source/GetCapture.html +++ b/sample/source/GetCapture.html @@ -2,38 +2,26 @@

This sample code demonstrate how you can get the details of Captured Payment API used: /v1/payments/capture/<$captureId>

require __DIR__ . '/../bootstrap.php'; + use PayPal\Api\Capture; -use PayPal\Api\Address; use PayPal\Api\Amount; -use PayPal\Api\CreditCard; -use PayPal\Api\Payer; -use PayPal\Api\Payment; -use PayPal\Api\FundingInstrument; -use PayPal\Api\Transaction; -use PayPal\Api\Authorization;

Capture Payment

- -

Capture Payment by posting to the APIService -using a valid ApiContext (See bootstrap.php for more on ApiContext) -The return object contains the status;

try {

create payment to get authorization Id

$authId = createAuthorization($apiContext); +use PayPal\Api\Authorization;

Create a mock Capture

try {

create payment to get authorization Id

$authId = createAuthorization($apiContext); $amt = new Amount(); - $amt->setCurrency("USD"); - $amt->setTotal("1.00"); + $amt->setCurrency("USD") + ->setTotal("1.00"); ### Capture $captur = new Capture(); - $captur->setId($authId); - $captur->setAmount($amt);

get the authorization

$authorization = Authorization::get($authId, $apiContext); - - $capt = $authorization->capture($captur, $apiContext); + $captur->setId($authId) + ->setAmount($amt);

get the authorization

$authorization = Authorization::get($authId, $apiContext);

Create a capture

$capt = $authorization->capture($captur, $apiContext); } catch (PayPal\Exception\PPConnectionException $ex) { echo "Exception: " . $ex->getMessage() . PHP_EOL; var_dump($ex->getData()); exit(1); -}

Get Capture

+}

Retrieve Capture details

-

Get Capture by posting to the APIService -using a valid ApiContext (See bootstrap.php for more on ApiContext) -The return object contains the status;

try { +

You can look up a capture by invoking the Capture::get method +with a valid ApiContext (See bootstrap.php for more on ApiContext)

try { $capture = Capture::get($capt->getId(), $apiContext); } catch (PayPal\Exception\PPConnectionException $ex) { echo "Exception: " . $ex->getMessage() . PHP_EOL; @@ -44,57 +32,10 @@ The return object contains the status;

<html> <body> <div> - Get Capture : + Capture Id: <?php echo $capture->getId();?> </div> <pre><?php var_dump($capture->toArray());?></pre> <a href='../index.html'>Back</a> </body> -</html> -<?php -function createAuthorization($apiContext) -{ - $addr = new Address(); - $addr->setLine1("3909 Witmer Road"); - $addr->setLine2("Niagara Falls"); - $addr->setCity("Niagara Falls"); - $addr->setState("NY"); - $addr->setPostalCode("14305"); - $addr->setCountryCode("US"); - $addr->setPhone("716-298-1822"); - - $card = new CreditCard(); - $card->setType("visa"); - $card->setNumber("4417119669820331"); - $card->setExpireMonth("11"); - $card->setExpireYear("2019"); - $card->setCvv2("012"); - $card->setFirstName("Joe"); - $card->setLastName("Shopper"); - $card->setBillingAddress($addr); - - $fi = new FundingInstrument(); - $fi->setCreditCard($card); - - $payer = new Payer(); - $payer->setPaymentMethod("credit_card"); - $payer->setFundingInstruments(array($fi)); - - $amount = new Amount(); - $amount->setCurrency("USD"); - $amount->setTotal("1.00"); - - $transaction = new Transaction(); - $transaction->setAmount($amount); - $transaction->setDescription("This is the payment description."); - - $payment = new Payment(); - $payment->setIntent("authorize"); - $payment->setPayer($payer); - $payment->setTransactions(array($transaction)); - - $paymnt = $payment->create($apiContext); - $resArray = $paymnt->toArray(); - - return $authId = $resArray['transactions'][0]['related_resources'][0]['authorization']['id']; -}
\ No newline at end of file +</html> \ No newline at end of file diff --git a/sample/source/Reauthorization.html b/sample/source/Reauthorization.html index a42eb16..a26843b 100644 --- a/sample/source/Reauthorization.html +++ b/sample/source/Reauthorization.html @@ -3,24 +3,19 @@

Sample showing how to do a reauthorization API used: v1/payments/authorization/{authorization_id}/reauthorize

require __DIR__ . '/../bootstrap.php'; use PayPal\Api\Authorization; -use PayPal\Api\Amount; - -try {

Reauthorization

+use PayPal\Api\Amount;

Reauthorization

-

Retrieve a authorization id from authorization object -by making a Payment Using PayPal with intent -as authorize. You can reauthorize a payment only once 4 to 29 -days after 3-day honor period for the original authorization -expires.

$authorization = Authorization::get('7GH53639GA425732B', $apiContext); +

Reauthorization is available only for PayPal account payments +and not for credit card payments.

You can reauthorize a payment only once 4 to 29 +days after the 3-day honor period for the original authorization +has expired.

try { +

Retrieve a authorization using the authorization id

$authorization = Authorization::get('7GH53639GA425732B', $apiContext); $amount = new Amount(); $amount->setCurrency("USD"); - $amount->setTotal("1.00"); - - $authorization->setAmount($amount); - + $amount->setTotal("1.00");

Reauthorize with amount being reauthorized

$authorization->setAmount($amount); $reauthorization = $authorization->reauthorize($apiContext); -}catch (PayPal\Exception\PPConnectionException $ex){ +} catch (PayPal\Exception\PPConnectionException $ex) { echo "Exception: " . $ex->getMessage() . PHP_EOL; var_dump($ex->getData()); exit(1); @@ -29,7 +24,7 @@ expires.

<html> <body> <div> - Reauthorize: + Reauthorization Id: <?php echo $reauthorization->getId();?> </div> <pre> diff --git a/sample/source/RefundCapture.html b/sample/source/RefundCapture.html index 30ee488..4969b7f 100644 --- a/sample/source/RefundCapture.html +++ b/sample/source/RefundCapture.html @@ -4,47 +4,34 @@ process a refund on a Captured transaction created using the Capture API. API used: /v1/payments/capture/{}/refund

require __DIR__ . '/../bootstrap.php'; + use PayPal\Api\Authorization; use PayPal\Api\Capture; use PayPal\Api\Refund; -use PayPal\Api\Address; use PayPal\Api\Amount; -use PayPal\Api\CreditCard; -use PayPal\Api\Payer; -use PayPal\Api\Payment; -use PayPal\Api\FundingInstrument; -use PayPal\Api\Transaction; -use PayPal\Rest\ApiContext; -use PayPal\Auth\OAuthTokenCredential;

Capture Payment

- -

Capture Payment by posting to the APIService -using a valid ApiContext (See bootstrap.php for more on ApiContext) -The return object contains the status;

try {

create payment to get authorization Id

$authId = createAuthorization($apiContext); +use PayPal\Rest\ApiContext;

Create a mock capture

try {

create payment to get authorization Id

$authId = createAuthorization($apiContext); $amt = new Amount(); - $amt->setCurrency("USD"); - $amt->setTotal("1.00"); + $amt->setCurrency("USD") + ->setTotal("1.00"); ### Capture $captur = new Capture(); - $captur->setAmount($amt);

get the authorization

$authorization = Authorization::get($authId, $apiContext); - - $capt = $authorization->capture($captur, $apiContext); + $captur->setAmount($amt);

Get the authorization

$authorization = Authorization::get($authId, $apiContext); +

Create a capture

$capt = $authorization->capture($captur, $apiContext); } catch (PayPal\Exception\PPConnectionException $ex) { echo "Exception: " . $ex->getMessage() . PHP_EOL; var_dump($ex->getData()); exit(1); -}

Refund

+}

Refund

Create a refund object indicating -refund amount

$refund = new Refund(); +refund amount and call the refund method

$refund = new Refund(); $refund->setAmount($amt); - -try { - $capture = Capture::get($capt->getId(), $apiContext);

Create a new apiContext object so we send a new +try {

Create a new apiContext object so we send a new PayPal-Request-Id (idempotency) header for this resource

$apiContext = new ApiContext($apiContext->getCredential()); - $captureRefund = $capture->refund($refund, $apiContext); + $captureRefund = $capt->refund($refund, $apiContext); } catch (PayPal\Exception\PPConnectionException $ex) { echo "Exception: " . $ex->getMessage() . PHP_EOL; var_dump($ex->getData()); @@ -58,51 +45,4 @@ PayPal-Request-Id (idempotency) header for this resource

<pre><?php var_dump($captureRefund);?></pre> <a href='../index.html'>Back</a> </body> -</html> -<?php -function createAuthorization($apiContext) -{ - $addr = new Address(); - $addr->setLine1("3909 Witmer Road"); - $addr->setLine2("Niagara Falls"); - $addr->setCity("Niagara Falls"); - $addr->setState("NY"); - $addr->setPostalCode("14305"); - $addr->setCountryCode("US"); - $addr->setPhone("716-298-1822"); - - $card = new CreditCard(); - $card->setType("visa"); - $card->setNumber("4417119669820331"); - $card->setExpireMonth("11"); - $card->setExpireYear("2019"); - $card->setCvv2("012"); - $card->setFirstName("Joe"); - $card->setLastName("Shopper"); - $card->setBillingAddress($addr); - - $fi = new FundingInstrument(); - $fi->setCreditCard($card); - - $payer = new Payer(); - $payer->setPaymentMethod("credit_card"); - $payer->setFundingInstruments(array($fi)); - - $amount = new Amount(); - $amount->setCurrency("USD"); - $amount->setTotal("10.00"); - - $transaction = new Transaction(); - $transaction->setAmount($amount); - $transaction->setDescription("This is the payment description."); - - $payment = new Payment(); - $payment->setIntent("authorize"); - $payment->setPayer($payer); - $payment->setTransactions(array($transaction)); - - $paymnt = $payment->create($apiContext); - $resArray = $paymnt->toArray(); - - return $authId = $resArray['transactions'][0]['related_resources'][0]['authorization']['id']; -}
\ No newline at end of file +</html> \ No newline at end of file diff --git a/sample/source/RefundSale.html b/sample/source/RefundSale.html index 3c18b91..c7acbd5 100644 --- a/sample/source/RefundSale.html +++ b/sample/source/RefundSale.html @@ -10,8 +10,8 @@ API used: /v1/payments/sale/{sale-id}/refund

Create a refund object indicating refund amount

$amt = new Amount(); -$amt->setCurrency('USD'); -$amt->setTotal('0.01'); +$amt->setCurrency('USD') + ->setTotal('0.01'); $refund = new Refund(); $refund->setAmount($amt); diff --git a/sample/source/VoidAuthorization.html b/sample/source/VoidAuthorization.html index 1351f16..2c58302 100644 --- a/sample/source/VoidAuthorization.html +++ b/sample/source/VoidAuthorization.html @@ -3,21 +3,15 @@

This sample code demonstrate how you can void an authorized payment API used: /v1/payments/authorization/<{authorizationid}>/void"

require __DIR__ . '/../bootstrap.php'; -use PayPal\Api\Authorization; -use PayPal\Api\Address; -use PayPal\Api\Amount; -use PayPal\Api\CreditCard; -use PayPal\Api\Payer; -use PayPal\Api\Payment; -use PayPal\Api\FundingInstrument; -use PayPal\Api\Transaction;

VoidAuthorization

+use PayPal\Api\Authorization;

VoidAuthorization

-

VoidAuthorization by posting to the APIService -using a valid ApiContext (See bootstrap.php for more on ApiContext) -The return object contains the status;

try {

create payment to get authorization Id

$authId = createAuthorization($apiContext); - $authorization = Authorization::get($authId, $apiContext); +

You can void a previously authorized payment +by invoking the $authorization->void method +with a valid ApiContext (See bootstrap.php for more on ApiContext)

try {

create payment to get authorization Id +createAuthorization is defined in common.php

$authId = createAuthorization($apiContext); - $void = $authorization->void($apiContext); + $authorization = Authorization::get($authId, $apiContext); + $voidedAuth = $authorization->void($apiContext); } catch (PayPal\Exception\PPConnectionException $ex) { echo "Exception: " . $ex->getMessage() . PHP_EOL; var_dump($ex->getData()); @@ -27,56 +21,9 @@ The return object contains the status;

<html> <body> <div> - Void Authorization: + Voided authorization </div> - <pre><?php var_dump($void->toArray());?></pre> + <pre><?php var_dump($voidedAuth->toArray());?></pre> <a href='../index.html'>Back</a> </body> -</html> -<?php -function createAuthorization($apiContext) -{ - $addr = new Address(); - $addr->setLine1("3909 Witmer Road"); - $addr->setLine2("Niagara Falls"); - $addr->setCity("Niagara Falls"); - $addr->setState("NY"); - $addr->setPostalCode("14305"); - $addr->setCountryCode("US"); - $addr->setPhone("716-298-1822"); - - $card = new CreditCard(); - $card->setType("visa"); - $card->setNumber("4417119669820331"); - $card->setExpireMonth("11"); - $card->setExpireYear("2019"); - $card->setCvv2("012"); - $card->setFirstName("Joe"); - $card->setLastName("Shopper"); - $card->setBillingAddress($addr); - - $fi = new FundingInstrument(); - $fi->setCreditCard($card); - - $payer = new Payer(); - $payer->setPaymentMethod("credit_card"); - $payer->setFundingInstruments(array($fi)); - - $amount = new Amount(); - $amount->setCurrency("USD"); - $amount->setTotal("1.00"); - - $transaction = new Transaction(); - $transaction->setAmount($amount); - $transaction->setDescription("This is the payment description."); - - $payment = new Payment(); - $payment->setIntent("authorize"); - $payment->setPayer($payer); - $payment->setTransactions(array($transaction)); - - $paymnt = $payment->create($apiContext); - $resArray = $paymnt->toArray(); - - return $authId = $resArray['transactions'][0]['related_resources'][0]['authorization']['id']; -}
\ No newline at end of file +</html> \ No newline at end of file diff --git a/sample/vault/CreateCreditCard.php b/sample/vault/CreateCreditCard.php index 04bda56..9cc6bce 100644 --- a/sample/vault/CreateCreditCard.php +++ b/sample/vault/CreateCreditCard.php @@ -1,50 +1,50 @@ -setType("visa"); -$card->setNumber("4417119669820331"); -$card->setExpireMonth("11"); -$card->setExpireYear("2019"); -$card->setCvv2("012"); -$card->setFirstName("Joe"); -$card->setLastName("Shopper"); - -// ### Save card -// Creates the credit card as a resource -// in the PayPal vault. The response contains -// an 'id' that you can use to refer to it -// in the future payments. -// (See bootstrap.php for more on `ApiContext`) -try { - $card->create($apiContext); -} catch (PayPal\Exception\PPConnectionException $ex) { - echo "Exception:" . $ex->getMessage() . PHP_EOL; - var_dump($ex->getData()); - exit(1); -} -?> - - -
Saved a new credit card with id: getId();?>
-
- Back - +// # Create Credit Card Sample +// Using the 'vault' API, you can store a +// Credit Card securely on PayPal. You can +// use a saved Credit Card to process +// a payment in the future. +// The following code demonstrates how +// can save a Credit Card on PayPal using +// the Vault API. +// API used: POST /v1/vault/credit-card + + +require __DIR__ . '/../bootstrap.php'; +use PayPal\Api\CreditCard; +use PayPal\Api\Address; + +// ### CreditCard +// A resource representing a credit card that can be +// used to fund a payment. +$card = new CreditCard(); +$card->setType("visa") + ->setNumber("4417119669820331") + ->setExpireMonth("11") + ->setExpireYear("2019") + ->setCvv2("012") + ->setFirstName("Joe") + ->setLastName("Shopper"); + +// ### Save card +// Creates the credit card as a resource +// in the PayPal vault. The response contains +// an 'id' that you can use to refer to it +// in future payments. +// (See bootstrap.php for more on `ApiContext`) +try { + $card->create($apiContext); +} catch (PayPal\Exception\PPConnectionException $ex) { + echo "Exception:" . $ex->getMessage() . PHP_EOL; + var_dump($ex->getData()); + exit(1); +} +?> + + +
Saved a new credit card with id: getId();?>
+
+ Back + diff --git a/sample/vault/DeleteCreditCard.php b/sample/vault/DeleteCreditCard.php index 0e409ab..32020bd 100644 --- a/sample/vault/DeleteCreditCard.php +++ b/sample/vault/DeleteCreditCard.php @@ -14,13 +14,13 @@ use PayPal\Api\Address; // A resource representing a credit card that can be // used to fund a payment. $card = new CreditCard(); -$card->setType("visa"); -$card->setNumber("4417119669820331"); -$card->setExpireMonth("11"); -$card->setExpireYear("2019"); -$card->setCvv2("012"); -$card->setFirstName("Joe"); -$card->setLastName("Shopper"); +$card->setType("visa") + ->setNumber("4417119669820331") + ->setExpireMonth("11") + ->setExpireYear("2019") + ->setCvv2("012") + ->setFirstName("Joe") + ->setLastName("Shopper"); // ### Save card // Creates the credit card as a resource @@ -29,14 +29,14 @@ $card->setLastName("Shopper"); // in the future payments. // (See bootstrap.php for more on `ApiContext`) try { - $res = $card->create($apiContext); + $card = $card->create($apiContext); } catch (PayPal\Exception\PPConnectionException $ex) { echo "Exception:" . $ex->getMessage() . PHP_EOL; var_dump($ex->getData()); exit(1); } -$creditCard = CreditCard::get($res->getId(), $apiContext); +$creditCard = CreditCard::get($card->getId(), $apiContext); try { // ### Delete Card // deletes saved credit card @@ -50,7 +50,6 @@ try { -
Delete CreditCard:

Credit Card deleted Successfully

Back diff --git a/sample/vault/GetCreditCard.php b/sample/vault/GetCreditCard.php index c8781a4..6489485 100644 --- a/sample/vault/GetCreditCard.php +++ b/sample/vault/GetCreditCard.php @@ -1,33 +1,33 @@ -getId() -$cardId = "CARD-5AR29593TC404090HKIKN77Q"; - -/// ### Retrieve card -// (See bootstrap.php for more on `ApiContext`) -try { - $card = CreditCard::get($cardId, $apiContext); -} catch (PayPal\Exception\PPConnectionException $ex) { - echo "Exception: " . $ex->getMessage() . PHP_EOL; - var_dump($ex->getData()); - exit(1); -} -?> - - -
Retrieving credit card:
-
- Back - - +getId() +$cardId = "CARD-5AR29593TC404090HKIKN77Q"; + +/// ### Retrieve card +// (See bootstrap.php for more on `ApiContext`) +try { + $card = CreditCard::get($cardId, $apiContext); +} catch (PayPal\Exception\PPConnectionException $ex) { + echo "Exception: " . $ex->getMessage() . PHP_EOL; + var_dump($ex->getData()); + exit(1); +} +?> + + +
Retrieving credit card:
+
+ Back + + From b1f1887cec75272844754a1ad5c0e62fc086fcb0 Mon Sep 17 00:00:00 2001 From: aydiv Date: Mon, 26 Aug 2013 10:58:40 +0530 Subject: [PATCH 4/6] Removing debug statements --- sample/payments/CreatePayment.php | 12 ++---------- 1 file changed, 2 insertions(+), 10 deletions(-) diff --git a/sample/payments/CreatePayment.php b/sample/payments/CreatePayment.php index 3218f1c..3e45a36 100644 --- a/sample/payments/CreatePayment.php +++ b/sample/payments/CreatePayment.php @@ -71,22 +71,14 @@ $transaction = new Transaction(); $transaction->setAmount($amount) ->setDescription("This is the payment description."); -$transaction2 = new Transaction(); -$transaction->setAmount($amount) - ->setDescription("This is fee payment."); -var_dump($transaction2->toJson()); - // ### Payment // A Payment Resource; create one using // the above types and intent as 'sale' $payment = new Payment(); $payment->setIntent("sale") -// ->setPayer($payer) - ->addTransaction($transaction)->addTransaction($transaction2); + ->setPayer($payer) + ->setTransactions(array($transaction)); -echo "*************
"; -var_dump($payment->toJson()); -exit; // ### Create Payment // Create a payment by posting to the APIService // using a valid ApiContext (See bootstrap.php for more on `ApiContext`) From 05a4aef55ec25583677e42f20eaf90f3ca7e05a5 Mon Sep 17 00:00:00 2001 From: aydiv Date: Mon, 26 Aug 2013 12:21:29 +0530 Subject: [PATCH 5/6] Updating sample comments --- sample/common.php | 6 +-- sample/index.html | 8 +++- sample/payments/AuthorizationCapture.php | 15 ++++--- sample/payments/CreatePayment.php | 34 +++++++++------- sample/payments/CreatePaymentUsingPayPal.php | 40 +++++++++++-------- .../payments/CreatePaymentUsingSavedCard.php | 38 +++++++++--------- sample/payments/GetAuthorization.php | 6 ++- sample/payments/GetCapture.php | 31 ++++++++------ sample/payments/GetPayment.php | 3 ++ sample/payments/ListPayments.php | 3 ++ sample/payments/Reauthorization.php | 8 +++- sample/payments/RefundCapture.php | 35 +++++++++------- sample/payments/VoidAuthorization.php | 13 ++++-- sample/sale/GetSale.php | 4 ++ sample/sale/RefundSale.php | 12 ++++-- sample/vault/CreateCreditCard.php | 18 ++++----- sample/vault/DeleteCreditCard.php | 17 ++++---- sample/vault/GetCreditCard.php | 10 +++-- 18 files changed, 180 insertions(+), 121 deletions(-) diff --git a/sample/common.php b/sample/common.php index 2ab665f..a75d79c 100644 --- a/sample/common.php +++ b/sample/common.php @@ -36,7 +36,7 @@ function getBaseUrl() { } /** - * Creates a new payment authorization + * Creates a new mock 'payment authorization' * * @param PayPal\Api\ApiContext apiContext * @return PayPal\Api\Authorization @@ -74,12 +74,12 @@ function createAuthorization($apiContext) { $transaction = new Transaction(); $transaction->setAmount($amount) - ->setDescription("This is the payment description."); + ->setDescription("Payment description."); $payment = new Payment(); // Setting intent to authorize creates a payment - // authorization. Setting it to sale makes an actual payment + // authorization. Setting it to sale creates actual payment $payment->setIntent("authorize") ->setPayer($payer) ->setTransactions(array($transaction)); diff --git a/sample/index.html b/sample/index.html index b90b55d..c191506 100644 --- a/sample/index.html +++ b/sample/index.html @@ -31,15 +31,19 @@ Payments - Payment with a credit card + Direct credit card payments Execute Source - Payment with a PayPal Account + PayPal account payments Execute Source + + Stored credit card payments + Execute + Source Get payment details Execute diff --git a/sample/payments/AuthorizationCapture.php b/sample/payments/AuthorizationCapture.php index df5ed7a..0bfce9e 100644 --- a/sample/payments/AuthorizationCapture.php +++ b/sample/payments/AuthorizationCapture.php @@ -1,6 +1,7 @@ capture method // with a valid ApiContext (See bootstrap.php for more on `ApiContext`) try { - // create payment to get authorization Id + // Create a new authorization to get authorization Id // createAuthorization defined in common.php $authId = createAuthorization($apiContext); @@ -27,9 +28,10 @@ try { $capture->setId($authId) ->setAmount($amt); - // Get the authorization + // Lookup the authorization. $authorization = Authorization::get($authId, $apiContext); + // Perform a capture $getCapture = $authorization->capture($capture, $apiContext); } catch (PayPal\Exception\PPConnectionException $ex) { echo "Exception: " . $ex->getMessage() . PHP_EOL; @@ -38,14 +40,15 @@ try { } ?> + + Capturing an authorization +
Captured payment getParentPayment(); ?>. Capture Id: getId();?>
-
-		toArray());?>
-	
+
toArray());?>
Back diff --git a/sample/payments/CreatePayment.php b/sample/payments/CreatePayment.php index 3e45a36..ccbfa76 100644 --- a/sample/payments/CreatePayment.php +++ b/sample/payments/CreatePayment.php @@ -1,8 +1,11 @@ setLine1("3909 Witmer Road") ->setLine2("Niagara Falls") @@ -41,23 +43,23 @@ $card->setType("visa") // ### FundingInstrument // A resource representing a Payer's funding instrument. -// Use a Payer ID (A unique identifier of the payer generated -// and provided by the facilitator. This is required when -// creating or using a tokenized funding instrument) -// and the `CreditCardDetails` +// For direct credit card payments, set the CreditCard +// field on this object. $fi = new FundingInstrument(); $fi->setCreditCard($card); // ### Payer // A resource representing a Payer that funds a payment -// Use the List of `FundingInstrument` and the Payment Method -// as 'credit_card' +// For direct credit card payments, set payment method +// to 'credit_card' and add an array of funding instruments. $payer = new Payer(); $payer->setPaymentMethod("credit_card") ->setFundingInstruments(array($fi)); // ### Amount -// Let's you specify a payment amount. +// Lets you specify a payment amount. +// You can also specify additional details +// such as shipping, tax. $amount = new Amount(); $amount->setCurrency("USD") ->setTotal("1.00"); @@ -65,15 +67,14 @@ $amount->setCurrency("USD") // ### Transaction // A transaction defines the contract of a // payment - what is the payment for and who -// is fulfilling it. Transaction is created with -// a `Payee` and `Amount` types +// is fulfilling it. $transaction = new Transaction(); $transaction->setAmount($amount) - ->setDescription("This is the payment description."); + ->setDescription("Payment description"); // ### Payment // A Payment Resource; create one using -// the above types and intent as 'sale' +// the above types and intent set to sale 'sale' $payment = new Payment(); $payment->setIntent("sale") ->setPayer($payer) @@ -82,7 +83,7 @@ $payment->setIntent("sale") // ### Create Payment // Create a payment by posting to the APIService // using a valid ApiContext (See bootstrap.php for more on `ApiContext`) -// The return object contains the status; +// The return object contains the state. try { $payment->create($apiContext); } catch (PayPal\Exception\PPConnectionException $ex) { @@ -92,6 +93,9 @@ try { } ?> + + Direct Credit card payments +
Created payment: diff --git a/sample/payments/CreatePaymentUsingPayPal.php b/sample/payments/CreatePaymentUsingPayPal.php index d228111..4de5273 100644 --- a/sample/payments/CreatePaymentUsingPayPal.php +++ b/sample/payments/CreatePaymentUsingPayPal.php @@ -6,24 +6,24 @@ // API used: /v1/payments/payment require __DIR__ . '/../bootstrap.php'; -use PayPal\Api\Address; use PayPal\Api\Amount; use PayPal\Api\Payer; use PayPal\Api\Payment; -use PayPal\Api\FundingInstrument; use PayPal\Api\RedirectUrls; use PayPal\Api\Transaction; session_start(); // ### Payer // A resource representing a Payer that funds a payment -// Use the List of `FundingInstrument` and the Payment Method -// as 'credit_card' +// For paypal account payments, set payment method +// to 'paypal'. $payer = new Payer(); $payer->setPaymentMethod("paypal"); // ### Amount -// Let's you specify a payment amount. +// Lets you specify a payment amount. +// You can also specify additional details +// such as shipping, tax. $amount = new Amount(); $amount->setCurrency("USD") ->setTotal("1.00"); @@ -31,11 +31,10 @@ $amount->setCurrency("USD") // ### Transaction // A transaction defines the contract of a // payment - what is the payment for and who -// is fulfilling it. Transaction is created with -// a `Payee` and `Amount` types +// is fulfilling it. $transaction = new Transaction(); $transaction->setAmount($amount) - ->setDescription("This is the payment description."); + ->setDescription("Payment description"); // ### Redirect urls // Set the urls that the buyer must be redirected to after @@ -47,7 +46,7 @@ $redirectUrls->setReturnUrl("$baseUrl/ExecutePayment.php?success=true") // ### Payment // A Payment Resource; create one using -// the above types and intent as 'sale' +// the above types and intent set to 'sale' $payment = new Payment(); $payment->setIntent("sale") ->setPayer($payer) @@ -55,10 +54,10 @@ $payment->setIntent("sale") ->setTransactions(array($transaction)); // ### Create Payment -// Create a payment by posting to the APIService -// using a valid apiContext. +// Create a payment by calling the 'create' method +// passing it a valid apiContext. // (See bootstrap.php for more on `ApiContext`) -// The return object contains the status and the +// The return object contains the state and the // url to which the buyer must be redirected to // for payment approval try { @@ -69,16 +68,25 @@ try { exit(1); } -// ### Redirect buyer to paypal -// Retrieve buyer approval url from the `payment` object. +// ### Get redirect url +// The API response provides the url that you must redirect +// the buyer to. Retrieve the url from the $payment->getLinks() +// method foreach($payment->getLinks() as $link) { if($link->getRel() == 'approval_url') { $redirectUrl = $link->getHref(); + break; } } + +// ### Redirect buyer to PayPal website +// Save payment id so that you can 'complete' the payment +// once the buyer approves the payment and is redirected +// bacl to your website. +// // It is not really a great idea to store the payment id -// in the session. In a real world app, please store the -// payment id in a database. +// in the session. In a real world app, you may want to +// store the payment id in a database. $_SESSION['paymentId'] = $payment->getId(); if(isset($redirectUrl)) { header("Location: $redirectUrl"); diff --git a/sample/payments/CreatePaymentUsingSavedCard.php b/sample/payments/CreatePaymentUsingSavedCard.php index e74cee3..ed40229 100644 --- a/sample/payments/CreatePaymentUsingSavedCard.php +++ b/sample/payments/CreatePaymentUsingSavedCard.php @@ -2,47 +2,42 @@ // # Create payment using a saved credit card // This sample code demonstrates how you can process a -// Payment using a previously saved credit card. +// Payment using a previously stored credit card token. // API used: /v1/payments/payment require __DIR__ . '/../bootstrap.php'; -use PayPal\Api\Address; use PayPal\Api\Amount; -use PayPal\Api\CreditCard; use PayPal\Api\CreditCardToken; use PayPal\Api\Payer; use PayPal\Api\Payment; use PayPal\Api\FundingInstrument; -use PayPal\Api\RedirectUrls; use PayPal\Api\Transaction; -use PayPal\Auth\OAuthTokenCredential; // ### Credit card token // Saved credit card id from a previous call to // CreateCreditCard.php -$creditCardId = 'CARD-5BT058015C739554AKE2GCEI'; $creditCardToken = new CreditCardToken(); -$creditCardToken->setCreditCardId($creditCardId); +$creditCardToken->setCreditCardId('CARD-29H07236G1554552FKINPBHQ'); // ### FundingInstrument // A resource representing a Payer's funding instrument. -// Use a Payer ID (A unique identifier of the payer generated -// and provided by the facilitator. This is required when -// creating or using a tokenized funding instrument) -// and the `CreditCardDetails` +// For stored credit card payments, set the CreditCardToken +// field on this object. $fi = new FundingInstrument(); $fi->setCreditCardToken($creditCardToken); // ### Payer // A resource representing a Payer that funds a payment -// Use the List of `FundingInstrument` and the Payment Method -// as 'credit_card' +// For stored credit card payments, set payment method +// to 'credit_card'. $payer = new Payer(); $payer->setPaymentMethod("credit_card") ->setFundingInstruments(array($fi)); // ### Amount -// Let's you specify a payment amount. +// Lets you specify a payment amount. +// You can also specify additional details +// such as shipping, tax. $amount = new Amount(); $amount->setCurrency("USD") ->setTotal("1.00"); @@ -50,24 +45,24 @@ $amount->setCurrency("USD") // ### Transaction // A transaction defines the contract of a // payment - what is the payment for and who -// is fulfilling it. Transaction is created with -// a `Payee` and `Amount` types +// is fulfilling it. $transaction = new Transaction(); $transaction->setAmount($amount) - ->setDescription("This is the payment description."); + ->setDescription("Payment description"); // ### Payment // A Payment Resource; create one using -// the above types and intent as 'sale' +// the above types and intent set to 'sale' $payment = new Payment(); $payment->setIntent("sale") ->setPayer($payer) ->setTransactions(array($transaction)); // ###Create Payment -// Create a payment by posting to the APIService +// Create a payment by calling the 'create' method +// passing it a valid apiContext. // (See bootstrap.php for more on `ApiContext`) -// The return object contains the status; +// The return object contains the state. try { $payment->create($apiContext); } catch (PayPal\Exception\PPConnectionException $ex) { @@ -77,6 +72,9 @@ try { } ?> + + Saved Credit card payments +
Created payment: diff --git a/sample/payments/GetAuthorization.php b/sample/payments/GetAuthorization.php index db3400c..2caeb8b 100644 --- a/sample/payments/GetAuthorization.php +++ b/sample/payments/GetAuthorization.php @@ -1,6 +1,7 @@ require __DIR__ . '/../bootstrap.php'; @@ -28,6 +29,9 @@ try { } ?> + + Lookup an authorization +
Retrieved Authorization: diff --git a/sample/payments/GetCapture.php b/sample/payments/GetCapture.php index 5fbe148..288dda6 100644 --- a/sample/payments/GetCapture.php +++ b/sample/payments/GetCapture.php @@ -1,6 +1,7 @@ require __DIR__ . '/../bootstrap.php'; @@ -12,22 +13,25 @@ use PayPal\Api\Authorization; // ### Create a mock Capture try { - // create payment to get authorization Id + // create a mock authorization to get authorization Id + // createAuthorization is defined in common.php $authId = createAuthorization($apiContext); + + // Lookup the authorization + $authorization = Authorization::get($authId, $apiContext); + + ### Capture + $amt = new Amount(); $amt->setCurrency("USD") ->setTotal("1.00"); - - ### Capture - $captur = new Capture(); - $captur->setId($authId) + + // Create a capture + $captureInfo = new Capture(); + $captureInfo->setId($authId) ->setAmount($amt); - // get the authorization - $authorization = Authorization::get($authId, $apiContext); - - // Create a capture - $capt = $authorization->capture($captur, $apiContext); + $capture = $authorization->capture($captureInfo, $apiContext); } catch (PayPal\Exception\PPConnectionException $ex) { echo "Exception: " . $ex->getMessage() . PHP_EOL; var_dump($ex->getData()); @@ -38,7 +42,7 @@ try { // You can look up a capture by invoking the Capture::get method // with a valid ApiContext (See bootstrap.php for more on `ApiContext`) try { - $capture = Capture::get($capt->getId(), $apiContext); + $capture = Capture::get($capture->getId(), $apiContext); } catch (PayPal\Exception\PPConnectionException $ex) { echo "Exception: " . $ex->getMessage() . PHP_EOL; var_dump($ex->getData()); @@ -46,6 +50,9 @@ try { } ?> + + Lookup a capture +
Capture Id: diff --git a/sample/payments/GetPayment.php b/sample/payments/GetPayment.php index 2863af9..91d90c0 100644 --- a/sample/payments/GetPayment.php +++ b/sample/payments/GetPayment.php @@ -28,6 +28,9 @@ try { } ?> + + Lookup a payment +
Retrieving Payment ID:
toArray());?>
diff --git a/sample/payments/ListPayments.php b/sample/payments/ListPayments.php index ce60abd..6b19b3e 100644 --- a/sample/payments/ListPayments.php +++ b/sample/payments/ListPayments.php @@ -29,6 +29,9 @@ try { } ?> + + Lookup payment history +
Got getCount(); ?> matching payments
toArray());?>
diff --git a/sample/payments/Reauthorization.php b/sample/payments/Reauthorization.php index e4c42b2..7fc500c 100644 --- a/sample/payments/Reauthorization.php +++ b/sample/payments/Reauthorization.php @@ -1,6 +1,7 @@ + + Reauthorize a payment +
Reauthorization Id: diff --git a/sample/payments/RefundCapture.php b/sample/payments/RefundCapture.php index 7a9bfd3..7c234a3 100644 --- a/sample/payments/RefundCapture.php +++ b/sample/payments/RefundCapture.php @@ -1,9 +1,9 @@ }/refund + require __DIR__ . '/../bootstrap.php'; use PayPal\Api\Authorization; @@ -13,24 +13,25 @@ use PayPal\Api\Amount; use PayPal\Rest\ApiContext; -// ### Create a mock capture try { - // create payment to get authorization Id + // Create a mock authorization to get authorization Id $authId = createAuthorization($apiContext); - $amt = new Amount(); - $amt->setCurrency("USD") - ->setTotal("1.00"); - - ### Capture - $captur = new Capture(); - $captur->setAmount($amt); - // Get the authorization $authorization = Authorization::get($authId, $apiContext); + + // ### Capture + + $amt = new Amount(); + $amt->setCurrency("USD") + ->setTotal("1.00"); + // Create a capture - $capt = $authorization->capture($captur, $apiContext); + $captureInfo = new Capture(); + $captureInfo->setAmount($amt); + + $capture = $authorization->capture($captureInfo, $apiContext); } catch (PayPal\Exception\PPConnectionException $ex) { echo "Exception: " . $ex->getMessage() . PHP_EOL; var_dump($ex->getData()); @@ -48,7 +49,8 @@ try { // Create a new apiContext object so we send a new // PayPal-Request-Id (idempotency) header for this resource $apiContext = new ApiContext($apiContext->getCredential()); - $captureRefund = $capt->refund($refund, $apiContext); + + $captureRefund = $capture->refund($refund, $apiContext); } catch (PayPal\Exception\PPConnectionException $ex) { echo "Exception: " . $ex->getMessage() . PHP_EOL; var_dump($ex->getData()); @@ -57,6 +59,9 @@ try { ?> + + Refund a captured payment +
Refund Capture:
diff --git a/sample/payments/VoidAuthorization.php b/sample/payments/VoidAuthorization.php index bc9dc7d..e1c3f74 100644 --- a/sample/payments/VoidAuthorization.php +++ b/sample/payments/VoidAuthorization.php @@ -1,6 +1,7 @@ /void" require __DIR__ . '/../bootstrap.php'; @@ -13,11 +14,14 @@ use PayPal\Api\Authorization; // by invoking the $authorization->void method // with a valid ApiContext (See bootstrap.php for more on `ApiContext`) try { - // create payment to get authorization Id + // create an authorization to get authorization Id // createAuthorization is defined in common.php $authId = createAuthorization($apiContext); - + + // Lookup the authorization $authorization = Authorization::get($authId, $apiContext); + + // Void the authorization $voidedAuth = $authorization->void($apiContext); } catch (PayPal\Exception\PPConnectionException $ex) { echo "Exception: " . $ex->getMessage() . PHP_EOL; @@ -26,6 +30,9 @@ try { } ?> + + Void an authorization +
Voided authorization diff --git a/sample/sale/GetSale.php b/sample/sale/GetSale.php index 14da4bb..ad64f70 100644 --- a/sample/sale/GetSale.php +++ b/sample/sale/GetSale.php @@ -1,6 +1,7 @@ + + Lookup a sale +
Retrieving sale id:
diff --git a/sample/sale/RefundSale.php b/sample/sale/RefundSale.php index fa34854..01d7292 100644 --- a/sample/sale/RefundSale.php +++ b/sample/sale/RefundSale.php @@ -11,13 +11,15 @@ use PayPal\Api\Amount; use PayPal\Api\Refund; use PayPal\Api\Sale; -// ### Refund -// Create a refund object indicating -// refund amount +// ### Refund amount +// Includes both the refunded amount (to Payer) +// and refunded fee (to Payee). Use the $amt->details +// field to mention fees refund details. $amt = new Amount(); $amt->setCurrency('USD') ->setTotal('0.01'); +// ### Refund object $refund = new Refund(); $refund->setAmount($amt); @@ -29,7 +31,6 @@ $saleId = '3RM92092UW5126232'; // given sale transaction id. $sale = new Sale(); $sale->setId($saleId); - try { // Refund the sale // (See bootstrap.php for more on `ApiContext`) @@ -41,6 +42,9 @@ try { } ?> + + Refund a sale +
Refunding sale id:
diff --git a/sample/vault/CreateCreditCard.php b/sample/vault/CreateCreditCard.php index 9cc6bce..4953550 100644 --- a/sample/vault/CreateCreditCard.php +++ b/sample/vault/CreateCreditCard.php @@ -1,23 +1,18 @@ setType("visa") ->setNumber("4417119669820331") @@ -42,6 +37,9 @@ try { } ?> + + Save a credit card +
Saved a new credit card with id: getId();?>
diff --git a/sample/vault/DeleteCreditCard.php b/sample/vault/DeleteCreditCard.php index 32020bd..0de5bba 100644 --- a/sample/vault/DeleteCreditCard.php +++ b/sample/vault/DeleteCreditCard.php @@ -1,15 +1,14 @@ } // NOTE: HTTP method used here is DELETE + require __DIR__ . '/../bootstrap.php'; use PayPal\Api\CreditCard; -use PayPal\Api\Address; -// save card for demo +// Store a mock card that can be deleted later. // ### CreditCard // A resource representing a credit card that can be // used to fund a payment. @@ -25,8 +24,7 @@ $card->setType("visa") // ### Save card // Creates the credit card as a resource // in the PayPal vault. The response contains -// an 'id' that you can use to refer to it -// in the future payments. +// an 'id' that you can use to refer to it later. // (See bootstrap.php for more on `ApiContext`) try { $card = $card->create($apiContext); @@ -36,19 +34,22 @@ try { exit(1); } -$creditCard = CreditCard::get($card->getId(), $apiContext); try { // ### Delete Card // deletes saved credit card // (See bootstrap.php for more on `ApiContext`) + + $creditCard = CreditCard::get($card->getId(), $apiContext); $creditCard->delete($apiContext); } catch (PayPal\Exception\PPConnectionException $ex) { echo "Exception: " . $ex->getMessage() . PHP_EOL; exit(1); } ?> - + + Delete a saved credit card +

Credit Card deleted Successfully

Back diff --git a/sample/vault/GetCreditCard.php b/sample/vault/GetCreditCard.php index 6489485..c33e333 100644 --- a/sample/vault/GetCreditCard.php +++ b/sample/vault/GetCreditCard.php @@ -2,9 +2,8 @@ // # Get Credit Card Sample // The CreditCard resource allows you to -// retrieve previously saved CreditCards, -// by sending a GET request to the URI -// '/v1/vault/credit-card' +// retrieve previously saved CreditCards. +// API called: '/v1/vault/credit-card' // The following code takes you through // the process of retrieving a saved CreditCard require __DIR__ . '/../bootstrap.php'; @@ -25,8 +24,11 @@ try { } ?> + + Lookup a saved credit card + -
Retrieving credit card:
+
Retrieving saved credit card:
Back From d1d21c6edff38efc6431538bb448bdabcebe04b8 Mon Sep 17 00:00:00 2001 From: aydiv Date: Mon, 26 Aug 2013 12:25:17 +0530 Subject: [PATCH 6/6] Updating source comment files --- sample/source/AuthorizationCapture.html | 22 ++++---- sample/source/CreateCreditCard.html | 26 +++++---- sample/source/CreatePayment.html | 53 +++++++++--------- sample/source/CreatePaymentUsingPayPal.html | 54 ++++++++++--------- .../source/CreatePaymentUsingSavedCard.html | 54 +++++++++---------- sample/source/DeleteCreditCard.html | 25 ++++----- sample/source/ExecutePayment.html | 10 ++-- sample/source/GetAuthorization.html | 16 +++--- sample/source/GetCapture.html | 28 ++++++---- sample/source/GetCreditCard.html | 18 ++++--- sample/source/GetPayment.html | 9 ++-- sample/source/GetSale.html | 12 +++-- sample/source/ListPayments.html | 9 ++-- sample/source/Reauthorization.html | 18 ++++--- sample/source/RefundCapture.html | 32 ++++++----- sample/source/RefundSale.html | 23 ++++---- sample/source/VoidAuthorization.html | 19 +++---- sample/source/assets/behavior.js | 38 +++++-------- sample/source/assets/style.css | 2 +- 19 files changed, 249 insertions(+), 219 deletions(-) diff --git a/sample/source/AuthorizationCapture.html b/sample/source/AuthorizationCapture.html index 463eb12..b1df14b 100644 --- a/sample/source/AuthorizationCapture.html +++ b/sample/source/AuthorizationCapture.html @@ -1,14 +1,15 @@ -AuthorizationCapture
<?php

AuthorizationCapture

+AuthorizationCapture
AuthorizationCapture.php
<?php

AuthorizationCapture

-

This sample code demonstrate how you can capture the authorized payment +

This sample code demonstrates how you can capture +a previously authorized payment. API used: /v1/payments/payment

require __DIR__ . '/../bootstrap.php'; use PayPal\Api\Amount; use PayPal\Api\Capture; -use PayPal\Api\Authorization;

Capture Payment

+use PayPal\Api\Authorization;

Capture Payment

You can capture and process a previously created authorization by invoking the $authorization->capture method -with a valid ApiContext (See bootstrap.php for more on ApiContext)

try {

create payment to get authorization Id +with a valid ApiContext (See bootstrap.php for more on ApiContext)

try {

Create a new authorization to get authorization Id createAuthorization defined in common.php

$authId = createAuthorization($apiContext); $amt = new Amount(); @@ -18,9 +19,7 @@ createAuthorization defined in common.php

### Capture $capture = new Capture(); $capture->setId($authId) - ->setAmount($amt);

Get the authorization

$authorization = Authorization::get($authId, $apiContext); - - $getCapture = $authorization->capture($capture, $apiContext); + ->setAmount($amt);

Lookup the authorization.

$authorization = Authorization::get($authId, $apiContext);

Perform a capture

$getCapture = $authorization->capture($capture, $apiContext); } catch (PayPal\Exception\PPConnectionException $ex) { echo "Exception: " . $ex->getMessage() . PHP_EOL; var_dump($ex->getData()); @@ -28,14 +27,15 @@ createAuthorization defined in common.php

} ?> <html> +<head> + <title>Capturing an authorization</title> +</head> <body> <div> Captured payment <?php echo $getCapture->getParentPayment(); ?>. Capture Id: <?php echo $getCapture->getId();?> </div> - <pre> - <?php var_dump($getCapture->toArray());?> - </pre> + <pre><?php var_dump($getCapture->toArray());?></pre> <a href='../index.html'>Back</a> </body> -</html>
\ No newline at end of file +</html>
\ No newline at end of file diff --git a/sample/source/CreateCreditCard.html b/sample/source/CreateCreditCard.html index 9ca4434..e3a0edd 100644 --- a/sample/source/CreateCreditCard.html +++ b/sample/source/CreateCreditCard.html @@ -1,25 +1,20 @@ -CreateCreditCard
<?php

Create Credit Card Sample

+CreateCreditCard
CreateCreditCard.php
<?php

Create Credit Card Sample

-

Using the 'vault' API, you can store a -Credit Card securely on PayPal. You can -use a saved Credit Card to process -a payment in the future. -The following code demonstrates how -can save a Credit Card on PayPal using -the Vault API. +

You can store credit card details securely +with PayPal. You can then use the returned +Credit card id to process future payments. API used: POST /v1/vault/credit-card

require __DIR__ . '/../bootstrap.php'; -use PayPal\Api\CreditCard; -use PayPal\Api\Address;

CreditCard

+use PayPal\Api\CreditCard;

CreditCard

-

A resource representing a credit card that can be -used to fund a payment.

$card = new CreditCard(); +

A resource representing a credit card that is +to be stored with PayPal.

$card = new CreditCard(); $card->setType("visa") ->setNumber("4417119669820331") ->setExpireMonth("11") ->setExpireYear("2019") ->setCvv2("012") ->setFirstName("Joe") - ->setLastName("Shopper");

Save card

+ ->setLastName("Shopper");

Save card

Creates the credit card as a resource in the PayPal vault. The response contains @@ -34,9 +29,12 @@ in future payments. } ?> <html> +<head> + <title>Save a credit card</title> +</head> <body> <div>Saved a new credit card with id: <?php echo $card->getId();?></div> <pre><?php var_dump($card);?></pre> <a href='../index.html'>Back</a> </body> -</html>

\ No newline at end of file +</html>
\ No newline at end of file diff --git a/sample/source/CreatePayment.html b/sample/source/CreatePayment.html index ac4d0e6..e3f1073 100644 --- a/sample/source/CreatePayment.html +++ b/sample/source/CreatePayment.html @@ -1,7 +1,7 @@ -CreatePayment
<?php

CreatePaymentSample

- -

This sample code demonstrate how you can process -a payment with a credit card. +CreatePayment

CreatePayment.php
<?php

CreatePaymentSample

//

This sample code demonstrate how you can process +a direct credit card payment. Please note that direct +credit card payment and related features using the +REST API is restricted in some countries. API used: /v1/payments/payment

require __DIR__ . '/../bootstrap.php'; use PayPal\Api\Address; use PayPal\Api\Amount; @@ -9,17 +9,16 @@ API used: /v1/payments/payment

use PayPal\Api\Payer; use PayPal\Api\Payment; use PayPal\Api\FundingInstrument; -use PayPal\Api\Transaction;

Address

+use PayPal\Api\Transaction;

Address

-

Base Address object used as shipping or billing -address in a payment. [Optional]

$addr = new Address(); +

[Optional] Billing address associated with card.

$addr = new Address(); $addr->setLine1("3909 Witmer Road") ->setLine2("Niagara Falls") ->setCity("Niagara Falls") ->setState("NY") ->setPostalCode("14305") ->setCountryCode("US") - ->setPhone("716-298-1822");

CreditCard

+ ->setPhone("716-298-1822");

CreditCard

A resource representing a credit card that can be used to fund a payment.

$card = new CreditCard(); @@ -30,41 +29,40 @@ used to fund a payment.

->setCvv2("012") ->setFirstName("Joe") ->setLastName("Shopper") - ->setBillingAddress($addr);

FundingInstrument

+ ->setBillingAddress($addr);

FundingInstrument

A resource representing a Payer's funding instrument. -Use a Payer ID (A unique identifier of the payer generated -and provided by the facilitator. This is required when -creating or using a tokenized funding instrument) -and the CreditCardDetails

$fi = new FundingInstrument(); -$fi->setCreditCard($card);

Payer

+For direct credit card payments, set the CreditCard +field on this object.

$fi = new FundingInstrument(); +$fi->setCreditCard($card);

Payer

A resource representing a Payer that funds a payment -Use the List of FundingInstrument and the Payment Method -as 'credit_card'

$payer = new Payer(); +For direct credit card payments, set payment method +to 'credit_card' and add an array of funding instruments.

$payer = new Payer(); $payer->setPaymentMethod("credit_card") - ->setFundingInstruments(array($fi));

Amount

+ ->setFundingInstruments(array($fi));

Amount

-

Let's you specify a payment amount.

$amount = new Amount(); +

Lets you specify a payment amount. +You can also specify additional details +such as shipping, tax.

$amount = new Amount(); $amount->setCurrency("USD") - ->setTotal("1.00");

Transaction

+ ->setTotal("1.00");

Transaction

A transaction defines the contract of a payment - what is the payment for and who -is fulfilling it. Transaction is created with -a Payee and Amount types

$transaction = new Transaction(); +is fulfilling it.

$transaction = new Transaction(); $transaction->setAmount($amount) - ->setDescription("This is the payment description.");

Payment

+ ->setDescription("Payment description");

Payment

A Payment Resource; create one using -the above types and intent as 'sale'

$payment = new Payment(); +the above types and intent set to sale 'sale'

$payment = new Payment(); $payment->setIntent("sale") ->setPayer($payer) - ->setTransactions(array($transaction));

Create Payment

+ ->setTransactions(array($transaction));

Create Payment

Create a payment by posting to the APIService using a valid ApiContext (See bootstrap.php for more on ApiContext) -The return object contains the status;

try { +The return object contains the state.

try { $payment->create($apiContext); } catch (PayPal\Exception\PPConnectionException $ex) { echo "Exception: " . $ex->getMessage() . PHP_EOL; @@ -73,6 +71,9 @@ The return object contains the status;

} ?> <html> +<head> + <title>Direct Credit card payments</title> +</head> <body> <div> Created payment: @@ -81,4 +82,4 @@ The return object contains the status;

<pre><?php var_dump($payment->toArray());?></pre> <a href='../index.html'>Back</a> </body> -</html>
\ No newline at end of file +</html>
\ No newline at end of file diff --git a/sample/source/CreatePaymentUsingPayPal.html b/sample/source/CreatePaymentUsingPayPal.html index 4cca2db..d1b0aae 100644 --- a/sample/source/CreatePaymentUsingPayPal.html +++ b/sample/source/CreatePaymentUsingPayPal.html @@ -1,50 +1,49 @@ -CreatePaymentUsingPayPal
<?php

Create Payment using PayPal as payment method

+CreatePaymentUsingPayPal
CreatePaymentUsingPayPal.php
<?php

Create Payment using PayPal as payment method

This sample code demonstrates how you can process a PayPal Account based Payment. API used: /v1/payments/payment

require __DIR__ . '/../bootstrap.php'; -use PayPal\Api\Address; use PayPal\Api\Amount; use PayPal\Api\Payer; use PayPal\Api\Payment; -use PayPal\Api\FundingInstrument; use PayPal\Api\RedirectUrls; use PayPal\Api\Transaction; -session_start();

Payer

+session_start();

Payer

A resource representing a Payer that funds a payment -Use the List of FundingInstrument and the Payment Method -as 'credit_card'

$payer = new Payer(); -$payer->setPaymentMethod("paypal");

Amount

+For paypal account payments, set payment method +to 'paypal'.

$payer = new Payer(); +$payer->setPaymentMethod("paypal");

Amount

-

Let's you specify a payment amount.

$amount = new Amount(); +

Lets you specify a payment amount. +You can also specify additional details +such as shipping, tax.

$amount = new Amount(); $amount->setCurrency("USD") - ->setTotal("1.00");

Transaction

+ ->setTotal("1.00");

Transaction

A transaction defines the contract of a payment - what is the payment for and who -is fulfilling it. Transaction is created with -a Payee and Amount types

$transaction = new Transaction(); +is fulfilling it.

$transaction = new Transaction(); $transaction->setAmount($amount) - ->setDescription("This is the payment description.");

Redirect urls

+ ->setDescription("Payment description");

Redirect urls

Set the urls that the buyer must be redirected to after payment approval/ cancellation.

$baseUrl = getBaseUrl(); $redirectUrls = new RedirectUrls(); $redirectUrls->setReturnUrl("$baseUrl/ExecutePayment.php?success=true") - ->setCancelUrl("$baseUrl/ExecutePayment.php?success=false");

Payment

+ ->setCancelUrl("$baseUrl/ExecutePayment.php?success=false");

Payment

A Payment Resource; create one using -the above types and intent as 'sale'

$payment = new Payment(); +the above types and intent set to 'sale'

$payment = new Payment(); $payment->setIntent("sale") ->setPayer($payer) ->setRedirectUrls($redirectUrls) - ->setTransactions(array($transaction));

Create Payment

+ ->setTransactions(array($transaction));

Create Payment

-

Create a payment by posting to the APIService -using a valid apiContext. +

Create a payment by calling the 'create' method +passing it a valid apiContext. (See bootstrap.php for more on ApiContext) -The return object contains the status and the +The return object contains the state and the url to which the buyer must be redirected to for payment approval

try { $payment->create($apiContext); @@ -52,16 +51,23 @@ for payment approval

echo "Exception: " . $ex->getMessage() . PHP_EOL; var_dump($ex->getData()); exit(1); -}

Redirect buyer to paypal

+}

Get redirect url

-

Retrieve buyer approval url from the payment object.

foreach($payment->getLinks() as $link) { +

The API response provides the url that you must redirect +the buyer to. Retrieve the url from the $payment->getLinks() +method

foreach($payment->getLinks() as $link) { if($link->getRel() == 'approval_url') { $redirectUrl = $link->getHref(); + break; } -}

It is not really a great idea to store the payment id -in the session. In a real world app, please store the -payment id in a database.

$_SESSION['paymentId'] = $payment->getId(); +}

Redirect buyer to PayPal website

+ +

Save payment id so that you can 'complete' the payment +once the buyer approves the payment and is redirected +bacl to your website.

//

It is not really a great idea to store the payment id +in the session. In a real world app, you may want to +store the payment id in a database.

$_SESSION['paymentId'] = $payment->getId(); if(isset($redirectUrl)) { header("Location: $redirectUrl"); exit; -}
\ No newline at end of file +}
\ No newline at end of file diff --git a/sample/source/CreatePaymentUsingSavedCard.html b/sample/source/CreatePaymentUsingSavedCard.html index 4b207e1..3788f73 100644 --- a/sample/source/CreatePaymentUsingSavedCard.html +++ b/sample/source/CreatePaymentUsingSavedCard.html @@ -1,57 +1,52 @@ -CreatePaymentUsingSavedCard
<?php

Create payment using a saved credit card

+CreatePaymentUsingSavedCard
CreatePaymentUsingSavedCard.php
<?php

Create payment using a saved credit card

This sample code demonstrates how you can process a -Payment using a previously saved credit card. +Payment using a previously stored credit card token. API used: /v1/payments/payment

require __DIR__ . '/../bootstrap.php'; -use PayPal\Api\Address; use PayPal\Api\Amount; -use PayPal\Api\CreditCard; use PayPal\Api\CreditCardToken; use PayPal\Api\Payer; use PayPal\Api\Payment; use PayPal\Api\FundingInstrument; -use PayPal\Api\RedirectUrls; -use PayPal\Api\Transaction; -use PayPal\Auth\OAuthTokenCredential;

Credit card token

+use PayPal\Api\Transaction;

Credit card token

Saved credit card id from a previous call to -CreateCreditCard.php

$creditCardId = 'CARD-5BT058015C739554AKE2GCEI'; -$creditCardToken = new CreditCardToken(); -$creditCardToken->setCreditCardId($creditCardId);

FundingInstrument

+CreateCreditCard.php

$creditCardToken = new CreditCardToken(); +$creditCardToken->setCreditCardId('CARD-29H07236G1554552FKINPBHQ');

FundingInstrument

A resource representing a Payer's funding instrument. -Use a Payer ID (A unique identifier of the payer generated -and provided by the facilitator. This is required when -creating or using a tokenized funding instrument) -and the CreditCardDetails

$fi = new FundingInstrument(); -$fi->setCreditCardToken($creditCardToken);

Payer

+For stored credit card payments, set the CreditCardToken +field on this object.

$fi = new FundingInstrument(); +$fi->setCreditCardToken($creditCardToken);

Payer

A resource representing a Payer that funds a payment -Use the List of FundingInstrument and the Payment Method -as 'credit_card'

$payer = new Payer(); +For stored credit card payments, set payment method +to 'credit_card'.

$payer = new Payer(); $payer->setPaymentMethod("credit_card") - ->setFundingInstruments(array($fi));

Amount

+ ->setFundingInstruments(array($fi));

Amount

-

Let's you specify a payment amount.

$amount = new Amount(); +

Lets you specify a payment amount. +You can also specify additional details +such as shipping, tax.

$amount = new Amount(); $amount->setCurrency("USD") - ->setTotal("1.00");

Transaction

+ ->setTotal("1.00");

Transaction

A transaction defines the contract of a payment - what is the payment for and who -is fulfilling it. Transaction is created with -a Payee and Amount types

$transaction = new Transaction(); +is fulfilling it.

$transaction = new Transaction(); $transaction->setAmount($amount) - ->setDescription("This is the payment description.");

Payment

+ ->setDescription("Payment description");

Payment

A Payment Resource; create one using -the above types and intent as 'sale'

$payment = new Payment(); +the above types and intent set to 'sale'

$payment = new Payment(); $payment->setIntent("sale") ->setPayer($payer) - ->setTransactions(array($transaction));

Create Payment

+ ->setTransactions(array($transaction));

Create Payment

-

Create a payment by posting to the APIService +

Create a payment by calling the 'create' method +passing it a valid apiContext. (See bootstrap.php for more on ApiContext) -The return object contains the status;

try { +The return object contains the state.

try { $payment->create($apiContext); } catch (PayPal\Exception\PPConnectionException $ex) { echo "Exception: " . $ex->getMessage() . PHP_EOL; @@ -60,6 +55,9 @@ The return object contains the status;

} ?> <html> +<head> + <title>Saved Credit card payments</title> +</head> <body> <div> Created payment: @@ -68,4 +66,4 @@ The return object contains the status;

<pre><?php var_dump($payment->toArray());?></pre> <a href='../index.html'>Back</a> </body> -</html>
\ No newline at end of file +</html>
\ No newline at end of file diff --git a/sample/source/DeleteCreditCard.html b/sample/source/DeleteCreditCard.html index a18ab74..c66e287 100644 --- a/sample/source/DeleteCreditCard.html +++ b/sample/source/DeleteCreditCard.html @@ -1,10 +1,10 @@ -DeleteCreditCard
<?php

Delete CreditCard Sample

+DeleteCreditCard
DeleteCreditCard.php
<?php

Delete CreditCard Sample

-

This sample code demonstrate how you can

//delete a saved creditcard

using the delete API. +

This sample code demonstrate how you can +delete a saved credit card. API used: /v1/vault/credit-card/{} NOTE: HTTP method used here is DELETE

require __DIR__ . '/../bootstrap.php'; -use PayPal\Api\CreditCard; -use PayPal\Api\Address;

save card for demo

+use PayPal\Api\CreditCard;

Store a mock card that can be deleted later.

CreditCard

@@ -16,12 +16,11 @@ used to fund a payment.

->setExpireYear("2019") ->setCvv2("012") ->setFirstName("Joe") - ->setLastName("Shopper");

Save card

+ ->setLastName("Shopper");

Save card

Creates the credit card as a resource in the PayPal vault. The response contains -an 'id' that you can use to refer to it -in the future payments. +an 'id' that you can use to refer to it later. (See bootstrap.php for more on ApiContext)

try { $card = $card->create($apiContext); } catch (PayPal\Exception\PPConnectionException $ex) { @@ -30,20 +29,22 @@ in the future payments. exit(1); } -$creditCard = CreditCard::get($card->getId(), $apiContext); -try {

Delete Card

+try {

Delete Card

deletes saved credit card -(See bootstrap.php for more on ApiContext)

$creditCard->delete($apiContext); +(See bootstrap.php for more on ApiContext)

$creditCard = CreditCard::get($card->getId(), $apiContext); + $creditCard->delete($apiContext); } catch (PayPal\Exception\PPConnectionException $ex) { echo "Exception: " . $ex->getMessage() . PHP_EOL; exit(1); } ?> - <html> +<head> + <title>Delete a saved credit card</title> +</head> <body> <p> Credit Card deleted Successfully</p> <a href='../index.html'>Back</a> </body> -</html>
\ No newline at end of file +</html>
\ No newline at end of file diff --git a/sample/source/ExecutePayment.html b/sample/source/ExecutePayment.html index 8a6a6c0..9812667 100644 --- a/sample/source/ExecutePayment.html +++ b/sample/source/ExecutePayment.html @@ -1,4 +1,4 @@ -ExecutePayment
<?php

Execute Payment Sample

+ExecutePayment
ExecutePayment.php
<?php

Execute Payment Sample

This sample shows how you can complete a payment that has been approved by @@ -11,17 +11,17 @@ API used: POST '/v1/payments/payment//execute'.

use PayPal\Api\PaymentExecution; session_start(); if(isset($_GET['success']) && $_GET['success'] == 'true') { -

Get the payment Object by passing paymentId +

Get the payment Object by passing paymentId payment id was previously stored in session in CreatePaymentUsingPayPal.php

$paymentId = $_SESSION['paymentId']; $payment = Payment::get($paymentId, $apiContext); -

PaymentExecution object includes information necessary +

PaymentExecution object includes information necessary to execute a PayPal account payment. The payer_id is added to the request query parameters when the user is redirected from paypal back to your site

$execution = new PaymentExecution(); $execution->setPayerId($_GET['PayerID']); - //Execute the payment

(See bootstrap.php for more on ApiContext)

$payment->execute($execution, $apiContext); + //Execute the payment

(See bootstrap.php for more on ApiContext)

$payment->execute($execution, $apiContext); echo "<html><body><pre>"; var_dump($payment->toArray()); @@ -29,4 +29,4 @@ when the user is redirected from paypal back to your site

} else { echo "User cancelled payment."; -}
\ No newline at end of file +}
\ No newline at end of file diff --git a/sample/source/GetAuthorization.html b/sample/source/GetAuthorization.html index c9a1d71..0bf6b5b 100644 --- a/sample/source/GetAuthorization.html +++ b/sample/source/GetAuthorization.html @@ -1,16 +1,17 @@ -GetAuthorization
<?php

GetAuthorization

+GetAuthorization
GetAuthorization.php
<?php

GetAuthorization

-

This sample code demonstrate how you can get details of an authorized payment +

This sample code demonstrates how you can get details +of an authorized payment. API used: /v1/payments/authorization/<$authorizationId>

require __DIR__ . '/../bootstrap.php'; -use PayPal\Api\Authorization;

GetAuthorization

+use PayPal\Api\Authorization;

GetAuthorization

You can retrieve info about an Authorization by invoking the Authorization::get method with a valid ApiContext (See bootstrap.php for more on ApiContext) -The return object contains the authorization state.

try {

create a authorization to get authorization Id +The return object contains the authorization state.

try {

create a authorization to get authorization Id createAuthorization is defined in common.php

$authId = createAuthorization($apiContext); -

Retrieve the authorization

$authorization = Authorization::get($authId, $apiContext); +

Retrieve the authorization

$authorization = Authorization::get($authId, $apiContext); } catch (PayPal\Exception\PPConnectionException $ex) { echo "Exception: " . $ex->getMessage() . PHP_EOL; var_dump($ex->getData()); @@ -18,6 +19,9 @@ createAuthorization is defined in common.php

} ?> <html> +<head> + <title>Lookup an authorization</title> +</head> <body> <div> Retrieved Authorization: @@ -26,4 +30,4 @@ createAuthorization is defined in common.php

<pre><?php var_dump($authorization->toArray());?></pre> <a href='../index.html'>Back</a> </body> -</html>
\ No newline at end of file +</html>
\ No newline at end of file diff --git a/sample/source/GetCapture.html b/sample/source/GetCapture.html index 481e401..521bb68 100644 --- a/sample/source/GetCapture.html +++ b/sample/source/GetCapture.html @@ -1,28 +1,33 @@ -GetCapture
<?php

GetCapture

+GetCapture
GetCapture.php
<?php

GetCapture

-

This sample code demonstrate how you can get the details of Captured Payment +

This sample code demonstrates how you can lookup the details +of a captured payment. API used: /v1/payments/capture/<$captureId>

require __DIR__ . '/../bootstrap.php'; use PayPal\Api\Capture; use PayPal\Api\Amount; -use PayPal\Api\Authorization;

Create a mock Capture

try {

create payment to get authorization Id

$authId = createAuthorization($apiContext); +use PayPal\Api\Authorization;

Create a mock Capture

try {

create a mock authorization to get authorization Id +createAuthorization is defined in common.php

$authId = createAuthorization($apiContext);

Lookup the authorization

$authorization = Authorization::get($authId, $apiContext); + + ### Capture + $amt = new Amount(); $amt->setCurrency("USD") ->setTotal("1.00"); +

Create a capture

$captureInfo = new Capture(); + $captureInfo->setId($authId) + ->setAmount($amt); - ### Capture - $captur = new Capture(); - $captur->setId($authId) - ->setAmount($amt);

get the authorization

$authorization = Authorization::get($authId, $apiContext);

Create a capture

$capt = $authorization->capture($captur, $apiContext); + $capture = $authorization->capture($captureInfo, $apiContext); } catch (PayPal\Exception\PPConnectionException $ex) { echo "Exception: " . $ex->getMessage() . PHP_EOL; var_dump($ex->getData()); exit(1); -}

Retrieve Capture details

+}

Retrieve Capture details

You can look up a capture by invoking the Capture::get method with a valid ApiContext (See bootstrap.php for more on ApiContext)

try { - $capture = Capture::get($capt->getId(), $apiContext); + $capture = Capture::get($capture->getId(), $apiContext); } catch (PayPal\Exception\PPConnectionException $ex) { echo "Exception: " . $ex->getMessage() . PHP_EOL; var_dump($ex->getData()); @@ -30,6 +35,9 @@ with a valid ApiContext (See bootstrap.php for more on ApiContext)< } ?> <html> +<head> + <title>Lookup a capture</title> +</head> <body> <div> Capture Id: @@ -38,4 +46,4 @@ with a valid ApiContext (See bootstrap.php for more on ApiContext)< <pre><?php var_dump($capture->toArray());?></pre> <a href='../index.html'>Back</a> </body> -</html>
\ No newline at end of file +</html>
\ No newline at end of file diff --git a/sample/source/GetCreditCard.html b/sample/source/GetCreditCard.html index 1455817..8761a9f 100644 --- a/sample/source/GetCreditCard.html +++ b/sample/source/GetCreditCard.html @@ -1,15 +1,14 @@ -GetCreditCard
<?php

Get Credit Card Sample

+GetCreditCard
GetCreditCard.php
<?php

Get Credit Card Sample

The CreditCard resource allows you to -retrieve previously saved CreditCards, -by sending a GET request to the URI -'/v1/vault/credit-card' +retrieve previously saved CreditCards. +API called: '/v1/vault/credit-card' The following code takes you through the process of retrieving a saved CreditCard

require __DIR__ . '/../bootstrap.php'; -use PayPal\Api\CreditCard;

The cardId can be obtained from a previous save credit +use PayPal\Api\CreditCard;

The cardId can be obtained from a previous save credit card operation. Use $card->getId()

$cardId = "CARD-5AR29593TC404090HKIKN77Q"; -/// ### Retrieve card

(See bootstrap.php for more on ApiContext)

try { +/// ### Retrieve card

(See bootstrap.php for more on ApiContext)

try { $card = CreditCard::get($cardId, $apiContext); } catch (PayPal\Exception\PPConnectionException $ex) { echo "Exception: " . $ex->getMessage() . PHP_EOL; @@ -18,9 +17,12 @@ card operation. Use $card->getId()

} ?> <html> +<head> + <title>Lookup a saved credit card</title> +</head> <body> - <div>Retrieving credit card: <?php echo $cardId;?></div> + <div>Retrieving saved credit card: <?php echo $cardId;?></div> <pre><?php var_dump($card);?></pre> <a href='../index.html'>Back</a> </body> -</html>
\ No newline at end of file +</html>
\ No newline at end of file diff --git a/sample/source/GetPayment.html b/sample/source/GetPayment.html index ddbcd9b..dba7df8 100644 --- a/sample/source/GetPayment.html +++ b/sample/source/GetPayment.html @@ -1,4 +1,4 @@ -GetPayment
<?php

GetPaymentSample

+GetPayment
GetPayment.php
<?php

GetPaymentSample

This sample code demonstrate how you can retrieve a list of all Payment resources @@ -9,7 +9,7 @@ payments list. API used: GET /v1/payments/payments

require __DIR__ . '/../bootstrap.php'; use PayPal\Api\Payment; -$paymentId = "PAY-0XL713371A312273YKE2GCNI";

Retrieve payment

+$paymentId = "PAY-0XL713371A312273YKE2GCNI";

Retrieve payment

Retrieve the payment object by calling the static get method @@ -24,9 +24,12 @@ Payment ID } ?> <html> +<head> + <title>Lookup a payment</title> +</head> <body> <div>Retrieving Payment ID: <?php echo $paymentId;?></div> <pre><?php var_dump($payment->toArray());?></pre> <a href='../index.html'>Back</a> </body> -</html>

\ No newline at end of file +</html>
\ No newline at end of file diff --git a/sample/source/GetSale.html b/sample/source/GetSale.html index 5330fac..6aa2ea5 100644 --- a/sample/source/GetSale.html +++ b/sample/source/GetSale.html @@ -1,13 +1,14 @@ -GetSale
<?php

Get Sale sample

+GetSale
GetSale.php
<?php

Get Sale sample

-

This sample code demonstrates how you can retrieve +

Sale transactions are nothing but completed payments. +This sample code demonstrates how you can retrieve details of completed Sale Transaction. API used: /v1/payments/sale/{sale-id}

require __DIR__ . '/../bootstrap.php'; use PayPal\Api\Sale; $saleId = '3RM92092UW5126232'; -try {

Retrieve the sale object

+try {

Retrieve the sale object

Pass the ID of the sale transaction from your payment resource.

$sale = Sale::get($saleId, $apiContext); @@ -18,9 +19,12 @@ transaction from your payment resource.

} ?> <html> +<head> + <title>Lookup a sale</title> +</head> <body> <div>Retrieving sale id: <?php echo $saleId;?></div> <pre><?php var_dump($sale);?></pre> <a href='../index.html'>Back</a> </body> -</html>
\ No newline at end of file +</html>
\ No newline at end of file diff --git a/sample/source/ListPayments.html b/sample/source/ListPayments.html index b420ec8..f56e302 100644 --- a/sample/source/ListPayments.html +++ b/sample/source/ListPayments.html @@ -1,4 +1,4 @@ -ListPayments
<?php

GetPaymentList

+ListPayments
ListPayments.php
<?php

GetPaymentList

This sample code demonstrate how you can retrieve a list of all Payment resources @@ -7,7 +7,7 @@ Note various query parameters that you can use to filter, and paginate through the payments list. API used: GET /v1/payments/payments

require __DIR__ . '/../bootstrap.php'; -use PayPal\Api\Payment;

Retrieve payment

+use PayPal\Api\Payment;

Retrieve payment

Retrieve the PaymentHistory object by calling the static get method on the Payment class, @@ -23,9 +23,12 @@ Refer the method doc for valid values for keys } ?> <html> +<head> + <title>Lookup payment history</title> +</head> <body> <div>Got <?php echo $payments->getCount(); ?> matching payments </div> <pre><?php var_dump($payments->toArray());?></pre> <a href='../index.html'>Back</a> </body> -</html>

\ No newline at end of file +</html>
\ No newline at end of file diff --git a/sample/source/Reauthorization.html b/sample/source/Reauthorization.html index a26843b..76c9b24 100644 --- a/sample/source/Reauthorization.html +++ b/sample/source/Reauthorization.html @@ -1,19 +1,20 @@ -Reauthorization
<?php

Reauthorization Sample

+Reauthorization
Reauthorization.php
<?php

Reauthorization Sample

-

Sample showing how to do a reauthorization +

This sample code demonstrates how you can reauthorize a PayPal +account payment. API used: v1/payments/authorization/{authorization_id}/reauthorize

require __DIR__ . '/../bootstrap.php'; use PayPal\Api\Authorization; -use PayPal\Api\Amount;

Reauthorization

+use PayPal\Api\Amount;

Reauthorization

Reauthorization is available only for PayPal account payments -and not for credit card payments.

You can reauthorize a payment only once 4 to 29 +and not for credit card payments.

You can reauthorize a payment only once 4 to 29 days after the 3-day honor period for the original authorization has expired.

try { -

Retrieve a authorization using the authorization id

$authorization = Authorization::get('7GH53639GA425732B', $apiContext); +

Lookup authorization using the authorization id

$authorization = Authorization::get('7GH53639GA425732B', $apiContext); $amount = new Amount(); $amount->setCurrency("USD"); - $amount->setTotal("1.00");

Reauthorize with amount being reauthorized

$authorization->setAmount($amount); + $amount->setTotal("1.00");

Reauthorize with amount being reauthorized

$authorization->setAmount($amount); $reauthorization = $authorization->reauthorize($apiContext); } catch (PayPal\Exception\PPConnectionException $ex) { echo "Exception: " . $ex->getMessage() . PHP_EOL; @@ -22,6 +23,9 @@ has expired.

} ?> <html> +<head> + <title>Reauthorize a payment</title> +</head> <body> <div> Reauthorization Id: @@ -32,4 +36,4 @@ has expired.

</pre> <a href='../index.html'>Back</a> </body> -</html>
\ No newline at end of file +</html>
\ No newline at end of file diff --git a/sample/source/RefundCapture.html b/sample/source/RefundCapture.html index 4969b7f..7d237ad 100644 --- a/sample/source/RefundCapture.html +++ b/sample/source/RefundCapture.html @@ -1,37 +1,40 @@ -RefundCapture
<?php

Refund Capture Sample

+RefundCapture
RefundCapture.php
<?php

Refund Capture Sample

-

This sample code demonstrate how you can -process a refund on a Captured transaction created -using the Capture API. +

This sample code demonstrates how you can +process a refund on a Captured transaction. API used: /v1/payments/capture/{}/refund

require __DIR__ . '/../bootstrap.php'; use PayPal\Api\Authorization; use PayPal\Api\Capture; use PayPal\Api\Refund; use PayPal\Api\Amount; -use PayPal\Rest\ApiContext;

Create a mock capture

try {

create payment to get authorization Id

$authId = createAuthorization($apiContext); +use PayPal\Rest\ApiContext; + +try {

Create a mock authorization to get authorization Id

$authId = createAuthorization($apiContext);

Get the authorization

$authorization = Authorization::get($authId, $apiContext); + +

Capture

$amt = new Amount(); $amt->setCurrency("USD") ->setTotal("1.00"); +

Create a capture

$captureInfo = new Capture(); + $captureInfo->setAmount($amt); - ### Capture - $captur = new Capture(); - $captur->setAmount($amt);

Get the authorization

$authorization = Authorization::get($authId, $apiContext); -

Create a capture

$capt = $authorization->capture($captur, $apiContext); + $capture = $authorization->capture($captureInfo, $apiContext); } catch (PayPal\Exception\PPConnectionException $ex) { echo "Exception: " . $ex->getMessage() . PHP_EOL; var_dump($ex->getData()); exit(1); -}

Refund

+}

Refund

Create a refund object indicating refund amount and call the refund method

$refund = new Refund(); $refund->setAmount($amt); -try {

Create a new apiContext object so we send a new +try {

Create a new apiContext object so we send a new PayPal-Request-Id (idempotency) header for this resource

$apiContext = new ApiContext($apiContext->getCredential()); - $captureRefund = $capt->refund($refund, $apiContext); + + $captureRefund = $capture->refund($refund, $apiContext); } catch (PayPal\Exception\PPConnectionException $ex) { echo "Exception: " . $ex->getMessage() . PHP_EOL; var_dump($ex->getData()); @@ -40,9 +43,12 @@ PayPal-Request-Id (idempotency) header for this resource

?> <html> +<head> + <title>Refund a captured payment</title> +</head> <body> <div>Refund Capture:</div> <pre><?php var_dump($captureRefund);?></pre> <a href='../index.html'>Back</a> </body> -</html>
\ No newline at end of file +</html>
\ No newline at end of file diff --git a/sample/source/RefundSale.html b/sample/source/RefundSale.html index c7acbd5..0b33301 100644 --- a/sample/source/RefundSale.html +++ b/sample/source/RefundSale.html @@ -1,4 +1,4 @@ -RefundSale
<?php

Sale Refund Sample

+RefundSale
RefundSale.php
<?php

Sale Refund Sample

This sample code demonstrate how you can process a refund on a sale transaction created @@ -6,24 +6,22 @@ using the Payments API. API used: /v1/payments/sale/{sale-id}/refund

require __DIR__ . '/../bootstrap.php'; use PayPal\Api\Amount; use PayPal\Api\Refund; -use PayPal\Api\Sale;

Refund

+use PayPal\Api\Sale;

Refund amount

-

Create a refund object indicating -refund amount

$amt = new Amount(); +

Includes both the refunded amount (to Payer) +and refunded fee (to Payee). Use the $amt->details +field to mention fees refund details.

$amt = new Amount(); $amt->setCurrency('USD') - ->setTotal('0.01'); - -$refund = new Refund(); + ->setTotal('0.01');

Refund object

$refund = new Refund(); $refund->setAmount($amt); -$saleId = '3RM92092UW5126232';

Sale

+$saleId = '3RM92092UW5126232';

Sale

A sale transaction. Create a Sale object with the given sale transaction id.

$sale = new Sale(); $sale->setId($saleId); - -try {

Refund the sale +try {

Refund the sale (See bootstrap.php for more on ApiContext)

$sale->refund($refund, $apiContext); } catch (PayPal\Exception\PPConnectionException $ex) { echo "Exception:" . $ex->getMessage() . PHP_EOL; @@ -32,9 +30,12 @@ given sale transaction id.

} ?> <html> +<head> + <title>Refund a sale</title> +</head> <body> <div>Refunding sale id: <?php echo $saleId;?></div> <pre><?php var_dump($sale);?></pre> <a href='../index.html'>Back</a> </body> -</html>
\ No newline at end of file +</html>
\ No newline at end of file diff --git a/sample/source/VoidAuthorization.html b/sample/source/VoidAuthorization.html index 2c58302..3aea3e0 100644 --- a/sample/source/VoidAuthorization.html +++ b/sample/source/VoidAuthorization.html @@ -1,17 +1,15 @@ -VoidAuthorization
<?php

VoidAuthorization

+VoidAuthorization
VoidAuthorization.php
<?php

VoidAuthorization

-

This sample code demonstrate how you can void an authorized payment +

This sample code demonstrates how you can +void an authorized payment. API used: /v1/payments/authorization/<{authorizationid}>/void"

require __DIR__ . '/../bootstrap.php'; -use PayPal\Api\Authorization;

VoidAuthorization

+use PayPal\Api\Authorization;

VoidAuthorization

You can void a previously authorized payment by invoking the $authorization->void method -with a valid ApiContext (See bootstrap.php for more on ApiContext)

try {

create payment to get authorization Id -createAuthorization is defined in common.php

$authId = createAuthorization($apiContext); - - $authorization = Authorization::get($authId, $apiContext); - $voidedAuth = $authorization->void($apiContext); +with a valid ApiContext (See bootstrap.php for more on ApiContext)

try {

create an authorization to get authorization Id +createAuthorization is defined in common.php

$authId = createAuthorization($apiContext);

Lookup the authorization

$authorization = Authorization::get($authId, $apiContext);

Void the authorization

$voidedAuth = $authorization->void($apiContext); } catch (PayPal\Exception\PPConnectionException $ex) { echo "Exception: " . $ex->getMessage() . PHP_EOL; var_dump($ex->getData()); @@ -19,6 +17,9 @@ createAuthorization is defined in common.php

} ?> <html> +<head> + <title>Void an authorization</title> +</head> <body> <div> Voided authorization @@ -26,4 +27,4 @@ createAuthorization is defined in common.php

<pre><?php var_dump($voidedAuth->toArray());?></pre> <a href='../index.html'>Back</a> </body> -</html>
\ No newline at end of file +</html>
\ No newline at end of file diff --git a/sample/source/assets/behavior.js b/sample/source/assets/behavior.js index c76f978..ae56507 100644 --- a/sample/source/assets/behavior.js +++ b/sample/source/assets/behavior.js @@ -2,7 +2,7 @@ (function(a,b){function cy(a){return f.isWindow(a)?a:a.nodeType===9?a.defaultView||a.parentWindow:!1}function cv(a){if(!ck[a]){var b=c.body,d=f("<"+a+">").appendTo(b),e=d.css("display");d.remove();if(e==="none"||e===""){cl||(cl=c.createElement("iframe"),cl.frameBorder=cl.width=cl.height=0),b.appendChild(cl);if(!cm||!cl.createElement)cm=(cl.contentWindow||cl.contentDocument).document,cm.write((c.compatMode==="CSS1Compat"?"":"")+""),cm.close();d=cm.createElement(a),cm.body.appendChild(d),e=f.css(d,"display"),b.removeChild(cl)}ck[a]=e}return ck[a]}function cu(a,b){var c={};f.each(cq.concat.apply([],cq.slice(0,b)),function(){c[this]=a});return c}function ct(){cr=b}function cs(){setTimeout(ct,0);return cr=f.now()}function cj(){try{return new a.ActiveXObject("Microsoft.XMLHTTP")}catch(b){}}function ci(){try{return new a.XMLHttpRequest}catch(b){}}function cc(a,c){a.dataFilter&&(c=a.dataFilter(c,a.dataType));var d=a.dataTypes,e={},g,h,i=d.length,j,k=d[0],l,m,n,o,p;for(g=1;g0){if(c!=="border")for(;g=0===c})}function S(a){return!a||!a.parentNode||a.parentNode.nodeType===11}function K(){return!0}function J(){return!1}function n(a,b,c){var d=b+"defer",e=b+"queue",g=b+"mark",h=f._data(a,d);h&&(c==="queue"||!f._data(a,e))&&(c==="mark"||!f._data(a,g))&&setTimeout(function(){!f._data(a,e)&&!f._data(a,g)&&(f.removeData(a,d,!0),h.fire())},0)}function m(a){for(var b in a){if(b==="data"&&f.isEmptyObject(a[b]))continue;if(b!=="toJSON")return!1}return!0}function l(a,c,d){if(d===b&&a.nodeType===1){var e="data-"+c.replace(k,"-$1").toLowerCase();d=a.getAttribute(e);if(typeof d=="string"){try{d=d==="true"?!0:d==="false"?!1:d==="null"?null:f.isNumeric(d)?parseFloat(d):j.test(d)?f.parseJSON(d):d}catch(g){}f.data(a,c,d)}else d=b}return d}function h(a){var b=g[a]={},c,d;a=a.split(/\s+/);for(c=0,d=a.length;c)[^>]*$|#([\w\-]*)$)/,j=/\S/,k=/^\s+/,l=/\s+$/,m=/^<(\w+)\s*\/?>(?:<\/\1>)?$/,n=/^[\],:{}\s]*$/,o=/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,p=/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,q=/(?:^|:|,)(?:\s*\[)+/g,r=/(webkit)[ \/]([\w.]+)/,s=/(opera)(?:.*version)?[ \/]([\w.]+)/,t=/(msie) ([\w.]+)/,u=/(mozilla)(?:.*? rv:([\w.]+))?/,v=/-([a-z]|[0-9])/ig,w=/^-ms-/,x=function(a,b){return(b+"").toUpperCase()},y=d.userAgent,z,A,B,C=Object.prototype.toString,D=Object.prototype.hasOwnProperty,E=Array.prototype.push,F=Array.prototype.slice,G=String.prototype.trim,H=Array.prototype.indexOf,I={};e.fn=e.prototype={constructor:e,init:function(a,d,f){var g,h,j,k;if(!a)return this;if(a.nodeType){this.context=this[0]=a,this.length=1;return this}if(a==="body"&&!d&&c.body){this.context=c,this[0]=c.body,this.selector=a,this.length=1;return this}if(typeof a=="string"){a.charAt(0)!=="<"||a.charAt(a.length-1)!==">"||a.length<3?g=i.exec(a):g=[null,a,null];if(g&&(g[1]||!d)){if(g[1]){d=d instanceof e?d[0]:d,k=d?d.ownerDocument||d:c,j=m.exec(a),j?e.isPlainObject(d)?(a=[c.createElement(j[1])],e.fn.attr.call(a,d,!0)):a=[k.createElement(j[1])]:(j=e.buildFragment([g[1]],[k]),a=(j.cacheable?e.clone(j.fragment):j.fragment).childNodes);return e.merge(this,a)}h=c.getElementById(g[2]);if(h&&h.parentNode){if(h.id!==g[2])return f.find(a);this.length=1,this[0]=h}this.context=c,this.selector=a;return this}return!d||d.jquery?(d||f).find(a):this.constructor(d).find(a)}if(e.isFunction(a))return f.ready(a);a.selector!==b&&(this.selector=a.selector,this.context=a.context);return e.makeArray(a,this)},selector:"",jquery:"1.7.1",length:0,size:function(){return this.length},toArray:function(){return F.call(this,0)},get:function(a){return a==null?this.toArray():a<0?this[this.length+a]:this[a]},pushStack:function(a,b,c){var d=this.constructor();e.isArray(a)?E.apply(d,a):e.merge(d,a),d.prevObject=this,d.context=this.context,b==="find"?d.selector=this.selector+(this.selector?" ":"")+c:b&&(d.selector=this.selector+"."+b+"("+c+")");return d},each:function(a,b){return e.each(this,a,b)},ready:function(a){e.bindReady(),A.add(a);return this},eq:function(a){a=+a;return a===-1?this.slice(a):this.slice(a,a+1)},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},slice:function(){return this.pushStack(F.apply(this,arguments),"slice",F.call(arguments).join(","))},map:function(a){return this.pushStack(e.map(this,function(b,c){return a.call(b,c,b)}))},end:function(){return this.prevObject||this.constructor(null)},push:E,sort:[].sort,splice:[].splice},e.fn.init.prototype=e.fn,e.extend=e.fn.extend=function(){var a,c,d,f,g,h,i=arguments[0]||{},j=1,k=arguments.length,l=!1;typeof i=="boolean"&&(l=i,i=arguments[1]||{},j=2),typeof i!="object"&&!e.isFunction(i)&&(i={}),k===j&&(i=this,--j);for(;j0)return;A.fireWith(c,[e]),e.fn.trigger&&e(c).trigger("ready").off("ready")}},bindReady:function(){if(!A){A=e.Callbacks("once memory");if(c.readyState==="complete")return setTimeout(e.ready,1);if(c.addEventListener)c.addEventListener("DOMContentLoaded",B,!1),a.addEventListener("load",e.ready,!1);else if(c.attachEvent){c.attachEvent("onreadystatechange",B),a.attachEvent("onload",e.ready);var b=!1;try{b=a.frameElement==null}catch(d){}c.documentElement.doScroll&&b&&J()}}},isFunction:function(a){return e.type(a)==="function"},isArray:Array.isArray||function(a){return e.type(a)==="array"},isWindow:function(a){return a&&typeof a=="object"&&"setInterval"in a},isNumeric:function(a){return!isNaN(parseFloat(a))&&isFinite(a)},type:function(a){return a==null?String(a):I[C.call(a)]||"object"},isPlainObject:function(a){if(!a||e.type(a)!=="object"||a.nodeType||e.isWindow(a))return!1;try{if(a.constructor&&!D.call(a,"constructor")&&!D.call(a.constructor.prototype,"isPrototypeOf"))return!1}catch(c){return!1}var d;for(d in a);return d===b||D.call(a,d)},isEmptyObject:function(a){for(var b in a)return!1;return!0},error:function(a){throw new Error(a)},parseJSON:function(b){if(typeof b!="string"||!b)return null;b=e.trim(b);if(a.JSON&&a.JSON.parse)return a.JSON.parse(b);if(n.test(b.replace(o,"@").replace(p,"]").replace(q,"")))return(new Function("return "+b))();e.error("Invalid JSON: "+b)},parseXML:function(c){var d,f;try{a.DOMParser?(f=new DOMParser,d=f.parseFromString(c,"text/xml")):(d=new ActiveXObject("Microsoft.XMLDOM"),d.async="false",d.loadXML(c))}catch(g){d=b}(!d||!d.documentElement||d.getElementsByTagName("parsererror").length)&&e.error("Invalid XML: "+c);return d},noop:function(){},globalEval:function(b){b&&j.test(b)&&(a.execScript||function(b){a.eval.call(a,b)})(b)},camelCase:function(a){return a.replace(w,"ms-").replace(v,x)},nodeName:function(a,b){return a.nodeName&&a.nodeName.toUpperCase()===b.toUpperCase()},each:function(a,c,d){var f,g=0,h=a.length,i=h===b||e.isFunction(a);if(d){if(i){for(f in a)if(c.apply(a[f],d)===!1)break}else for(;g0&&a[0]&&a[j-1]||j===0||e.isArray(a));if(k)for(;i1?i.call(arguments,0):b,j.notifyWith(k,e)}}function l(a){return function(c){b[a]=arguments.length>1?i.call(arguments,0):c,--g||j.resolveWith(j,b)}}var b=i.call(arguments,0),c=0,d=b.length,e=Array(d),g=d,h=d,j=d<=1&&a&&f.isFunction(a.promise)?a:f.Deferred(),k=j.promise();if(d>1){for(;c
a",d=q.getElementsByTagName("*"),e=q.getElementsByTagName("a")[0];if(!d||!d.length||!e)return{};g=c.createElement("select"),h=g.appendChild(c.createElement("option")),i=q.getElementsByTagName("input")[0],b={leadingWhitespace:q.firstChild.nodeType===3,tbody:!q.getElementsByTagName("tbody").length,htmlSerialize:!!q.getElementsByTagName("link").length,style:/top/.test(e.getAttribute("style")),hrefNormalized:e.getAttribute("href")==="/a",opacity:/^0.55/.test(e.style.opacity),cssFloat:!!e.style.cssFloat,checkOn:i.value==="on",optSelected:h.selected,getSetAttribute:q.className!=="t",enctype:!!c.createElement("form").enctype,html5Clone:c.createElement("nav").cloneNode(!0).outerHTML!=="<:nav>",submitBubbles:!0,changeBubbles:!0,focusinBubbles:!1,deleteExpando:!0,noCloneEvent:!0,inlineBlockNeedsLayout:!1,shrinkWrapBlocks:!1,reliableMarginRight:!0},i.checked=!0,b.noCloneChecked=i.cloneNode(!0).checked,g.disabled=!0,b.optDisabled=!h.disabled;try{delete q.test}catch(s){b.deleteExpando=!1}!q.addEventListener&&q.attachEvent&&q.fireEvent&&(q.attachEvent("onclick",function(){b.noCloneEvent=!1}),q.cloneNode(!0).fireEvent("onclick")),i=c.createElement("input"),i.value="t",i.setAttribute("type","radio"),b.radioValue=i.value==="t",i.setAttribute("checked","checked"),q.appendChild(i),k=c.createDocumentFragment(),k.appendChild(q.lastChild),b.checkClone=k.cloneNode(!0).cloneNode(!0).lastChild.checked,b.appendChecked=i.checked,k.removeChild(i),k.appendChild(q),q.innerHTML="",a.getComputedStyle&&(j=c.createElement("div"),j.style.width="0",j.style.marginRight="0",q.style.width="2px",q.appendChild(j),b.reliableMarginRight=(parseInt((a.getComputedStyle(j,null)||{marginRight:0}).marginRight,10)||0)===0);if(q.attachEvent)for(o in{submit:1,change:1,focusin:1})n="on"+o,p=n in q,p||(q.setAttribute(n,"return;"),p=typeof q[n]=="function"),b[o+"Bubbles"]=p;k.removeChild(q),k=g=h=j=q=i=null,f(function(){var a,d,e,g,h,i,j,k,m,n,o,r=c.getElementsByTagName("body")[0];!r||(j=1,k="position:absolute;top:0;left:0;width:1px;height:1px;margin:0;",m="visibility:hidden;border:0;",n="style='"+k+"border:5px solid #000;padding:0;'",o="
"+""+"
",a=c.createElement("div"),a.style.cssText=m+"width:0;height:0;position:static;top:0;margin-top:"+j+"px",r.insertBefore(a,r.firstChild),q=c.createElement("div"),a.appendChild(q),q.innerHTML="
t
",l=q.getElementsByTagName("td"),p=l[0].offsetHeight===0,l[0].style.display="",l[1].style.display="none",b.reliableHiddenOffsets=p&&l[0].offsetHeight===0,q.innerHTML="",q.style.width=q.style.paddingLeft="1px",f.boxModel=b.boxModel=q.offsetWidth===2,typeof q.style.zoom!="undefined"&&(q.style.display="inline",q.style.zoom=1,b.inlineBlockNeedsLayout=q.offsetWidth===2,q.style.display="",q.innerHTML="
",b.shrinkWrapBlocks=q.offsetWidth!==2),q.style.cssText=k+m,q.innerHTML=o,d=q.firstChild,e=d.firstChild,h=d.nextSibling.firstChild.firstChild,i={doesNotAddBorder:e.offsetTop!==5,doesAddBorderForTableAndCells:h.offsetTop===5},e.style.position="fixed",e.style.top="20px",i.fixedPosition=e.offsetTop===20||e.offsetTop===15,e.style.position=e.style.top="",d.style.overflow="hidden",d.style.position="relative",i.subtractsBorderForOverflowNotVisible=e.offsetTop===-5,i.doesNotIncludeMarginInBodyOffset=r.offsetTop!==j,r.removeChild(a),q=a=null,f.extend(b,i))});return b}();var j=/^(?:\{.*\}|\[.*\])$/,k=/([A-Z])/g;f.extend({cache:{},uuid:0,expando:"jQuery"+(f.fn.jquery+Math.random()).replace(/\D/g,""),noData:{embed:!0,object:"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000",applet:!0},hasData:function(a){a=a.nodeType?f.cache[a[f.expando]]:a[f.expando];return!!a&&!m(a)},data:function(a,c,d,e){if(!!f.acceptData(a)){var g,h,i,j=f.expando,k=typeof c=="string",l=a.nodeType,m=l?f.cache:a,n=l?a[j]:a[j]&&j,o=c==="events";if((!n||!m[n]||!o&&!e&&!m[n].data)&&k&&d===b)return;n||(l?a[j]=n=++f.uuid:n=j),m[n]||(m[n]={},l||(m[n].toJSON=f.noop));if(typeof c=="object"||typeof c=="function")e?m[n]=f.extend(m[n],c):m[n].data=f.extend(m[n].data,c);g=h=m[n],e||(h.data||(h.data={}),h=h.data),d!==b&&(h[f.camelCase(c)]=d);if(o&&!h[c])return g.events;k?(i=h[c],i==null&&(i=h[f.camelCase(c)])):i=h;return i}},removeData:function(a,b,c){if(!!f.acceptData(a)){var d,e,g,h=f.expando,i=a.nodeType,j=i?f.cache:a,k=i?a[h]:h;if(!j[k])return;if(b){d=c?j[k]:j[k].data;if(d){f.isArray(b)||(b in d?b=[b]:(b=f.camelCase(b),b in d?b=[b]:b=b.split(" ")));for(e=0,g=b.length;e-1)return!0;return!1},val:function(a){var c,d,e,g=this[0];{if(!!arguments.length){e=f.isFunction(a);return this.each(function(d){var g=f(this),h;if(this.nodeType===1){e?h=a.call(this,d,g.val()):h=a,h==null?h="":typeof h=="number"?h+="":f.isArray(h)&&(h=f.map(h,function(a){return a==null?"":a+""})),c=f.valHooks[this.nodeName.toLowerCase()]||f.valHooks[this.type];if(!c||!("set"in c)||c.set(this,h,"value")===b)this.value=h}})}if(g){c=f.valHooks[g.nodeName.toLowerCase()]||f.valHooks[g.type];if(c&&"get"in c&&(d=c.get(g,"value"))!==b)return d;d=g.value;return typeof d=="string"?d.replace(q,""):d==null?"":d}}}}),f.extend({valHooks:{option:{get:function(a){var b=a.attributes.value;return!b||b.specified?a.value:a.text}},select:{get:function(a){var b,c,d,e,g=a.selectedIndex,h=[],i=a.options,j=a.type==="select-one";if(g<0)return null;c=j?g:0,d=j?g+1:i.length;for(;c=0}),c.length||(a.selectedIndex=-1);return c}}},attrFn:{val:!0,css:!0,html:!0,text:!0,data:!0,width:!0,height:!0,offset:!0},attr:function(a,c,d,e){var g,h,i,j=a.nodeType;if(!!a&&j!==3&&j!==8&&j!==2){if(e&&c in f.attrFn)return f(a)[c](d);if(typeof a.getAttribute=="undefined")return f.prop(a,c,d);i=j!==1||!f.isXMLDoc(a),i&&(c=c.toLowerCase(),h=f.attrHooks[c]||(u.test(c)?x:w));if(d!==b){if(d===null){f.removeAttr(a,c);return}if(h&&"set"in h&&i&&(g=h.set(a,d,c))!==b)return g;a.setAttribute(c,""+d);return d}if(h&&"get"in h&&i&&(g=h.get(a,c))!==null)return g;g=a.getAttribute(c);return g===null?b:g}},removeAttr:function(a,b){var c,d,e,g,h=0;if(b&&a.nodeType===1){d=b.toLowerCase().split(p),g=d.length;for(;h=0}})});var z=/^(?:textarea|input|select)$/i,A=/^([^\.]*)?(?:\.(.+))?$/,B=/\bhover(\.\S+)?\b/,C=/^key/,D=/^(?:mouse|contextmenu)|click/,E=/^(?:focusinfocus|focusoutblur)$/,F=/^(\w*)(?:#([\w\-]+))?(?:\.([\w\-]+))?$/,G=function(a){var b=F.exec(a);b&&(b[1]=(b[1]||"").toLowerCase(),b[3]=b[3]&&new RegExp("(?:^|\\s)"+b[3]+"(?:\\s|$)"));return b},H=function(a,b){var c=a.attributes||{};return(!b[1]||a.nodeName.toLowerCase()===b[1])&&(!b[2]||(c.id||{}).value===b[2])&&(!b[3]||b[3].test((c["class"]||{}).value))},I=function(a){return f.event.special.hover?a:a.replace(B,"mouseenter$1 mouseleave$1")}; 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||a.nodeType===8||!c||!d||!(h=f._data(a)))){d.handler&&(p=d,d=p.handler),d.guid||(d.guid=f.guid++),j=h.events,j||(h.events=j={}),i=h.handle,i||(h.handle=i=function(a){return typeof f!="undefined"&&(!a||f.event.triggered!==a.type)?f.event.dispatch.apply(i.elem,arguments):b},i.elem=a),c=f.trim(I(c)).split(" ");for(k=0;k=0&&(h=h.slice(0,-1),k=!0),h.indexOf(".")>=0&&(i=h.split("."),h=i.shift(),i.sort());if((!e||f.event.customEvent[h])&&!f.event.global[h])return;c=typeof c=="object"?c[f.expando]?c:new f.Event(h,c):new f.Event(h),c.type=h,c.isTrigger=!0,c.exclusive=k,c.namespace=i.join("."),c.namespace_re=c.namespace?new RegExp("(^|\\.)"+i.join("\\.(?:.*\\.)?")+"(\\.|$)"):null,o=h.indexOf(":")<0?"on"+h:"";if(!e){j=f.cache;for(l in j)j[l].events&&j[l].events[h]&&f.event.trigger(c,d,j[l].handle.elem,!0);return}c.result=b,c.target||(c.target=e),d=d!=null?f.makeArray(d):[],d.unshift(c),p=f.event.special[h]||{};if(p.trigger&&p.trigger.apply(e,d)===!1)return;r=[[e,p.bindType||h]];if(!g&&!p.noBubble&&!f.isWindow(e)){s=p.delegateType||h,m=E.test(s+h)?e:e.parentNode,n=null;for(;m;m=m.parentNode)r.push([m,s]),n=m;n&&n===e.ownerDocument&&r.push([n.defaultView||n.parentWindow||a,s])}for(l=0;le&&i.push({elem:this,matches:d.slice(e)});for(j=0;j0?this.on(b,null,a,c):this.trigger(b)},f.attrFn&&(f.attrFn[b]=!0),C.test(b)&&(f.event.fixHooks[b]=f.event.keyHooks),D.test(b)&&(f.event.fixHooks[b]=f.event.mouseHooks)}),function(){function x(a,b,c,e,f,g){for(var h=0,i=e.length;h0){k=j;break}}j=j[a]}e[h]=k}}}function w(a,b,c,e,f,g){for(var h=0,i=e.length;h+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g,d="sizcache"+(Math.random()+"").replace(".",""),e=0,g=Object.prototype.toString,h=!1,i=!0,j=/\\/g,k=/\r\n/g,l=/\W/;[0,0].sort(function(){i=!1;return 0});var m=function(b,d,e,f){e=e||[],d=d||c;var h=d;if(d.nodeType!==1&&d.nodeType!==9)return[];if(!b||typeof b!="string")return e;var i,j,k,l,n,q,r,t,u=!0,v=m.isXML(d),w=[],x=b;do{a.exec(""),i=a.exec(x);if(i){x=i[3],w.push(i[1]);if(i[2]){l=i[3];break}}}while(i);if(w.length>1&&p.exec(b))if(w.length===2&&o.relative[w[0]])j=y(w[0]+w[1],d,f);else{j=o.relative[w[0]]?[d]:m(w.shift(),d);while(w.length)b=w.shift(),o.relative[b]&&(b+=w.shift()),j=y(b,j,f)}else{!f&&w.length>1&&d.nodeType===9&&!v&&o.match.ID.test(w[0])&&!o.match.ID.test(w[w.length-1])&&(n=m.find(w.shift(),d,v),d=n.expr?m.filter(n.expr,n.set)[0]:n.set[0]);if(d){n=f?{expr:w.pop(),set:s(f)}:m.find(w.pop(),w.length===1&&(w[0]==="~"||w[0]==="+")&&d.parentNode?d.parentNode:d,v),j=n.expr?m.filter(n.expr,n.set):n.set,w.length>0?k=s(j):u=!1;while(w.length)q=w.pop(),r=q,o.relative[q]?r=w.pop():q="",r==null&&(r=d),o.relative[q](k,r,v)}else k=w=[]}k||(k=j),k||m.error(q||b);if(g.call(k)==="[object Array]")if(!u)e.push.apply(e,k);else if(d&&d.nodeType===1)for(t=0;k[t]!=null;t++)k[t]&&(k[t]===!0||k[t].nodeType===1&&m.contains(d,k[t]))&&e.push(j[t]);else for(t=0;k[t]!=null;t++)k[t]&&k[t].nodeType===1&&e.push(j[t]);else s(k,e);l&&(m(l,h,e,f),m.uniqueSort(e));return e};m.uniqueSort=function(a){if(u){h=i,a.sort(u);if(h)for(var b=1;b0},m.find=function(a,b,c){var d,e,f,g,h,i;if(!a)return[];for(e=0,f=o.order.length;e":function(a,b){var c,d=typeof b=="string",e=0,f=a.length;if(d&&!l.test(b)){b=b.toLowerCase();for(;e=0)?c||d.push(h):c&&(b[g]=!1));return!1},ID:function(a){return a[1].replace(j,"")},TAG:function(a,b){return a[1].replace(j,"").toLowerCase()},CHILD:function(a){if(a[1]==="nth"){a[2]||m.error(a[0]),a[2]=a[2].replace(/^\+|\s*/g,"");var b=/(-?)(\d*)(?:n([+\-]?\d*))?/.exec(a[2]==="even"&&"2n"||a[2]==="odd"&&"2n+1"||!/\D/.test(a[2])&&"0n+"+a[2]||a[2]);a[2]=b[1]+(b[2]||1)-0,a[3]=b[3]-0}else a[2]&&m.error(a[0]);a[0]=e++;return a},ATTR:function(a,b,c,d,e,f){var g=a[1]=a[1].replace(j,"");!f&&o.attrMap[g]&&(a[1]=o.attrMap[g]),a[4]=(a[4]||a[5]||"").replace(j,""),a[2]==="~="&&(a[4]=" "+a[4]+" ");return a},PSEUDO:function(b,c,d,e,f){if(b[1]==="not")if((a.exec(b[3])||"").length>1||/^\w/.test(b[3]))b[3]=m(b[3],null,null,c);else{var g=m.filter(b[3],c,d,!0^f);d||e.push.apply(e,g);return!1}else if(o.match.POS.test(b[0])||o.match.CHILD.test(b[0]))return!0;return b},POS:function(a){a.unshift(!0);return a}},filters:{enabled:function(a){return a.disabled===!1&&a.type!=="hidden"},disabled:function(a){return a.disabled===!0},checked:function(a){return a.checked===!0},selected:function(a){a.parentNode&&a.parentNode.selectedIndex;return a.selected===!0},parent:function(a){return!!a.firstChild},empty:function(a){return!a.firstChild},has:function(a,b,c){return!!m(c[3],a).length},header:function(a){return/h\d/i.test(a.nodeName)},text:function(a){var b=a.getAttribute("type"),c=a.type;return a.nodeName.toLowerCase()==="input"&&"text"===c&&(b===c||b===null)},radio:function(a){return a.nodeName.toLowerCase()==="input"&&"radio"===a.type},checkbox:function(a){return a.nodeName.toLowerCase()==="input"&&"checkbox"===a.type},file:function(a){return a.nodeName.toLowerCase()==="input"&&"file"===a.type},password:function(a){return a.nodeName.toLowerCase()==="input"&&"password"===a.type},submit:function(a){var b=a.nodeName.toLowerCase();return(b==="input"||b==="button")&&"submit"===a.type},image:function(a){return a.nodeName.toLowerCase()==="input"&&"image"===a.type},reset:function(a){var b=a.nodeName.toLowerCase();return(b==="input"||b==="button")&&"reset"===a.type},button:function(a){var b=a.nodeName.toLowerCase();return b==="input"&&"button"===a.type||b==="button"},input:function(a){return/input|select|textarea|button/i.test(a.nodeName)},focus:function(a){return a===a.ownerDocument.activeElement}},setFilters:{first:function(a,b){return b===0},last:function(a,b,c,d){return b===d.length-1},even:function(a,b){return b%2===0},odd:function(a,b){return b%2===1},lt:function(a,b,c){return bc[3]-0},nth:function(a,b,c){return c[3]-0===b},eq:function(a,b,c){return c[3]-0===b}},filter:{PSEUDO:function(a,b,c,d){var e=b[1],f=o.filters[e];if(f)return f(a,c,b,d);if(e==="contains")return(a.textContent||a.innerText||n([a])||"").indexOf(b[3])>=0;if(e==="not"){var g=b[3];for(var h=0,i=g.length;h=0}},ID:function(a,b){return a.nodeType===1&&a.getAttribute("id")===b},TAG:function(a,b){return b==="*"&&a.nodeType===1||!!a.nodeName&&a.nodeName.toLowerCase()===b},CLASS:function(a,b){return(" "+(a.className||a.getAttribute("class"))+" ").indexOf(b)>-1},ATTR:function(a,b){var c=b[1],d=m.attr?m.attr(a,c):o.attrHandle[c]?o.attrHandle[c](a):a[c]!=null?a[c]:a.getAttribute(c),e=d+"",f=b[2],g=b[4];return d==null?f==="!=":!f&&m.attr?d!=null:f==="="?e===g:f==="*="?e.indexOf(g)>=0:f==="~="?(" "+e+" ").indexOf(g)>=0:g?f==="!="?e!==g:f==="^="?e.indexOf(g)===0:f==="$="?e.substr(e.length-g.length)===g:f==="|="?e===g||e.substr(0,g.length+1)===g+"-":!1:e&&d!==!1},POS:function(a,b,c,d){var e=b[2],f=o.setFilters[e];if(f)return f(a,c,b,d)}}},p=o.match.POS,q=function(a,b){return"\\"+(b-0+1)};for(var r in o.match)o.match[r]=new RegExp(o.match[r].source+/(?![^\[]*\])(?![^\(]*\))/.source),o.leftMatch[r]=new RegExp(/(^(?:.|\r|\n)*?)/.source+o.match[r].source.replace(/\\(\d+)/g,q));var s=function(a,b){a=Array.prototype.slice.call(a,0);if(b){b.push.apply(b,a);return b}return a};try{Array.prototype.slice.call(c.documentElement.childNodes,0)[0].nodeType}catch(t){s=function(a,b){var c=0,d=b||[];if(g.call(a)==="[object Array]")Array.prototype.push.apply(d,a);else if(typeof a.length=="number")for(var e=a.length;c",e.insertBefore(a,e.firstChild),c.getElementById(d)&&(o.find.ID=function(a,c,d){if(typeof c.getElementById!="undefined"&&!d){var e=c.getElementById(a[1]);return e?e.id===a[1]||typeof e.getAttributeNode!="undefined"&&e.getAttributeNode("id").nodeValue===a[1]?[e]:b:[]}},o.filter.ID=function(a,b){var c=typeof a.getAttributeNode!="undefined"&&a.getAttributeNode("id");return a.nodeType===1&&c&&c.nodeValue===b}),e.removeChild(a),e=a=null}(),function(){var a=c.createElement("div");a.appendChild(c.createComment("")),a.getElementsByTagName("*").length>0&&(o.find.TAG=function(a,b){var c=b.getElementsByTagName(a[1]);if(a[1]==="*"){var d=[];for(var e=0;c[e];e++)c[e].nodeType===1&&d.push(c[e]);c=d}return c}),a.innerHTML="",a.firstChild&&typeof a.firstChild.getAttribute!="undefined"&&a.firstChild.getAttribute("href")!=="#"&&(o.attrHandle.href=function(a){return a.getAttribute("href",2)}),a=null}(),c.querySelectorAll&&function(){var a=m,b=c.createElement("div"),d="__sizzle__";b.innerHTML="

";if(!b.querySelectorAll||b.querySelectorAll(".TEST").length!==0){m=function(b,e,f,g){e=e||c;if(!g&&!m.isXML(e)){var h=/^(\w+$)|^\.([\w\-]+$)|^#([\w\-]+$)/.exec(b);if(h&&(e.nodeType===1||e.nodeType===9)){if(h[1])return s(e.getElementsByTagName(b),f);if(h[2]&&o.find.CLASS&&e.getElementsByClassName)return s(e.getElementsByClassName(h[2]),f)}if(e.nodeType===9){if(b==="body"&&e.body)return s([e.body],f);if(h&&h[3]){var i=e.getElementById(h[3]);if(!i||!i.parentNode)return s([],f);if(i.id===h[3])return s([i],f)}try{return s(e.querySelectorAll(b),f)}catch(j){}}else if(e.nodeType===1&&e.nodeName.toLowerCase()!=="object"){var k=e,l=e.getAttribute("id"),n=l||d,p=e.parentNode,q=/^\s*[+~]/.test(b);l?n=n.replace(/'/g,"\\$&"):e.setAttribute("id",n),q&&p&&(e=e.parentNode);try{if(!q||p)return s(e.querySelectorAll("[id='"+n+"'] "+b),f)}catch(r){}finally{l||k.removeAttribute("id")}}}return a(b,e,f,g)};for(var e in a)m[e]=a[e];b=null}}(),function(){var a=c.documentElement,b=a.matchesSelector||a.mozMatchesSelector||a.webkitMatchesSelector||a.msMatchesSelector;if(b){var d=!b.call(c.createElement("div"),"div"),e=!1;try{b.call(c.documentElement,"[test!='']:sizzle")}catch(f){e=!0}m.matchesSelector=function(a,c){c=c.replace(/\=\s*([^'"\]]*)\s*\]/g,"='$1']");if(!m.isXML(a))try{if(e||!o.match.PSEUDO.test(c)&&!/!=/.test(c)){var f=b.call(a,c);if(f||!d||a.document&&a.document.nodeType!==11)return f}}catch(g){}return m(c,null,null,[a]).length>0}}}(),function(){var a=c.createElement("div");a.innerHTML="
";if(!!a.getElementsByClassName&&a.getElementsByClassName("e").length!==0){a.lastChild.className="e";if(a.getElementsByClassName("e").length===1)return;o.order.splice(1,0,"CLASS"),o.find.CLASS=function(a,b,c){if(typeof b.getElementsByClassName!="undefined"&&!c)return b.getElementsByClassName(a[1])},a=null}}(),c.documentElement.contains?m.contains=function(a,b){return a!==b&&(a.contains?a.contains(b):!0)}:c.documentElement.compareDocumentPosition?m.contains=function(a,b){return!!(a.compareDocumentPosition(b)&16)}:m.contains=function(){return!1},m.isXML=function(a){var b=(a?a.ownerDocument||a:0).documentElement;return b?b.nodeName!=="HTML":!1};var y=function(a,b,c){var d,e=[],f="",g=b.nodeType?[b]:b;while(d=o.match.PSEUDO.exec(a))f+=d[0],a=a.replace(o.match.PSEUDO,"");a=o.relative[a]?a+"*":a;for(var h=0,i=g.length;h0)for(h=g;h=0:f.filter(a,this).length>0:this.filter(a).length>0)},closest:function(a,b){var c=[],d,e,g=this[0];if(f.isArray(a)){var h=1;while(g&&g.ownerDocument&&g!==b){for(d=0;d-1:f.find.matchesSelector(g,a)){c.push(g);break}g=g.parentNode;if(!g||!g.ownerDocument||g===b||g.nodeType===11)break}}c=c.length>1?f.unique(c):c;return this.pushStack(c,"closest",a)},index:function(a){if(!a)return this[0]&&this[0].parentNode?this.prevAll().length:-1;if(typeof a=="string")return f.inArray(this[0],f(a));return f.inArray(a.jquery?a[0]:a,this)},add:function(a,b){var c=typeof a=="string"?f(a,b):f.makeArray(a&&a.nodeType?[a]:a),d=f.merge(this.get(),c);return this.pushStack(S(c[0])||S(d[0])?d:f.unique(d))},andSelf:function(){return this.add(this.prevObject)}}),f.each({parent:function(a){var b=a.parentNode;return b&&b.nodeType!==11?b:null},parents:function(a){return f.dir(a,"parentNode")},parentsUntil:function(a,b,c){return f.dir(a,"parentNode",c)},next:function(a){return f.nth(a,2,"nextSibling")},prev:function(a){return f.nth(a,2,"previousSibling")},nextAll:function(a){return f.dir(a,"nextSibling")},prevAll:function(a){return f.dir(a,"previousSibling")},nextUntil:function(a,b,c){return f.dir(a,"nextSibling",c)},prevUntil:function(a,b,c){return f.dir(a,"previousSibling",c)},siblings:function(a){return f.sibling(a.parentNode.firstChild,a)},children:function(a){return f.sibling(a.firstChild)},contents:function(a){return f.nodeName(a,"iframe")?a.contentDocument||a.contentWindow.document:f.makeArray(a.childNodes)}},function(a,b){f.fn[a]=function(c,d){var e=f.map(this,b,c);L.test(a)||(d=c),d&&typeof d=="string"&&(e=f.filter(d,e)),e=this.length>1&&!R[a]?f.unique(e):e,(this.length>1||N.test(d))&&M.test(a)&&(e=e.reverse());return this.pushStack(e,a,P.call(arguments).join(","))}}),f.extend({filter:function(a,b,c){c&&(a=":not("+a+")");return b.length===1?f.find.matchesSelector(b[0],a)?[b[0]]:[]:f.find.matches(a,b)},dir:function(a,c,d){var e=[],g=a[c];while(g&&g.nodeType!==9&&(d===b||g.nodeType!==1||!f(g).is(d)))g.nodeType===1&&e.push(g),g=g[c];return e},nth:function(a,b,c,d){b=b||1;var e=0;for(;a;a=a[c])if(a.nodeType===1&&++e===b)break;return a},sibling:function(a,b){var c=[];for(;a;a=a.nextSibling)a.nodeType===1&&a!==b&&c.push(a);return c}});var V="abbr|article|aside|audio|canvas|datalist|details|figcaption|figure|footer|header|hgroup|mark|meter|nav|output|progress|section|summary|time|video",W=/ jQuery\d+="(?:\d+|null)"/g,X=/^\s+/,Y=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/ig,Z=/<([\w:]+)/,$=/",""],legend:[1,"
","
"],thead:[1,"","
"],tr:[2,"","
"],td:[3,"","
"],col:[2,"","
"],area:[1,"",""],_default:[0,"",""]},bh=U(c);bg.optgroup=bg.option,bg.tbody=bg.tfoot=bg.colgroup=bg.caption=bg.thead,bg.th=bg.td,f.support.htmlSerialize||(bg._default=[1,"div
","
"]),f.fn.extend({text:function(a){if(f.isFunction(a))return this.each(function(b){var c=f(this);c.text(a.call(this,b,c.text()))});if(typeof a!="object"&&a!==b)return this.empty().append((this[0]&&this[0].ownerDocument||c).createTextNode(a));return f.text(this)},wrapAll:function(a){if(f.isFunction(a))return this.each(function(b){f(this).wrapAll(a.call(this,b))});if(this[0]){var b=f(a,this[0].ownerDocument).eq(0).clone(!0);this[0].parentNode&&b.insertBefore(this[0]),b.map(function(){var a=this;while(a.firstChild&&a.firstChild.nodeType===1)a=a.firstChild;return a}).append(this)}return this},wrapInner:function(a){if(f.isFunction(a))return this.each(function(b){f(this).wrapInner(a.call(this,b))});return this.each(function(){var b=f(this),c=b.contents();c.length?c.wrapAll(a):b.append(a)})},wrap:function(a){var b=f.isFunction(a);return this.each(function(c){f(this).wrapAll(b?a.call(this,c):a)})},unwrap:function(){return this.parent().each(function(){f.nodeName(this,"body")||f(this).replaceWith(this.childNodes)}).end()},append:function(){return this.domManip(arguments,!0,function(a){this.nodeType===1&&this.appendChild(a)})},prepend:function(){return this.domManip(arguments,!0,function(a){this.nodeType===1&&this.insertBefore(a,this.firstChild)})},before:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,!1,function(a){this.parentNode.insertBefore(a,this)});if(arguments.length){var a=f.clean(arguments);a.push.apply(a,this.toArray());return this.pushStack(a,"before",arguments)}},after:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,!1,function(a){this.parentNode.insertBefore(a,this.nextSibling)});if(arguments.length){var a=this.pushStack(this,"after",arguments);a.push.apply(a,f.clean(arguments));return a}},remove:function(a,b){for(var c=0,d;(d=this[c])!=null;c++)if(!a||f.filter(a,[d]).length)!b&&d.nodeType===1&&(f.cleanData(d.getElementsByTagName("*")),f.cleanData([d])),d.parentNode&&d.parentNode.removeChild(d);return this},empty:function() {for(var a=0,b;(b=this[a])!=null;a++){b.nodeType===1&&f.cleanData(b.getElementsByTagName("*"));while(b.firstChild)b.removeChild(b.firstChild)}return this},clone:function(a,b){a=a==null?!1:a,b=b==null?a:b;return this.map(function(){return f.clone(this,a,b)})},html:function(a){if(a===b)return this[0]&&this[0].nodeType===1?this[0].innerHTML.replace(W,""):null;if(typeof a=="string"&&!ba.test(a)&&(f.support.leadingWhitespace||!X.test(a))&&!bg[(Z.exec(a)||["",""])[1].toLowerCase()]){a=a.replace(Y,"<$1>");try{for(var c=0,d=this.length;c1&&l0?this.clone(!0):this).get();f(e[h])[b](j),d=d.concat(j)}return this.pushStack(d,a,e.selector)}}),f.extend({clone:function(a,b,c){var d,e,g,h=f.support.html5Clone||!bc.test("<"+a.nodeName)?a.cloneNode(!0):bo(a);if((!f.support.noCloneEvent||!f.support.noCloneChecked)&&(a.nodeType===1||a.nodeType===11)&&!f.isXMLDoc(a)){bk(a,h),d=bl(a),e=bl(h);for(g=0;d[g];++g)e[g]&&bk(d[g],e[g])}if(b){bj(a,h);if(c){d=bl(a),e=bl(h);for(g=0;d[g];++g)bj(d[g],e[g])}}d=e=null;return h},clean:function(a,b,d,e){var g;b=b||c,typeof b.createElement=="undefined"&&(b=b.ownerDocument||b[0]&&b[0].ownerDocument||c);var h=[],i;for(var j=0,k;(k=a[j])!=null;j++){typeof k=="number"&&(k+="");if(!k)continue;if(typeof k=="string")if(!_.test(k))k=b.createTextNode(k);else{k=k.replace(Y,"<$1>");var l=(Z.exec(k)||["",""])[1].toLowerCase(),m=bg[l]||bg._default,n=m[0],o=b.createElement("div");b===c?bh.appendChild(o):U(b).appendChild(o),o.innerHTML=m[1]+k+m[2];while(n--)o=o.lastChild;if(!f.support.tbody){var p=$.test(k),q=l==="table"&&!p?o.firstChild&&o.firstChild.childNodes:m[1]===""&&!p?o.childNodes:[];for(i=q.length-1;i>=0;--i)f.nodeName(q[i],"tbody")&&!q[i].childNodes.length&&q[i].parentNode.removeChild(q[i])}!f.support.leadingWhitespace&&X.test(k)&&o.insertBefore(b.createTextNode(X.exec(k)[0]),o.firstChild),k=o.childNodes}var r;if(!f.support.appendChecked)if(k[0]&&typeof (r=k.length)=="number")for(i=0;i=0)return b+"px"}}}),f.support.opacity||(f.cssHooks.opacity={get:function(a,b){return br.test((b&&a.currentStyle?a.currentStyle.filter:a.style.filter)||"")?parseFloat(RegExp.$1)/100+"":b?"1":""},set:function(a,b){var c=a.style,d=a.currentStyle,e=f.isNumeric(b)?"alpha(opacity="+b*100+")":"",g=d&&d.filter||c.filter||"";c.zoom=1;if(b>=1&&f.trim(g.replace(bq,""))===""){c.removeAttribute("filter");if(d&&!d.filter)return}c.filter=bq.test(g)?g.replace(bq,e):g+" "+e}}),f(function(){f.support.reliableMarginRight||(f.cssHooks.marginRight={get:function(a,b){var c;f.swap(a,{display:"inline-block"},function(){b?c=bz(a,"margin-right","marginRight"):c=a.style.marginRight});return c}})}),c.defaultView&&c.defaultView.getComputedStyle&&(bA=function(a,b){var c,d,e;b=b.replace(bs,"-$1").toLowerCase(),(d=a.ownerDocument.defaultView)&&(e=d.getComputedStyle(a,null))&&(c=e.getPropertyValue(b),c===""&&!f.contains(a.ownerDocument.documentElement,a)&&(c=f.style(a,b)));return c}),c.documentElement.currentStyle&&(bB=function(a,b){var c,d,e,f=a.currentStyle&&a.currentStyle[b],g=a.style;f===null&&g&&(e=g[b])&&(f=e),!bt.test(f)&&bu.test(f)&&(c=g.left,d=a.runtimeStyle&&a.runtimeStyle.left,d&&(a.runtimeStyle.left=a.currentStyle.left),g.left=b==="fontSize"?"1em":f||0,f=g.pixelLeft+"px",g.left=c,d&&(a.runtimeStyle.left=d));return f===""?"auto":f}),bz=bA||bB,f.expr&&f.expr.filters&&(f.expr.filters.hidden=function(a){var b=a.offsetWidth,c=a.offsetHeight;return b===0&&c===0||!f.support.reliableHiddenOffsets&&(a.style&&a.style.display||f.css(a,"display"))==="none"},f.expr.filters.visible=function(a){return!f.expr.filters.hidden(a)});var bD=/%20/g,bE=/\[\]$/,bF=/\r?\n/g,bG=/#.*$/,bH=/^(.*?):[ \t]*([^\r\n]*)\r?$/mg,bI=/^(?:color|date|datetime|datetime-local|email|hidden|month|number|password|range|search|tel|text|time|url|week)$/i,bJ=/^(?:about|app|app\-storage|.+\-extension|file|res|widget):$/,bK=/^(?:GET|HEAD)$/,bL=/^\/\//,bM=/\?/,bN=/)<[^<]*)*<\/script>/gi,bO=/^(?:select|textarea)/i,bP=/\s+/,bQ=/([?&])_=[^&]*/,bR=/^([\w\+\.\-]+:)(?:\/\/([^\/?#:]*)(?::(\d+))?)?/,bS=f.fn.load,bT={},bU={},bV,bW,bX=["*/"]+["*"];try{bV=e.href}catch(bY){bV=c.createElement("a"),bV.href="",bV=bV.href}bW=bR.exec(bV.toLowerCase())||[],f.fn.extend({load:function(a,c,d){if(typeof a!="string"&&bS)return bS.apply(this,arguments);if(!this.length)return this;var e=a.indexOf(" ");if(e>=0){var g=a.slice(e,a.length);a=a.slice(0,e)}var h="GET";c&&(f.isFunction(c)?(d=c,c=b):typeof c=="object"&&(c=f.param(c,f.ajaxSettings.traditional),h="POST"));var i=this;f.ajax({url:a,type:h,dataType:"html",data:c,complete:function(a,b,c){c=a.responseText,a.isResolved()&&(a.done(function(a){c=a}),i.html(g?f("
").append(c.replace(bN,"")).find(g):c)),d&&i.each(d,[c,b,a])}});return this},serialize:function(){return f.param(this.serializeArray())},serializeArray:function(){return this.map(function(){return this.elements?f.makeArray(this.elements):this}).filter(function(){return this.name&&!this.disabled&&(this.checked||bO.test(this.nodeName)||bI.test(this.type))}).map(function(a,b){var c=f(this).val();return c==null?null:f.isArray(c)?f.map(c,function(a,c){return{name:b.name,value:a.replace(bF,"\r\n")}}):{name:b.name,value:c.replace(bF,"\r\n")}}).get()}}),f.each("ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend".split(" "),function(a,b){f.fn[b]=function(a){return this.on(b,a)}}),f.each(["get","post"],function(a,c){f[c]=function(a,d,e,g){f.isFunction(d)&&(g=g||e,e=d,d=b);return f.ajax({type:c,url:a,data:d,success:e,dataType:g})}}),f.extend({getScript:function(a,c){return f.get(a,b,c,"script")},getJSON:function(a,b,c){return f.get(a,b,c,"json")},ajaxSetup:function(a,b){b?b_(a,f.ajaxSettings):(b=a,a=f.ajaxSettings),b_(a,b);return a},ajaxSettings:{url:bV,isLocal:bJ.test(bW[1]),global:!0,type:"GET",contentType:"application/x-www-form-urlencoded",processData:!0,async:!0,accepts:{xml:"application/xml, text/xml",html:"text/html",text:"text/plain",json:"application/json, text/javascript","*":bX},contents:{xml:/xml/,html:/html/,json:/json/},responseFields:{xml:"responseXML",text:"responseText"},converters:{"* text":a.String,"text html":!0,"text json":f.parseJSON,"text xml":f.parseXML},flatOptions:{context:!0,url:!0}},ajaxPrefilter:bZ(bT),ajaxTransport:bZ(bU),ajax:function(a,c){function w(a,c,l,m){if(s!==2){s=2,q&&clearTimeout(q),p=b,n=m||"",v.readyState=a>0?4:0;var o,r,u,w=c,x=l?cb(d,v,l):b,y,z;if(a>=200&&a<300||a===304){if(d.ifModified){if(y=v.getResponseHeader("Last-Modified"))f.lastModified[k]=y;if(z=v.getResponseHeader("Etag"))f.etag[k]=z}if(a===304)w="notmodified",o=!0;else try{r=cc(d,x),w="success",o=!0}catch(A){w="parsererror",u=A}}else{u=w;if(!w||a)w="error",a<0&&(a=0)}v.status=a,v.statusText=""+(c||w),o?h.resolveWith(e,[r,w,v]):h.rejectWith(e,[v,w,u]),v.statusCode(j),j=b,t&&g.trigger("ajax"+(o?"Success":"Error"),[v,d,o?r:u]),i.fireWith(e,[v,w]),t&&(g.trigger("ajaxComplete",[v,d]),--f.active||f.event.trigger("ajaxStop"))}}typeof a=="object"&&(c=a,a=b),c=c||{};var d=f.ajaxSetup({},c),e=d.context||d,g=e!==d&&(e.nodeType||e instanceof f)?f(e):f.event,h=f.Deferred(),i=f.Callbacks("once memory"),j=d.statusCode||{},k,l={},m={},n,o,p,q,r,s=0,t,u,v={readyState:0,setRequestHeader:function(a,b){if(!s){var c=a.toLowerCase();a=m[c]=m[c]||a,l[a]=b}return this},getAllResponseHeaders:function(){return s===2?n:null},getResponseHeader:function(a){var c;if(s===2){if(!o){o={};while(c=bH.exec(n))o[c[1].toLowerCase()]=c[2]}c=o[a.toLowerCase()]}return c===b?null:c},overrideMimeType:function(a){s||(d.mimeType=a);return this},abort:function(a){a=a||"abort",p&&p.abort(a),w(0,a);return this}};h.promise(v),v.success=v.done,v.error=v.fail,v.complete=i.add,v.statusCode=function(a){if(a){var b;if(s<2)for(b in a)j[b]=[j[b],a[b]];else b=a[v.status],v.then(b,b)}return this},d.url=((a||d.url)+"").replace(bG,"").replace(bL,bW[1]+"//"),d.dataTypes=f.trim(d.dataType||"*").toLowerCase().split(bP),d.crossDomain==null&&(r=bR.exec(d.url.toLowerCase()),d.crossDomain=!(!r||r[1]==bW[1]&&r[2]==bW[2]&&(r[3]||(r[1]==="http:"?80:443))==(bW[3]||(bW[1]==="http:"?80:443)))),d.data&&d.processData&&typeof d.data!="string"&&(d.data=f.param(d.data,d.traditional)),b$(bT,d,c,v);if(s===2)return!1;t=d.global,d.type=d.type.toUpperCase(),d.hasContent=!bK.test(d.type),t&&f.active++===0&&f.event.trigger("ajaxStart");if(!d.hasContent){d.data&&(d.url+=(bM.test(d.url)?"&":"?")+d.data,delete d.data),k=d.url;if(d.cache===!1){var x=f.now(),y=d.url.replace(bQ,"$1_="+x);d.url=y+(y===d.url?(bM.test(d.url)?"&":"?")+"_="+x:"")}}(d.data&&d.hasContent&&d.contentType!==!1||c.contentType)&&v.setRequestHeader("Content-Type",d.contentType),d.ifModified&&(k=k||d.url,f.lastModified[k]&&v.setRequestHeader("If-Modified-Since",f.lastModified[k]),f.etag[k]&&v.setRequestHeader("If-None-Match",f.etag[k])),v.setRequestHeader("Accept",d.dataTypes[0]&&d.accepts[d.dataTypes[0]]?d.accepts[d.dataTypes[0]]+(d.dataTypes[0]!=="*"?", "+bX+"; q=0.01":""):d.accepts["*"]);for(u in d.headers)v.setRequestHeader(u,d.headers[u]);if(d.beforeSend&&(d.beforeSend.call(e,v,d)===!1||s===2)){v.abort();return!1}for(u in{success:1,error:1,complete:1})v[u](d[u]);p=b$(bU,d,c,v);if(!p)w(-1,"No Transport");else{v.readyState=1,t&&g.trigger("ajaxSend",[v,d]),d.async&&d.timeout>0&&(q=setTimeout(function(){v.abort("timeout")},d.timeout));try{s=1,p.send(l,w)}catch(z){if(s<2)w(-1,z);else throw z}}return v},param:function(a,c){var d=[],e=function(a,b){b=f.isFunction(b)?b():b,d[d.length]=encodeURIComponent(a)+"="+encodeURIComponent(b)};c===b&&(c=f.ajaxSettings.traditional);if(f.isArray(a)||a.jquery&&!f.isPlainObject(a))f.each(a,function(){e(this.name,this.value)});else for(var g in a)ca(g,a[g],c,e);return d.join("&").replace(bD,"+")}}),f.extend({active:0,lastModified:{},etag:{}});var cd=f.now(),ce=/(\=)\?(&|$)|\?\?/i;f.ajaxSetup({jsonp:"callback",jsonpCallback:function(){return f.expando+"_"+cd++}}),f.ajaxPrefilter("json jsonp",function(b,c,d){var e=b.contentType==="application/x-www-form-urlencoded"&&typeof b.data=="string";if(b.dataTypes[0]==="jsonp"||b.jsonp!==!1&&(ce.test(b.url)||e&&ce.test(b.data))){var g,h=b.jsonpCallback=f.isFunction(b.jsonpCallback)?b.jsonpCallback():b.jsonpCallback,i=a[h],j=b.url,k=b.data,l="$1"+h+"$2";b.jsonp!==!1&&(j=j.replace(ce,l),b.url===j&&(e&&(k=k.replace(ce,l)),b.data===k&&(j+=(/\?/.test(j)?"&":"?")+b.jsonp+"="+h))),b.url=j,b.data=k,a[h]=function(a){g=[a]},d.always(function(){a[h]=i,g&&f.isFunction(i)&&a[h](g[0])}),b.converters["script json"]=function(){g||f.error(h+" was not called");return g[0]},b.dataTypes[0]="json";return"script"}}),f.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/javascript|ecmascript/},converters:{"text script":function(a){f.globalEval(a);return a}}}),f.ajaxPrefilter("script",function(a){a.cache===b&&(a.cache=!1),a.crossDomain&&(a.type="GET",a.global=!1)}),f.ajaxTransport("script",function(a){if(a.crossDomain){var d,e=c.head||c.getElementsByTagName("head")[0]||c.documentElement;return{send:function(f,g){d=c.createElement("script"),d.async="async",a.scriptCharset&&(d.charset=a.scriptCharset),d.src=a.url,d.onload=d.onreadystatechange=function(a,c){if(c||!d.readyState||/loaded|complete/.test(d.readyState))d.onload=d.onreadystatechange=null,e&&d.parentNode&&e.removeChild(d),d=b,c||g(200,"success")},e.insertBefore(d,e.firstChild)},abort:function(){d&&d.onload(0,1)}}}});var cf=a.ActiveXObject?function(){for(var a in ch)ch[a](0,1)}:!1,cg=0,ch;f.ajaxSettings.xhr=a.ActiveXObject?function(){return!this.isLocal&&ci()||cj()}:ci,function(a){f.extend(f.support,{ajax:!!a,cors:!!a&&"withCredentials"in a})}(f.ajaxSettings.xhr()),f.support.ajax&&f.ajaxTransport(function(c){if(!c.crossDomain||f.support.cors){var d;return{send:function(e,g){var h=c.xhr(),i,j;c.username?h.open(c.type,c.url,c.async,c.username,c.password):h.open(c.type,c.url,c.async);if(c.xhrFields)for(j in c.xhrFields)h[j]=c.xhrFields[j];c.mimeType&&h.overrideMimeType&&h.overrideMimeType(c.mimeType),!c.crossDomain&&!e["X-Requested-With"]&&(e["X-Requested-With"]="XMLHttpRequest");try{for(j in e)h.setRequestHeader(j,e[j])}catch(k){}h.send(c.hasContent&&c.data||null),d=function(a,e){var j,k,l,m,n;try{if(d&&(e||h.readyState===4)){d=b,i&&(h.onreadystatechange=f.noop,cf&&delete ch[i]);if(e)h.readyState!==4&&h.abort();else{j=h.status,l=h.getAllResponseHeaders(),m={},n=h.responseXML,n&&n.documentElement&&(m.xml=n),m.text=h.responseText;try{k=h.statusText}catch(o){k=""}!j&&c.isLocal&&!c.crossDomain?j=m.text?200:404:j===1223&&(j=204)}}}catch(p){e||g(-1,p)}m&&g(j,k,m,l)},!c.async||h.readyState===4?d():(i=++cg,cf&&(ch||(ch={},f(a).unload(cf)),ch[i]=d),h.onreadystatechange=d)},abort:function(){d&&d(0,1)}}}});var ck={},cl,cm,cn=/^(?:toggle|show|hide)$/,co=/^([+\-]=)?([\d+.\-]+)([a-z%]*)$/i,cp,cq=[["height","marginTop","marginBottom","paddingTop","paddingBottom"],["width","marginLeft","marginRight","paddingLeft","paddingRight"],["opacity"]],cr;f.fn.extend({show:function(a,b,c){var d,e;if(a||a===0)return this.animate(cu("show",3),a,b,c);for(var g=0,h=this.length;g=i.duration+this.startTime){this.now=this.end,this.pos=this.state=1,this.update(),i.animatedProperties[this.prop]=!0;for(b in i.animatedProperties)i.animatedProperties[b]!==!0&&(g=!1);if(g){i.overflow!=null&&!f.support.shrinkWrapBlocks&&f.each(["","X","Y"],function(a,b){h.style["overflow"+b]=i.overflow[a]}),i.hide&&f(h).hide();if(i.hide||i.show)for(b in i.animatedProperties)f.style(h,b,i.orig[b]),f.removeData(h,"fxshow"+b,!0),f.removeData(h,"toggle"+b,!0);d=i.complete,d&&(i.complete=!1,d.call(h))}return!1}i.duration==Infinity?this.now=e:(c=e-this.startTime,this.state=c/i.duration,this.pos=f.easing[i.animatedProperties[this.prop]](this.state,c,0,1,i.duration),this.now=this.start+(this.end-this.start)*this.pos),this.update();return!0}},f.extend(f.fx,{tick:function(){var a,b=f.timers,c=0;for(;c-1,k={},l={},m,n;j?(l=e.position(),m=l.top,n=l.left):(m=parseFloat(h)||0,n=parseFloat(i)||0),f.isFunction(b)&&(b=b.call(a,c,g)),b.top!=null&&(k.top=b.top-g.top+m),b.left!=null&&(k.left=b.left-g.left+n),"using"in b?b.using.call(a,k):e.css(k)}},f.fn.extend({position:function(){if(!this[0])return null;var a=this[0],b=this.offsetParent(),c=this.offset(),d=cx.test(b[0].nodeName)?{top:0,left:0}:b.offset();c.top-=parseFloat(f.css(a,"marginTop"))||0,c.left-=parseFloat(f.css(a,"marginLeft"))||0,d.top+=parseFloat(f.css(b[0],"borderTopWidth"))||0,d.left+=parseFloat(f.css(b[0],"borderLeftWidth"))||0;return{top:c.top-d.top,left:c.left-d.left}},offsetParent:function(){return this.map(function(){var a=this.offsetParent||c.body;while(a&&!cx.test(a.nodeName)&&f.css(a,"position")==="static")a=a.offsetParent;return a})}}),f.each(["Left","Top"],function(a,c){var d="scroll"+c;f.fn[d]=function(c){var e,g;if(c===b){e=this[0];if(!e)return null;g=cy(e);return g?"pageXOffset"in g?g[a?"pageYOffset":"pageXOffset"]:f.support.boxModel&&g.document.documentElement[d]||g.document.body[d]:e[d]}return this.each(function(){g=cy(this),g?g.scrollTo(a?f(g).scrollLeft():c,a?c:f(g).scrollTop()):this[d]=c})}}),f.each(["Height","Width"],function(a,c){var d=c.toLowerCase();f.fn["inner"+c]=function(){var a=this[0];return a?a.style?parseFloat(f.css(a,d,"padding")):this[d]():null},f.fn["outer"+c]=function(a){var b=this[0];return b?b.style?parseFloat(f.css(b,d,a?"margin":"border")):this[d]():null},f.fn[d]=function(a){var e=this[0];if(!e)return a==null?null:this;if(f.isFunction(a))return this.each(function(b){var c=f(this);c[d](a.call(this,b,c[d]()))});if(f.isWindow(e)){var g=e.document.documentElement["client"+c],h=e.document.body;return e.document.compatMode==="CSS1Compat"&&g||h&&h["client"+c]||g}if(e.nodeType===9)return Math.max(e.documentElement["client"+c],e.body["scroll"+c],e.documentElement["scroll"+c],e.body["offset"+c],e.documentElement["offset"+c]);if(a===b){var i=f.css(e,d),j=parseFloat(i);return f.isNumeric(j)?j:i}return this.css(d,typeof a=="string"?a:a+"px")}}),a.jQuery=a.$=f,typeof define=="function"&&define.amd&&define.amd.jQuery&&define("jquery",[],function(){return f})})(window);(function() { - var MAX_FILTER_SIZE, appendSearchNode, buildNav, buildTOCNode, clearFilter, clearHighlight, currentNode$, currentQuery, fileMap, focusCurrentNode, highlightMatch, moveCurrentNode, nav$, searchNodes, searchableNodes, selectNode, selectNodeByDocumentPath, setCurrentNodeExpanded, setTableOfContentsActive, sidenav$, tableOfContents, toc$, toggleTableOfContents, visitCurrentNode; + var MAX_FILTER_SIZE, appendSearchNode, buildNav, buildTOCNode, clearFilter, clearHighlight, currentNode$, currentQuery, fileMap, focusCurrentNode, highlightMatch, moveCurrentNode, nav$, searchNodes, searchableNodes, selectNode, selectNodeByDocumentPath, setCurrentNodeExpanded, setTableOfContentsActive, tableOfContents, toc$, toggleTableOfContents, visitCurrentNode; tableOfContents = [ { @@ -14,7 +14,7 @@ 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 "singleLineComment": ["//"], "name": "PHP" }, - "sourcePath": "c:\\xcommerce\\repo\\PayPalSDKs\\rest-api-sdk-php\\sample\\sale\\GetSale.php", + "sourcePath": "c:\\xcommerce\\repo\\PayPalSDKs\\rest\\rest-api-sdk-php\\sample\\sale\\GetSale.php", "projectPath": "GetSale.php", "targetPath": "GetSale", "title": "GetSale" @@ -31,14 +31,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": "Authentication", - "slug": "authentication" - }, - "depth": 3 - }, { "type": "heading", "data": { "level": 3, @@ -59,7 +51,7 @@ 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 "singleLineComment": ["//"], "name": "PHP" }, - "sourcePath": "c:\\xcommerce\\repo\\PayPalSDKs\\rest-api-sdk-php\\sample\\sale\\RefundSale.php", + "sourcePath": "c:\\xcommerce\\repo\\PayPalSDKs\\rest\\rest-api-sdk-php\\sample\\sale\\RefundSale.php", "projectPath": "RefundSale.php", "targetPath": "RefundSale", "title": "RefundSale" @@ -79,8 +71,16 @@ 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": "Refund", - "slug": "refund" + "title": "Refund amount", + "slug": "refund-amount" + }, + "depth": 3 + }, { + "type": "heading", + "data": { + "level": 3, + "title": "Refund object", + "slug": "refund-object" }, "depth": 3 }, { @@ -91,14 +91,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 "slug": "sale" }, "depth": 3 - }, { - "type": "heading", - "data": { - "level": 3, - "title": "Api Context", - "slug": "api-context" - }, - "depth": 3 } ] } @@ -110,8 +102,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 toc$ = null; - sidenav$ = null; - setTableOfContentsActive = function(active) { var html$; html$ = $('html'); @@ -323,7 +313,7 @@ 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 buildNav = function(metaInfo) { var node, sourceURL, _i, _len; - nav$ = $("
\n").appendTo($('body')); + nav$ = $("").appendTo($('body')); toc$ = nav$.find('.toc'); if (metaInfo.githubURL) { if (metaInfo.documentPath === 'index') { diff --git a/sample/source/assets/style.css b/sample/source/assets/style.css index b1b603b..85842ac 100644 --- a/sample/source/assets/style.css +++ b/sample/source/assets/style.css @@ -1 +1 @@ -html,body,div,span,applet,object,iframe,h1,h2,h3,h4,h5,h6,p,blockquote,pre,a,abbr,acronym,address,big,cite,code,del,dfn,em,img,ins,kbd,q,s,samp,small,strike,strong,sub,sup,tt,var,b,u,i,center,dl,dt,dd,ol,ul,li,fieldset,form,label,legend,table,caption,tbody,tfoot,thead,tr,th,td,article,aside,canvas,details,embed,figure,figcaption,footer,header,hgroup,menu,nav,output,ruby,section,summary,time,mark,audio,video{margin:0;padding:0;border:0;font:inherit;font-size:100%;vertical-align:baseline}html{line-height:1}ol,ul{list-style:none}table{border-collapse:collapse;border-spacing:0}caption,th,td{text-align:left;font-weight:normal;vertical-align:middle}q,blockquote{quotes:none}q:before,q:after,blockquote:before,blockquote:after{content:"";content:none}a img{border:none}article,aside,details,figcaption,figure,footer,header,hgroup,menu,nav,section,summary{display:block}html,body{height:100%}#document{min-height:100%}body{max-width:29em}.segment{padding:0.5em 0 0.5em 29em;white-space:nowrap}.segment:first-child{padding-top:4em}.segment:last-child{padding-bottom:2em}.segment .comments,.segment .code{display:inline-block;vertical-align:top;padding:0 2em}.segment .comments{margin-left:-29em;width:25em;white-space:normal}.segment .code{white-space:pre}#meta{position:absolute;left:29em;padding:0.25em 1em}@media (max-width: 49em){html{font-size:1em}}@media (max-width: 48.94556em){html{font-size:0.99889em}}@media (max-width: 48.89111em){html{font-size:0.99778em}}@media (max-width: 48.83667em){html{font-size:0.99667em}}@media (max-width: 48.78222em){html{font-size:0.99556em}}@media (max-width: 48.72778em){html{font-size:0.99444em}}@media (max-width: 48.67333em){html{font-size:0.99333em}}@media (max-width: 48.61889em){html{font-size:0.99222em}}@media (max-width: 48.56444em){html{font-size:0.99111em}}@media (max-width: 48.51em){html{font-size:0.99em}}@media (max-width: 48.45556em){html{font-size:0.98889em}}@media (max-width: 48.40111em){html{font-size:0.98778em}}@media (max-width: 48.34667em){html{font-size:0.98667em}}@media (max-width: 48.29222em){html{font-size:0.98556em}}@media (max-width: 48.23778em){html{font-size:0.98444em}}@media (max-width: 48.18333em){html{font-size:0.98333em}}@media (max-width: 48.12889em){html{font-size:0.98222em}}@media (max-width: 48.07444em){html{font-size:0.98111em}}@media (max-width: 48.02em){html{font-size:0.98em}}@media (max-width: 47.96556em){html{font-size:0.97889em}}@media (max-width: 47.91111em){html{font-size:0.97778em}}@media (max-width: 47.85667em){html{font-size:0.97667em}}@media (max-width: 47.80222em){html{font-size:0.97556em}}@media (max-width: 47.74778em){html{font-size:0.97444em}}@media (max-width: 47.69333em){html{font-size:0.97333em}}@media (max-width: 47.63889em){html{font-size:0.97222em}}@media (max-width: 47.58444em){html{font-size:0.97111em}}@media (max-width: 47.53em){html{font-size:0.97em}}@media (max-width: 47.47556em){html{font-size:0.96889em}}@media (max-width: 47.42111em){html{font-size:0.96778em}}@media (max-width: 47.36667em){html{font-size:0.96667em}}@media (max-width: 47.31222em){html{font-size:0.96556em}}@media (max-width: 47.25778em){html{font-size:0.96444em}}@media (max-width: 47.20333em){html{font-size:0.96333em}}@media (max-width: 47.14889em){html{font-size:0.96222em}}@media (max-width: 47.09444em){html{font-size:0.96111em}}@media (max-width: 47.04em){html{font-size:0.96em}}@media (max-width: 46.98556em){html{font-size:0.95889em}}@media (max-width: 46.93111em){html{font-size:0.95778em}}@media (max-width: 46.87667em){html{font-size:0.95667em}}@media (max-width: 46.82222em){html{font-size:0.95556em}}@media (max-width: 46.76778em){html{font-size:0.95444em}}@media (max-width: 46.71333em){html{font-size:0.95333em}}@media (max-width: 46.65889em){html{font-size:0.95222em}}@media (max-width: 46.60444em){html{font-size:0.95111em}}@media (max-width: 46.55em){html{font-size:0.95em}}@media (max-width: 46.49556em){html{font-size:0.94889em}}@media (max-width: 46.44111em){html{font-size:0.94778em}}@media (max-width: 46.38667em){html{font-size:0.94667em}}@media (max-width: 46.33222em){html{font-size:0.94556em}}@media (max-width: 46.27778em){html{font-size:0.94444em}}@media (max-width: 46.22333em){html{font-size:0.94333em}}@media (max-width: 46.16889em){html{font-size:0.94222em}}@media (max-width: 46.11444em){html{font-size:0.94111em}}@media (max-width: 46.06em){html{font-size:0.94em}}@media (max-width: 46.00556em){html{font-size:0.93889em}}@media (max-width: 45.95111em){html{font-size:0.93778em}}@media (max-width: 45.89667em){html{font-size:0.93667em}}@media (max-width: 45.84222em){html{font-size:0.93556em}}@media (max-width: 45.78778em){html{font-size:0.93444em}}@media (max-width: 45.73333em){html{font-size:0.93333em}}@media (max-width: 45.67889em){html{font-size:0.93222em}}@media (max-width: 45.62444em){html{font-size:0.93111em}}@media (max-width: 45.57em){html{font-size:0.93em}}@media (max-width: 45.51556em){html{font-size:0.92889em}}@media (max-width: 45.46111em){html{font-size:0.92778em}}@media (max-width: 45.40667em){html{font-size:0.92667em}}@media (max-width: 45.35222em){html{font-size:0.92556em}}@media (max-width: 45.29778em){html{font-size:0.92444em}}@media (max-width: 45.24333em){html{font-size:0.92333em}}@media (max-width: 45.18889em){html{font-size:0.92222em}}@media (max-width: 45.13444em){html{font-size:0.92111em}}@media (max-width: 45.08em){html{font-size:0.92em}}@media (max-width: 45.02556em){html{font-size:0.91889em}}@media (max-width: 44.97111em){html{font-size:0.91778em}}@media (max-width: 44.91667em){html{font-size:0.91667em}}@media (max-width: 44.86222em){html{font-size:0.91556em}}@media (max-width: 44.80778em){html{font-size:0.91444em}}@media (max-width: 44.75333em){html{font-size:0.91333em}}@media (max-width: 44.69889em){html{font-size:0.91222em}}@media (max-width: 44.64444em){html{font-size:0.91111em}}@media (max-width: 44.59em){html{font-size:0.91em}}@media (max-width: 44.53556em){html{font-size:0.90889em}}@media (max-width: 44.48111em){html{font-size:0.90778em}}@media (max-width: 44.42667em){html{font-size:0.90667em}}@media (max-width: 44.37222em){html{font-size:0.90556em}}@media (max-width: 44.31778em){html{font-size:0.90444em}}@media (max-width: 44.26333em){html{font-size:0.90333em}}@media (max-width: 44.20889em){html{font-size:0.90222em}}@media (max-width: 44.15444em){html{font-size:0.90111em}}@media (max-width: 44.1em){html{font-size:0.9em}}@media (max-width: 44.04556em){html{font-size:0.89889em}}@media (max-width: 43.99111em){html{font-size:0.89778em}}@media (max-width: 43.93667em){html{font-size:0.89667em}}@media (max-width: 43.88222em){html{font-size:0.89556em}}@media (max-width: 43.82778em){html{font-size:0.89444em}}@media (max-width: 43.77333em){html{font-size:0.89333em}}@media (max-width: 43.71889em){html{font-size:0.89222em}}@media (max-width: 43.66444em){html{font-size:0.89111em}}@media (max-width: 43.61em){html{font-size:0.89em}}@media (max-width: 43.55556em){html{font-size:0.88889em}}@media (max-width: 43.50111em){html{font-size:0.88778em}}@media (max-width: 43.44667em){html{font-size:0.88667em}}@media (max-width: 43.39222em){html{font-size:0.88556em}}@media (max-width: 43.33778em){html{font-size:0.88444em}}@media (max-width: 43.28333em){html{font-size:0.88333em}}@media (max-width: 43.22889em){html{font-size:0.88222em}}@media (max-width: 43.17444em){html{font-size:0.88111em}}@media (max-width: 43.12em){html{font-size:0.88em}}@media (max-width: 43.06556em){html{font-size:0.87889em}}@media (max-width: 43.01111em){html{font-size:0.87778em}}@media (max-width: 42.95667em){html{font-size:0.87667em}}@media (max-width: 42.90222em){html{font-size:0.87556em}}@media (max-width: 42.84778em){html{font-size:0.87444em}}@media (max-width: 42.79333em){html{font-size:0.87333em}}@media (max-width: 42.73889em){html{font-size:0.87222em}}@media (max-width: 42.68444em){html{font-size:0.87111em}}@media (max-width: 42.63em){html{font-size:0.87em}}@media (max-width: 42.57556em){html{font-size:0.86889em}}@media (max-width: 42.52111em){html{font-size:0.86778em}}@media (max-width: 42.46667em){html{font-size:0.86667em}}@media (max-width: 42.41222em){html{font-size:0.86556em}}@media (max-width: 42.35778em){html{font-size:0.86444em}}@media (max-width: 42.30333em){html{font-size:0.86333em}}@media (max-width: 42.24889em){html{font-size:0.86222em}}@media (max-width: 42.19444em){html{font-size:0.86111em}}@media (max-width: 42.14em){html{font-size:0.86em}}@media (max-width: 42.08556em){html{font-size:0.85889em}}@media (max-width: 42.03111em){html{font-size:0.85778em}}@media (max-width: 41.97667em){html{font-size:0.85667em}}@media (max-width: 41.92222em){html{font-size:0.85556em}}@media (max-width: 41.86778em){html{font-size:0.85444em}}@media (max-width: 41.81333em){html{font-size:0.85333em}}@media (max-width: 41.75889em){html{font-size:0.85222em}}@media (max-width: 41.70444em){html{font-size:0.85111em}}@media (max-width: 41.65em){html{font-size:1em}body{margin:0 auto}.segment{padding:0;white-space:normal;max-width:25em;margin:0 auto}.segment .comments,.segment .code{display:block;padding:1em}.segment .comments{margin-left:0;width:auto}.segment .code{display:block;overflow-y:hidden;overflow-x:auto}.segment .code .wrapper{display:inline-block}}nav{position:fixed;top:0;right:0;width:20em}@media (max-width: 41.65em){nav{left:0;width:100%}}nav .tools{position:relative;z-index:100}nav .tools li{display:table-cell;vertical-align:middle;text-align:center;white-space:nowrap;height:2em;padding:0 0.5em}nav .tools .github{padding:0}nav .tools .github a{display:block;height:2em;width:2em;text-indent:-9001em}nav .tools .search{width:100%}nav .tools .search input{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;display:block;width:100%}nav .toc{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;position:absolute;top:2em;bottom:0;width:100%;overflow-x:hidden;overflow-y:auto}nav .toc li{position:relative}nav .toc .label{display:block;line-height:2em;padding:0 0.5em 0 0.5em}nav .toc li li .label{padding-left:1em}nav .toc li li li .label{padding-left:1.5em}nav .toc li li li li .label{padding-left:2em}nav .toc li li li li li .label{padding-left:2.5em}nav .toc li li li li li li .label{padding-left:3em}nav{-webkit-transition:height 0;-webkit-transition-delay:150ms;-moz-transition:height 0 150ms;-o-transition:height 0 150ms;transition:height 0 150ms}nav .tools .toggle{-webkit-transition:background 150ms;-moz-transition:background 150ms;-o-transition:background 150ms;transition:background 150ms}nav.active{-webkit-transition:height 0 0;-moz-transition:height 0 0;-o-transition:height 0 0;transition:height 0 0;height:100%}nav .toc{-webkit-transition:right 150ms;-moz-transition:right 150ms;-o-transition:right 150ms;transition:right 150ms;right:-100%}nav.active .toc{right:0}@media (max-width: 41.65em){nav .toc{-webkit-transition:left 150ms;-moz-transition:left 150ms;-o-transition:left 150ms;transition:left 150ms;right:auto;left:-100%}nav.active .toc{left:0}}@media (max-width: 41.65em){body{-webkit-transition:left 150ms;-moz-transition:left 150ms;-o-transition:left 150ms;transition:left 150ms;position:relative;left:0}html.popped{overflow:hidden}html.popped body{left:100%;overflow:hidden}}nav .toc .children,nav .toc .outline{display:none}nav .toc .expanded>.children,nav .toc .expanded>.outline,nav .toc .expanded>.outline .children{display:block}nav .toc .discloser{-webkit-transition-property:-moz-transform,-webkit-transform,-o-transform,-webkit-transform;-moz-transition-property:-moz-transform,-webkit-transform,-o-transform,-moz-transform;-o-transition-property:-moz-transform,-webkit-transform,-o-transform,-o-transform;transition-property:-moz-transform -webkit-transform -o-transform transform;-webkit-transition-duration:200ms;-moz-transition-duration:200ms;-o-transition-duration:200ms;transition-duration:200ms;-webkit-transform:rotate(0deg);-moz-transform:rotate(0deg);-ms-transform:rotate(0deg);-o-transform:rotate(0deg);transform:rotate(0deg);display:inline-block;height:9px;width:9px;padding:0.2em;margin:0.2em 0.2em -0.2em 0.2em;vertical-align:baseline;background:url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABIAAAASCAYAAABWzo5XAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYxIDY0LjE0MDk0OSwgMjAxMC8xMi8wNy0xMDo1NzowMSAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNS4xIE1hY2ludG9zaCIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDowOEFDRENGQzE2NEUxMUUxODdDNUQ2ODM0QzVGRkVBMSIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDowOEFDRENGRDE2NEUxMUUxODdDNUQ2ODM0QzVGRkVBMSI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjA4QUNEQ0ZBMTY0RTExRTE4N0M1RDY4MzRDNUZGRUExIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjA4QUNEQ0ZCMTY0RTExRTE4N0M1RDY4MzRDNUZGRUExIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+nQHMgwAAAM1JREFUeNpi/P//P0NJSYkuAwNDJhDXAPE7BjIAExIbZNA9IC4CYjZKDAIBfiDuBeLzQOxBiUEwoAXE26FYixKDYMAD6rpeqGvJNogBGl5F0PDLpMQgGBAC4mlQF9pTYhAMGADxASBeB8RylBgEA4FAfAOIW4CYhxKDQIAZxmChwJD1QFwGxHfINegaEGcB8UFyA/sd1AA9dEOIddFfIJ4OzdAfcSkiZNAOIC6GegcvwGXQHagBm8jNtB+hBmiTYgi6i+ZCw+EFOWkBIMAA1W4l62UzKWwAAAAASUVORK5CYII=') center center no-repeat;background-size:9px 9px}nav .toc .discloser.placeholder,nav .toc .expanded>.outline .discloser{background:none}nav .toc .expanded>.label .discloser{-webkit-transform:rotate(90deg);-moz-transform:rotate(90deg);-ms-transform:rotate(90deg);-o-transform:rotate(90deg);transform:rotate(90deg)}nav .toc .filtered>.label{display:none}nav .toc .matched-child>.label{display:block}nav .toc .matched-child>.children,nav .toc .matched-child>.outline,nav .toc .matched-child>.outline .children{display:block}nav .toc .matched>.children,nav .toc .matched>.outline,nav .toc .matched>.outline .children{display:block}nav.searching .toc .discloser{display:none}.comments .wrapper{font-family:"Helvetica Neue",Helvetica,"Droid Sans",sans-serif;font-weight:300;font-size:0.82em;line-height:1.3}.comments .wrapper h1,.comments .wrapper h2,.comments .wrapper h3,.comments .wrapper h4,.comments .wrapper h5,.comments .wrapper h6{font-family:"HelveticaNeue-UltraLight","Helvetica Neue",Helvetica,"Droid Sans",sans-serif;font-weight:100;letter-spacing:0.0625em}.comments .wrapper h1{font-size:1.6em}.comments .wrapper h2{font-size:1.4em}.comments .wrapper h3{font-size:1.2em}.comments .wrapper h4{font-size:1em}.comments .wrapper h5{font-size:1em}.comments .wrapper h6{font-size:1em}.comments .wrapper p{margin:1em 0}.comments .wrapper>*:first-child{margin-top:-60px;padding-top:60px}.comments .wrapper>*:last-child{margin-bottom:0}.comments .wrapper ol,.comments .wrapper ul{padding-left:1.75em}.comments .wrapper ol li{list-style:decimal}.comments .wrapper ul li{list-style:disc}.comments .wrapper li{margin:1em 0}.comments .wrapper li:first-child{margin-top:0}.comments .wrapper li:last-child{margin-bottom:0}.comments .wrapper code{display:inline-block;padding:0.25em 0.25em 0 0.25em}.comments .wrapper pre{display:block;overflow-x:auto;overflow-y:hidden}.comments .wrapper pre code{padding:1em}.comments .wrapper blockquote{padding:0 1em}html{background:#f3f3f3}#document{background-color:#fff;margin-right:-1em;padding-right:1em}@media (max-width: 41.65em){#document{margin-right:0;padding-right:0}}#meta>*{font-family:"Helvetica Neue",Helvetica,"Droid Sans",sans-serif;font-weight:300;font-size:0.82em;line-height:1.3;text-shadow:#cdcdcd 1px 1px 0}#meta>*,#meta>* a{color:#0d0d0d}#meta>* a{text-decoration:none}.comments .wrapper{font-family:"Helvetica Neue",Helvetica,"Droid Sans",sans-serif;font-weight:300;font-size:0.82em;line-height:1.3;text-shadow:#fff 1px 1px 0;color:#4a525a}.code .wrapper{font-family:"Droid Sans Mono",Menlo,Monaco,monospace;font-size:0.75em;line-height:1.4;color:#333}.code .wrapper .k{color:#d14}.code .wrapper .kn{color:#d14}.code .wrapper .kc{color:#d14}.code .wrapper .kd{color:#d14}.code .wrapper .kp{color:#d14}.code .wrapper .kr{color:#d14}.code .wrapper .kt{color:#d14}.code .wrapper .na{color:teal}.code .wrapper .nc{color:#458}.code .wrapper .no{color:#458}.code .wrapper .nd{color:#458}.code .wrapper .nf{color:navy}.code .wrapper .py{color:navy}.code .wrapper .nv{color:teal}.code .wrapper .vc{color:teal}.code .wrapper .vg{color:teal}.code .wrapper .vi{color:teal}.code .wrapper .s{color:#2a9e3d}.code .wrapper .sb{color:#2a9e3d}.code .wrapper .sc{color:#2a9e3d}.code .wrapper .sd{color:#2a9e3d}.code .wrapper .s2{color:#2a9e3d}.code .wrapper .se{color:#2a9e3d}.code .wrapper .sh{color:#2a9e3d}.code .wrapper .si{color:#2a9e3d}.code .wrapper .sx{color:#2a9e3d}.code .wrapper .sr{color:#333}.code .wrapper .s1{color:#2a9e3d}.code .wrapper .ss{color:#333}.code .wrapper .m{color:#333}.code .wrapper .mf{color:#333}.code .wrapper .mh{color:#333}.code .wrapper .mi{color:#333}.code .wrapper .il{color:#333}.code .wrapper .mo{color:#333}.code .wrapper .o{color:#882d17}.code .wrapper .ow{color:#882d17}.code .wrapper .p{color:#882d17}.code .wrapper .c,.code .wrapper .cm,.code .wrapper .cp,.code .wrapper .c1,.code .wrapper .cs{font-style:italic}.code .wrapper .c{color:#666}.code .wrapper .cm{color:#666}.code .wrapper .cp{color:#666}.code .wrapper .c1{color:#666}.code .wrapper .cs{color:#666}@media (max-width: 41.65em){.code{-webkit-border-radius:0.4em;-moz-border-radius:0.4em;-ms-border-radius:0.4em;-o-border-radius:0.4em;border-radius:0.4em;-webkit-box-shadow:#cdcdcd 0 0 0.5em 0.2em inset;-moz-box-shadow:#cdcdcd 0 0 0.5em 0.2em inset;box-shadow:#cdcdcd 0 0 0.5em 0.2em inset;background:#f3f3f3}.code .wrapper{-webkit-box-shadow:#f3f3f3 0 0 0.25em 0.75em;-moz-box-shadow:#f3f3f3 0 0 0.25em 0.75em;box-shadow:#f3f3f3 0 0 0.25em 0.75em;background:#f3f3f3}}@media (max-width: 25em){.code{-webkit-border-radius:0;-moz-border-radius:0;-ms-border-radius:0;-o-border-radius:0;border-radius:0}}nav{text-shadow:#f0f0f0 1px 1px 0;color:#4a525a}nav .tools,nav .toc{font-family:"Helvetica Neue",Helvetica,"Droid Sans",sans-serif;font-weight:300;font-size:0.82em;line-height:1.3}nav .tools{-webkit-box-shadow:rgba(0,0,0,0.3) 0 0 0.5em 0.1em;-moz-box-shadow:rgba(0,0,0,0.3) 0 0 0.5em 0.1em;box-shadow:rgba(0,0,0,0.3) 0 0 0.5em 0.1em;background:-webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, rgba(255,255,255,0.9)), color-stop(100%, rgba(205,205,205,0.9)));background:-webkit-linear-gradient(top, rgba(255,255,255,0.9),rgba(205,205,205,0.9));background:-moz-linear-gradient(top, rgba(255,255,255,0.9),rgba(205,205,205,0.9));background:-o-linear-gradient(top, rgba(255,255,255,0.9),rgba(205,205,205,0.9));background:linear-gradient(top, rgba(255,255,255,0.9),rgba(205,205,205,0.9));-moz-border-radius-bottomleft:0.4em;-webkit-border-bottom-left-radius:0.4em;border-bottom-left-radius:0.4em;border-bottom:1px solid #4a525a;border-left:1px solid #4a525a}@media (max-width: 49em){nav .tools{-moz-border-radius-bottomleft:0;-webkit-border-bottom-left-radius:0;border-bottom-left-radius:0}}nav .tools li{border-right:1px solid #4a525a}nav .tools li:last-child{border-right:none}nav .tools .toggle{cursor:pointer}nav .tools .github a{-webkit-transition:opacity 200ms;-moz-transition:opacity 200ms;-o-transition:opacity 200ms;transition:opacity 200ms;filter:progid:DXImageTransform.Microsoft.Alpha(Opacity=50);opacity:0.5;background:url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACcAAAAwCAYAAACScGMWAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYxIDY0LjE0MDk0OSwgMjAxMC8xMi8wNy0xMDo1NzowMSAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNS4xIE1hY2ludG9zaCIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDowOEFDRENGODE2NEUxMUUxODdDNUQ2ODM0QzVGRkVBMSIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDowOEFDRENGOTE2NEUxMUUxODdDNUQ2ODM0QzVGRkVBMSI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjA4QUNEQ0Y2MTY0RTExRTE4N0M1RDY4MzRDNUZGRUExIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjA4QUNEQ0Y3MTY0RTExRTE4N0M1RDY4MzRDNUZGRUExIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+FC/Z5AAACv9JREFUeNrMWXl0VNUdvu/NmzWZJQnZN0hCWIQEIQuErUCBI2qwEAFRBJUeDvUPDwfKVhDUY2mPp8spakVELSq11goIiCBbUVKKUGKQQFiCSBJIQjLJZPbJzOt3J/dOXiYJgcqh3nO+vPfm3Xfvd3/3t94IsiyTH2sTyY+4SfxGpVIpfzdBokdxjQHOADuAj4GmuzRvFjAbmAZkAocEQZjLX/r9/vYbuq0UgigoQKagsxyG74FlgB4gYdAA0UASkAIkACahvSn70Xd/AlrCxm4VRDEBIBScUxg5wiCs7oZcEJDwN7g+AswH3gAOApVALdAIWIEGtpgyYAfwPFtYTU/jbtmy5W/gsZAugnMKbSsJ2oXAn1J62o9AIJCDy/ZgbzbQLVoqkAtM722fa2pqYnHJwfgmXG23MgjV7SjO3bR06BnlogUSe7PW+ntplXQHUlNTHewxqjdyR+8lOehxYNCgQa3hnHoil8a18F60trY2cenSpYU+n48qfXMnvaEQYcIMQ4KmrbAk/Cb3ZGV3gt7GWbx4cSm4xHd1JR2+aPfdIPK/ICIiwlNaWroKfMSgwDq0Moj78feB/1e4cjqdmq1btz6C25921jk5iOLe4i2XdDh+aF/ejhw5ksYEZJE6BAeHSuT83nyaMTLSZzAYfO2K7BPdbo/k9ngkOM8u32i1moBep2/TarVtGrU64PZ6VC0tLVqv1ydyFxLeamtrzbgYgJFSh+Bk2jOpe1ICmf7QtKp5856sHJo7zGoym4Lk3G636HQ4JXurTd3U1KTBtqgcTpcQZTYHIiIjfNExMV6DIaINuuTX6XQBp8sp1t24odv3+d6UN9/cPPTqtWpjOEFYLOeUI3CJwJJULAMZFE5u9cqVx1/esKE8jLebgWc3akCjjIFKbwF46dw0AlLXVnXpUlzx9OJpZyvO9VEShJR9LpfrHdy2SgqDCEB83i7Elj53NozYKeAY3QHAE0ZOz0KQmukuJ+VifUPkMrKyjO9t2bzvwUdmbL5eV2/gBBVE1crAL/OAy4mlJSe5Vq5Zd0pB7O/4OB7XXwJbgC/pYLHRFhJtNhONRk1q6xtIv+RE4vJ4SUOTldTdDKWABcBi+g3wdtH9OfaHJ4zaVpg7NHvH/oPrFKGMW4wghYn/uvJhwvjx1UZLFN+6I/iQ3r/Pnh+iGQcWUVPfaCWNzTZiiowgMA5yo7GJ1N5oIP4OI4llmQzV6QVAdenp8v3J8X1IhF7aplarV0HXaE5IJEniH8md/RwhFZ1iWFoqj3dUop8yQrzFPPvss78Cuf48e7W22IjL7SHXauuUxGgbpTS2goKC5fhu9InyCnLmfFWDiByQv6OOuCu5dmEeU46Iyfj7CqzKwXQp1OLj4wfSrcJEll78q0b5EBMTQ4k++V3N9cE6rVYCuRCP5OTkFm5ECskJFMdxd5X/dLOh3shuG9n1n8pMYuLEiQ10sawmuFU7SQMAfxg3bhxXn1yLyWDx+X0mhVT5O2d4NLADb/GHr0/9J97ltFO9lDJSgruyC3gpNjb20tq1a4+OHj26OaxQGgDMYxarbN8BTxuNxm9nzZr1zZIlS6r4GiWVekhbW0BL9Q0L9s+dO/dqKKfsJvCb4fMuMKuRP/nwvSN4//PHH55CsAXckqkhbGJ4nWYSbMCXmIKkKRNJhQeIATYqvs3PGZD1EX1F55s0adI5xbupXciJ7ddCWBCVopyekuw8ffJr2lkzMLMviYky0/7UeRcDNIMYxbeIKf6IvLy8madOnZqId1KEQU8S4/rA1ZiwODX9Ng9YCcxc/sxjkyWVivo+GRGkurKy8j1G7DW6YGWECMVY2hKTEicjHH1stVpNSYkJztmPlqw/uG/vK/6ATPeC+Nv88JIqUg2X0epwEo/XW4LPltMaFNs+vays7HhSUtLS9OTEpgi9jkRbTMRmd5Ios5G0OuGTA/LkMxcubWtr89MIcRnZyLYnnniC70Ap8JfutjWE9evXF02YMKGCiz0hPu5YWlLC/PuyMzOGZGdKOQP7k76pSSR3YDZJSYyDVE0js7KyVhw88MVQjJkODAR0AzLSyJi8XIJvzMMGZU+M7xP9V5p4snHf3/jqxp+g35+Z1F4GTEFOCsktYCHmANCgKAX779q1a9W7776bd/jw4b6QpFEtSUSr0VyTJPE8vMB3Br2uSRREh0oUbPEpaQlFhQW5dXU3mtUaddzBA4crHE5HItba3+ly9/V4fWbMSQuo7SD2DsanPnQhEMnmfYM66c4Vf3txTFdSDTwakqAYrE2jgAV2u/2tvXv3/mPRokUfZWdnfwhvXhHKBBm4IYXhX8BrwC/wvmDZsmV9mFQXKgzgaeovRUXFr5QcdQcvAKupwFJSUkqqa6q3Kxw0lWIqU/rhly9fTsKWP1hdXR3dW4YL3fumqqrq1xqNhpZ9cewMhiYJNAKdpjqG+a9wy+56VsIkNXLkSOqIZXjx5s/37Z3QnS5SK4yMjDx8J/VBSUlJOb5bATwGUB3rC2j57gQ9BSuyeixwEJLiYdbUucq5uTnXNm3a1B3BXKDtTshZLBbnxYsXV1M31GW82yXH8ArXHbPZbENa/kc8zwPoQcvrwDU+Kd7ZIUUXq57cc+bMKeMlICKCC1sZWsTOnTs/wVyP3i65noqZjezEiNhsNiP83XPovBXYzHKy0EHPzJkzz6elpQXDGIj48/Pz67mWjhgxorqoqOhKKJGwWmkCUADdNXSuBTqrWG8V//d0hXq93spDEEd4Gz58eCMqdoENLtPqPXQyKUl+vK8PS8tMQaMQeDkqk477zkm+dAsjOzxjxozxXq/3rZMnT2Y0NzcbaIWFrXLjKqJKCqZJCHOy4qTIj+ghK47GBLwPhEsITddxL/R+7Npd++CDD86AyJPAMzU1NXGYW0C+5UHkGLhhw4axzL0IyiCvUomBsPM84QefCfd4oi2KlZhgQ2pq6ng83ke3xeFweHo6ykIKJCuykB90GCTdTicQpLq3AyR30oIXQXoRPzLopu9dO52S7uSUkrkXmq67uzMOOAMZRtDj6aeisrqt+UIjqTWasEHbM/eo2HiiQ07G9JtodDpibahTNdXdCPYzRBoFo8XCDr2D48h8clRutH8oROoMkaEVpQ8YzCxE6PEoMERubPHPFJZDvXOwpiB6gyF4/E5/87jcJDE9gxz7bMcDlBx1mOkZGS5UXMFxNHq9v29mf4+I+oIarj9ApCE5w+x8jhNl5emzSmbUBM8aRo3lUaBdCjJzKQrrVUhO23kVcrsP8nk9TJdUxGGzJXz2/pYXbtbWBI/JxkyavKd/Zlbr1StV9PCFDB6aW1dUmN/YLzOr5cK5iuizZ8v7PDD17S+HDLu/8tuy0wP+8NuXh/jdds/8BU9Fet3uXrc2RM7a0NBOjq1ECB0CtBMVoUu2psZxrVbrOKM5emeE2bj7iz27Ilauf/EZR2srVE3tXvP8ui+R55Hla9Z9tfDx2cVVFy6YP9r5acaRQ4deLZk9K9Nlt5fs3r0nc3h+4RRbc+PJAETL5RH0jWHOMKQPk+fM7+7cq+NjSSQum4M01V8nZ//9FfXyxRevXJ02ZtTI6TGxsVf6ZWWv2LP946ms8iofkDOsKeBx/06j1WtPHC99E7XEizSfA7LZ6LSSOzBl7lPuTkqOtn/bO53J3WHLAx4G6igRlvPPZO6FFiy/B2j5V0hLQvYNPcY4AVB/Sa3BEqwTCLnSo3e4S//oiGHFDTXh3cDFsIVMZXH8N4z8bbX/CjAA0UTEH4oMvREAAAAASUVORK5CYII=') center center no-repeat;background-size:19.5px 24px}nav .tools .github a:hover{filter:progid:DXImageTransform.Microsoft.Alpha(Opacity=90);opacity:0.9}nav.active .tools{-moz-border-radius-bottomleft:0;-webkit-border-bottom-left-radius:0;border-bottom-left-radius:0}nav.active .tools .toggle{background:rgba(205,205,205,0.9);position:relative}nav .toc{-webkit-box-shadow:rgba(0,0,0,0.3) 0 0 0.5em 0.1em;-moz-box-shadow:rgba(0,0,0,0.3) 0 0 0.5em 0.1em;box-shadow:rgba(0,0,0,0.3) 0 0 0.5em 0.1em;background:rgba(230,230,230,0.9);border-left:1px solid #4a525a}nav .toc .label{color:#4a525a;text-decoration:none;border-top:1px solid rgba(192,192,192,0.9);border-bottom:1px solid rgba(192,192,192,0.9);margin-top:-1px}nav .toc .label:hover{background:rgba(205,205,205,0.9)}nav .toc .file>.label{font-weight:bold}nav .toc .selected>.label{background:#fff}nav .toc .label em{font-weight:bold}nav .toc .file>.label em{color:#101214}nav .toc .matched-child>.label{filter:progid:DXImageTransform.Microsoft.Alpha(Opacity=65);opacity:0.65;text-shadow:none;background:rgba(192,192,192,0.9)}@media (max-width: 41.65em){nav .tools,nav .toc{border-left-width:0}nav .tools{background:-webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #ffffff), color-stop(100%, #cdcdcd));background:-webkit-linear-gradient(top, #ffffff,#cdcdcd);background:-moz-linear-gradient(top, #ffffff,#cdcdcd);background:-o-linear-gradient(top, #ffffff,#cdcdcd);background:linear-gradient(top, #ffffff,#cdcdcd)}nav .toc{background:#e6e6e6}}.comments .wrapper a{display:inline-block;color:#a8614e;text-decoration:none}.comments .wrapper a:hover,.comments .wrapper a:hover *{text-decoration:underline}.comments .wrapper code{font-family:"Droid Sans Mono",Menlo,Monaco,monospace;font-size:0.75em;line-height:1.4;border:1px solid #e6e0d5}.comments .wrapper pre,.comments .wrapper code{-webkit-border-radius:0.4em;-moz-border-radius:0.4em;-ms-border-radius:0.4em;-o-border-radius:0.4em;border-radius:0.4em;background:#fbf8f3}.comments .wrapper pre{-webkit-box-shadow:#f2ece3 0 0 0.4em 0.2em;-moz-box-shadow:#f2ece3 0 0 0.4em 0.2em;box-shadow:#f2ece3 0 0 0.4em 0.2em;border:1px solid #d9c9af}.comments .wrapper pre code{border-width:0;background:transparent}.comments .wrapper blockquote{border-left:0.15em solid #959fa8;margin-left:-0.15em}body{-webkit-text-size-adjust:100%}input[type="search"]{-webkit-border-radius:1em;-moz-border-radius:1em;-ms-border-radius:1em;-o-border-radius:1em;border-radius:1em;-webkit-box-shadow:#ddd 0 1px 1px 0 inset;-moz-box-shadow:#ddd 0 1px 1px 0 inset;box-shadow:#ddd 0 1px 1px 0 inset;border:1px solid #959595;padding:0.15em 0.8em}#document .pilwrap{position:relative}#document .pilcrow{color:#454545;font:12px Arial;left:-20px;opacity:0;padding:1px 2px;position:absolute;text-decoration:none;top:3px}#document .comments:hover .pilcrow{opacity:1}#side-nav{left:10px;position:fixed;top:40%;z-index:1000}#side-nav li{margin:10px 0}#side-nav li a{background:url("sideNavOut.png") no-repeat scroll left top transparent;display:block;height:12px;position:relative;width:12px}#side-nav li a .text{display:none}#side-nav li a.active{background:url("sideNavOver.png") no-repeat scroll left top transparent}#flybar{font-family:"Helvetica Neue",Helvetica,"Droid Sans",sans-serif;font-weight:300;font-size:0.82em;line-height:1.3;background-color:#267bb6;background-image:-moz-linear-gradient(center bottom, #2576b4 0px, #348dce 94%);border-bottom:1px solid #888;box-shadow:0 3px 5px rgba(0,0,0,0.1);height:35px;left:0;min-width:745px;padding-left:777px;position:fixed;right:0;top:0;z-index:100;color:#fff}#nav-logo,#nav-logo-nav,#nav-logo-doc{display:block;height:30px;left:10px;position:absolute;top:9px;font-weight:bold}#nav-logo-doc{padding-left:290px}.flybar-button{border-left:1px solid transparent;border-right:1px solid transparent;color:#fff;font-size:12px;font-weight:bold;line-height:35px;padding:0 1em;text-align:center;text-decoration:none;text-transform:uppercase}.flybar-nav{display:block;float:left;position:relative;width:220px}.flybar-language{display:block;float:left;position:relative}.flybar-language .flybar-button{border-left:1px solid transparent;border-right:1px solid transparent;clear:none;float:left;margin-left:-1px;min-width:80px}.flybar-menu{-moz-border-bottom-colors:none;-moz-border-left-colors:none;-moz-border-right-colors:none;-moz-border-top-colors:none;background-color:rgba(249,249,249,0.99);border-bottom-left-radius:8px;border-bottom-right-radius:8px;border-color:-moz-use-text-color #bbb #bbb;border-image:none;border-right:1px solid #bbb;border-style:none solid solid;border-width:0 1px 1px;box-shadow:0 3px 5px rgba(0,0,0,0.1);display:none;padding:1em;position:absolute;top:41px;width:870px}#toc-menu{right:-345px}#language-menu{left:-25px}#language-menu li{display:inline-block;margin-right:25px}.flybar-menu h3{font-size:100%;text-transform:uppercase}.flybar-menu h4{color:#9b9b9b;font-size:90%;margin:0.5em 0;text-transform:uppercase}.flybar-menu ul{margin:0 0 1em 1em}.flybar-nav:hover .flybar-menu,.flybar-nav.active .flybar-menu{display:block}.flybar-button:hover,.flybar-button.active{background:none repeat scroll 0 0 #1d77bc;text-decoration:none}.flybar-nav:hover .flybar-button,.flybar-nav.active .flybar-button{background:-moz-linear-gradient(center top, #eee, #f8f8f8) repeat scroll 0 0 transparent;border-left:1px solid #bbb;border-right:1px solid #bbb}.flybar-nav:hover .flybar-button,.flybar-nav.active .flybar-button{background:-moz-linear-gradient(center top, #e5e5e5, #fff) repeat scroll 0 0 transparent;color:#000;height:51px}.sidebar{font-family:"Helvetica Neue",Helvetica,"Droid Sans",sans-serif;font-weight:300;font-size:0.82em;line-height:1.3;border-right:1px solid #e8e8e8;display:inline-block;padding:10px 30px 30px;vertical-align:top;width:220px;z-index:1}.sidebar ul{margin:0}.sidebar .menu li{position:relative}.sidebar .menu a{display:block;margin-top:10px}.sidebar .menu>li{margin-top:20px}.sidebar .menu>li:first-child{margin-top:0}.sidebar .menu>li:first-child>a{margin-top:0}.sidebar .menu>li>a{color:#333;font-weight:bold;margin-bottom:5px;text-decoration:none;text-transform:uppercase}.sidebar .menu .has_sub_menu>a{font-weight:bold}.sidebar .sub-menu .sub-menu{display:none;margin-left:9px}.sub_menu_arrow{border-bottom:3px solid transparent;border-left:3px solid #1a74ba;border-top:3px solid transparent;cursor:pointer;display:block;height:0;left:-10px;position:absolute;top:4px;width:0}.sub_menu_arrow:after{content:"";display:block;height:18px;left:-10px;position:absolute;top:-10px;width:18px}.lte_ie8 .sub_menu_arrow{display:none}.sub_menu_active>.sub_menu_arrow{border-left:3px solid transparent;border-right:3px solid transparent;border-top:3px solid #1a74ba}.sidebar_popout{background:none repeat scroll 0 0 #fcfcfc;height:100%;padding-left:20px;padding-top:60px;position:fixed}.sidebar_popout .menu-container{padding-left:10px}.sidebar_popout a{color:#1a74ba;text-decoration:none}.sidebar_popout a:link,.sidebar_popout a:visited{color:#1a74ba;text-decoration:none}.sidebar_popout a:hover{text-decoration:underline}.sidebar_popout a.no_underline{text-decoration:none}.sidebar_popout a.block_link{display:block;text-decoration:none}.sidebar_popout a.block_link:hover{background:none repeat scroll 0 0 #f8fbfd}.sidebar_no_fixed{position:absolute}.sidebar_button{background:none repeat scroll 0 0 #eaeaea;border-left:1px solid #d7d7d7;border-radius:0 10px 10px 0;cursor:pointer;height:45px;left:270px;position:fixed;top:60px;width:20px;z-index:1}.sidebar_button:hover{background:none repeat scroll 0 0 #dedede}.sidebar_button:after{border-bottom:6px solid transparent;border-right:6px solid #bbb;border-top:6px solid transparent;content:"";display:block;height:0;margin:17px 0 0 5px;width:0}.sidebar_hidden .sidebar_button:after{border-left:6px solid #bbb;border-right:0 none}.content_sidebar{border-left:1px solid #e8e8e8;display:inline-block;margin-left:-5px;padding-left:34px;vertical-align:top;width:640px}.content_sidebar_popout{display:block;padding-left:300px;width:100%}.content_no_fixed_header{margin-top:-66px}.section_anchor{display:block;height:60px;margin-top:-60px} +html,body,div,span,applet,object,iframe,h1,h2,h3,h4,h5,h6,p,blockquote,pre,a,abbr,acronym,address,big,cite,code,del,dfn,em,img,ins,kbd,q,s,samp,small,strike,strong,sub,sup,tt,var,b,u,i,center,dl,dt,dd,ol,ul,li,fieldset,form,label,legend,table,caption,tbody,tfoot,thead,tr,th,td,article,aside,canvas,details,embed,figure,figcaption,footer,header,hgroup,menu,nav,output,ruby,section,summary,time,mark,audio,video{margin:0;padding:0;border:0;font:inherit;font-size:100%;vertical-align:baseline}html{line-height:1}ol,ul{list-style:none}table{border-collapse:collapse;border-spacing:0}caption,th,td{text-align:left;font-weight:normal;vertical-align:middle}q,blockquote{quotes:none}q:before,q:after,blockquote:before,blockquote:after{content:"";content:none}a img{border:none}article,aside,details,figcaption,figure,footer,header,hgroup,menu,nav,section,summary{display:block}html,body{height:100%}#document{min-height:100%}body{max-width:33em}.segment{padding:0.5em 0 0.5em 33em;white-space:nowrap}.segment:first-child{padding-top:4.1em}.segment:last-child{padding-bottom:2em}.segment .comments,.segment .code{display:inline-block;vertical-align:top;padding:0 2em}.segment .comments{margin-left:-33em;width:29em;white-space:normal}.segment .code{white-space:pre}#meta{position:absolute;left:33em;padding:0.25em 1em}@media (max-width: 53em){html{font-size:1em}}@media (max-width: 52.94111em){html{font-size:0.99889em}}@media (max-width: 52.88222em){html{font-size:0.99778em}}@media (max-width: 52.82333em){html{font-size:0.99667em}}@media (max-width: 52.76444em){html{font-size:0.99556em}}@media (max-width: 52.70556em){html{font-size:0.99444em}}@media (max-width: 52.64667em){html{font-size:0.99333em}}@media (max-width: 52.58778em){html{font-size:0.99222em}}@media (max-width: 52.52889em){html{font-size:0.99111em}}@media (max-width: 52.47em){html{font-size:0.99em}}@media (max-width: 52.41111em){html{font-size:0.98889em}}@media (max-width: 52.35222em){html{font-size:0.98778em}}@media (max-width: 52.29333em){html{font-size:0.98667em}}@media (max-width: 52.23444em){html{font-size:0.98556em}}@media (max-width: 52.17556em){html{font-size:0.98444em}}@media (max-width: 52.11667em){html{font-size:0.98333em}}@media (max-width: 52.05778em){html{font-size:0.98222em}}@media (max-width: 51.99889em){html{font-size:0.98111em}}@media (max-width: 51.94em){html{font-size:0.98em}}@media (max-width: 51.88111em){html{font-size:0.97889em}}@media (max-width: 51.82222em){html{font-size:0.97778em}}@media (max-width: 51.76333em){html{font-size:0.97667em}}@media (max-width: 51.70444em){html{font-size:0.97556em}}@media (max-width: 51.64556em){html{font-size:0.97444em}}@media (max-width: 51.58667em){html{font-size:0.97333em}}@media (max-width: 51.52778em){html{font-size:0.97222em}}@media (max-width: 51.46889em){html{font-size:0.97111em}}@media (max-width: 51.41em){html{font-size:0.97em}}@media (max-width: 51.35111em){html{font-size:0.96889em}}@media (max-width: 51.29222em){html{font-size:0.96778em}}@media (max-width: 51.23333em){html{font-size:0.96667em}}@media (max-width: 51.17444em){html{font-size:0.96556em}}@media (max-width: 51.11556em){html{font-size:0.96444em}}@media (max-width: 51.05667em){html{font-size:0.96333em}}@media (max-width: 50.99778em){html{font-size:0.96222em}}@media (max-width: 50.93889em){html{font-size:0.96111em}}@media (max-width: 50.88em){html{font-size:0.96em}}@media (max-width: 50.82111em){html{font-size:0.95889em}}@media (max-width: 50.76222em){html{font-size:0.95778em}}@media (max-width: 50.70333em){html{font-size:0.95667em}}@media (max-width: 50.64444em){html{font-size:0.95556em}}@media (max-width: 50.58556em){html{font-size:0.95444em}}@media (max-width: 50.52667em){html{font-size:0.95333em}}@media (max-width: 50.46778em){html{font-size:0.95222em}}@media (max-width: 50.40889em){html{font-size:0.95111em}}@media (max-width: 50.35em){html{font-size:0.95em}}@media (max-width: 50.29111em){html{font-size:0.94889em}}@media (max-width: 50.23222em){html{font-size:0.94778em}}@media (max-width: 50.17333em){html{font-size:0.94667em}}@media (max-width: 50.11444em){html{font-size:0.94556em}}@media (max-width: 50.05556em){html{font-size:0.94444em}}@media (max-width: 49.99667em){html{font-size:0.94333em}}@media (max-width: 49.93778em){html{font-size:0.94222em}}@media (max-width: 49.87889em){html{font-size:0.94111em}}@media (max-width: 49.82em){html{font-size:0.94em}}@media (max-width: 49.76111em){html{font-size:0.93889em}}@media (max-width: 49.70222em){html{font-size:0.93778em}}@media (max-width: 49.64333em){html{font-size:0.93667em}}@media (max-width: 49.58444em){html{font-size:0.93556em}}@media (max-width: 49.52556em){html{font-size:0.93444em}}@media (max-width: 49.46667em){html{font-size:0.93333em}}@media (max-width: 49.40778em){html{font-size:0.93222em}}@media (max-width: 49.34889em){html{font-size:0.93111em}}@media (max-width: 49.29em){html{font-size:0.93em}}@media (max-width: 49.23111em){html{font-size:0.92889em}}@media (max-width: 49.17222em){html{font-size:0.92778em}}@media (max-width: 49.11333em){html{font-size:0.92667em}}@media (max-width: 49.05444em){html{font-size:0.92556em}}@media (max-width: 48.99556em){html{font-size:0.92444em}}@media (max-width: 48.93667em){html{font-size:0.92333em}}@media (max-width: 48.87778em){html{font-size:0.92222em}}@media (max-width: 48.81889em){html{font-size:0.92111em}}@media (max-width: 48.76em){html{font-size:0.92em}}@media (max-width: 48.70111em){html{font-size:0.91889em}}@media (max-width: 48.64222em){html{font-size:0.91778em}}@media (max-width: 48.58333em){html{font-size:0.91667em}}@media (max-width: 48.52444em){html{font-size:0.91556em}}@media (max-width: 48.46556em){html{font-size:0.91444em}}@media (max-width: 48.40667em){html{font-size:0.91333em}}@media (max-width: 48.34778em){html{font-size:0.91222em}}@media (max-width: 48.28889em){html{font-size:0.91111em}}@media (max-width: 48.23em){html{font-size:0.91em}}@media (max-width: 48.17111em){html{font-size:0.90889em}}@media (max-width: 48.11222em){html{font-size:0.90778em}}@media (max-width: 48.05333em){html{font-size:0.90667em}}@media (max-width: 47.99444em){html{font-size:0.90556em}}@media (max-width: 47.93556em){html{font-size:0.90444em}}@media (max-width: 47.87667em){html{font-size:0.90333em}}@media (max-width: 47.81778em){html{font-size:0.90222em}}@media (max-width: 47.75889em){html{font-size:0.90111em}}@media (max-width: 47.7em){html{font-size:0.9em}}@media (max-width: 47.64111em){html{font-size:0.89889em}}@media (max-width: 47.58222em){html{font-size:0.89778em}}@media (max-width: 47.52333em){html{font-size:0.89667em}}@media (max-width: 47.46444em){html{font-size:0.89556em}}@media (max-width: 47.40556em){html{font-size:0.89444em}}@media (max-width: 47.34667em){html{font-size:0.89333em}}@media (max-width: 47.28778em){html{font-size:0.89222em}}@media (max-width: 47.22889em){html{font-size:0.89111em}}@media (max-width: 47.17em){html{font-size:0.89em}}@media (max-width: 47.11111em){html{font-size:0.88889em}}@media (max-width: 47.05222em){html{font-size:0.88778em}}@media (max-width: 46.99333em){html{font-size:0.88667em}}@media (max-width: 46.93444em){html{font-size:0.88556em}}@media (max-width: 46.87556em){html{font-size:0.88444em}}@media (max-width: 46.81667em){html{font-size:0.88333em}}@media (max-width: 46.75778em){html{font-size:0.88222em}}@media (max-width: 46.69889em){html{font-size:0.88111em}}@media (max-width: 46.64em){html{font-size:0.88em}}@media (max-width: 46.58111em){html{font-size:0.87889em}}@media (max-width: 46.52222em){html{font-size:0.87778em}}@media (max-width: 46.46333em){html{font-size:0.87667em}}@media (max-width: 46.40444em){html{font-size:0.87556em}}@media (max-width: 46.34556em){html{font-size:0.87444em}}@media (max-width: 46.28667em){html{font-size:0.87333em}}@media (max-width: 46.22778em){html{font-size:0.87222em}}@media (max-width: 46.16889em){html{font-size:0.87111em}}@media (max-width: 46.11em){html{font-size:0.87em}}@media (max-width: 46.05111em){html{font-size:0.86889em}}@media (max-width: 45.99222em){html{font-size:0.86778em}}@media (max-width: 45.93333em){html{font-size:0.86667em}}@media (max-width: 45.87444em){html{font-size:0.86556em}}@media (max-width: 45.81556em){html{font-size:0.86444em}}@media (max-width: 45.75667em){html{font-size:0.86333em}}@media (max-width: 45.69778em){html{font-size:0.86222em}}@media (max-width: 45.63889em){html{font-size:0.86111em}}@media (max-width: 45.58em){html{font-size:0.86em}}@media (max-width: 45.52111em){html{font-size:0.85889em}}@media (max-width: 45.46222em){html{font-size:0.85778em}}@media (max-width: 45.40333em){html{font-size:0.85667em}}@media (max-width: 45.34444em){html{font-size:0.85556em}}@media (max-width: 45.28556em){html{font-size:0.85444em}}@media (max-width: 45.22667em){html{font-size:0.85333em}}@media (max-width: 45.16778em){html{font-size:0.85222em}}@media (max-width: 45.10889em){html{font-size:0.85111em}}@media (max-width: 45.05em){html{font-size:1em}body{margin:0 auto}.segment{padding:0;white-space:normal;max-width:29em;margin:0 auto}.segment .comments,.segment .code{display:block;padding:1em}.segment .comments{margin-left:0;width:auto}.segment .code{display:block;overflow-y:hidden;overflow-x:auto}.segment .code .wrapper{display:inline-block}}nav{position:fixed;top:0;right:0;width:20em}@media (max-width: 45.05em){nav{left:0;width:100%}}nav .tools{position:relative;z-index:100}nav .tools li{display:table-cell;vertical-align:middle;text-align:center;white-space:nowrap;height:2.1em;padding:0 0.55em}nav .tools .github{padding:0}nav .tools .github a{display:block;height:2.1em;width:2.1em;text-indent:-9001em}nav .tools .search{width:100%}nav .tools .search input{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;display:block;width:100%}nav .toc{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;position:absolute;top:2.1em;bottom:0;width:100%;overflow-x:hidden;overflow-y:auto}nav .toc li{position:relative}nav .toc .label{display:block;line-height:2em;padding:0 0.55em 0 0.55em}nav .toc li li .label{padding-left:1.1em}nav .toc li li li .label{padding-left:1.65em}nav .toc li li li li .label{padding-left:2.2em}nav .toc li li li li li .label{padding-left:2.75em}nav .toc li li li li li li .label{padding-left:3.3em}nav{-webkit-transition:height 0;-webkit-transition-delay:150ms;-moz-transition:height 0 150ms;-o-transition:height 0 150ms;transition:height 0 150ms}nav .tools .toggle{-webkit-transition:background 150ms;-moz-transition:background 150ms;-o-transition:background 150ms;transition:background 150ms}nav.active{-webkit-transition:height 0 0;-moz-transition:height 0 0;-o-transition:height 0 0;transition:height 0 0;height:100%}nav .toc{-webkit-transition:right 150ms;-moz-transition:right 150ms;-o-transition:right 150ms;transition:right 150ms;right:-100%}nav.active .toc{right:0}@media (max-width: 45.05em){nav .toc{-webkit-transition:left 150ms;-moz-transition:left 150ms;-o-transition:left 150ms;transition:left 150ms;right:auto;left:-100%}nav.active .toc{left:0}}@media (max-width: 45.05em){body{-webkit-transition:left 150ms;-moz-transition:left 150ms;-o-transition:left 150ms;transition:left 150ms;position:relative;left:0}html.popped{overflow:hidden}html.popped body{left:100%;overflow:hidden}}nav .toc .children,nav .toc .outline{display:none}nav .toc .expanded>.children,nav .toc .expanded>.outline,nav .toc .expanded>.outline .children{display:block}nav .toc .discloser{-webkit-transition-property:-moz-transform,-webkit-transform,-o-transform,-webkit-transform;-moz-transition-property:-moz-transform,-webkit-transform,-o-transform,-moz-transform;-o-transition-property:-moz-transform,-webkit-transform,-o-transform,-o-transform;transition-property:-moz-transform -webkit-transform -o-transform transform;-webkit-transition-duration:200ms;-moz-transition-duration:200ms;-o-transition-duration:200ms;transition-duration:200ms;-webkit-transform:rotate(0deg);-moz-transform:rotate(0deg);-ms-transform:rotate(0deg);-o-transform:rotate(0deg);transform:rotate(0deg);display:inline-block;height:9px;width:9px;padding:0.2em;margin:0.2em 0.2em -0.2em 0.2em;vertical-align:baseline;background:url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABIAAAASCAYAAABWzo5XAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYxIDY0LjE0MDk0OSwgMjAxMC8xMi8wNy0xMDo1NzowMSAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNS4xIE1hY2ludG9zaCIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDowOEFDRENGQzE2NEUxMUUxODdDNUQ2ODM0QzVGRkVBMSIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDowOEFDRENGRDE2NEUxMUUxODdDNUQ2ODM0QzVGRkVBMSI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjA4QUNEQ0ZBMTY0RTExRTE4N0M1RDY4MzRDNUZGRUExIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjA4QUNEQ0ZCMTY0RTExRTE4N0M1RDY4MzRDNUZGRUExIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+nQHMgwAAAM1JREFUeNpi/P//P0NJSYkuAwNDJhDXAPE7BjIAExIbZNA9IC4CYjZKDAIBfiDuBeLzQOxBiUEwoAXE26FYixKDYMAD6rpeqGvJNogBGl5F0PDLpMQgGBAC4mlQF9pTYhAMGADxASBeB8RylBgEA4FAfAOIW4CYhxKDQIAZxmChwJD1QFwGxHfINegaEGcB8UFyA/sd1AA9dEOIddFfIJ4OzdAfcSkiZNAOIC6GegcvwGXQHagBm8jNtB+hBmiTYgi6i+ZCw+EFOWkBIMAA1W4l62UzKWwAAAAASUVORK5CYII=') center center no-repeat;background-size:9px 9px}nav .toc .discloser.placeholder,nav .toc .expanded>.outline .discloser{background:none}nav .toc .expanded>.label .discloser{-webkit-transform:rotate(90deg);-moz-transform:rotate(90deg);-ms-transform:rotate(90deg);-o-transform:rotate(90deg);transform:rotate(90deg)}nav .toc .filtered>.label{display:none}nav .toc .matched-child>.label{display:block}nav .toc .matched-child>.children,nav .toc .matched-child>.outline,nav .toc .matched-child>.outline .children{display:block}nav .toc .matched>.children,nav .toc .matched>.outline,nav .toc .matched>.outline .children{display:block}nav.searching .toc .discloser{display:none}.comments .wrapper{font-family:"Helvetica Neue",Helvetica,"Droid Sans",sans-serif;font-weight:300;font-size:0.9375em;line-height:1.35}.comments .wrapper h1,.comments .wrapper h2,.comments .wrapper h3,.comments .wrapper h4,.comments .wrapper h5,.comments .wrapper h6{font-family:"HelveticaNeue-UltraLight","Helvetica Neue",Helvetica,"Droid Sans",sans-serif;font-weight:100;letter-spacing:0.0625em;line-height:1.75}.comments .wrapper h1{font-size:2.5em}.comments .wrapper h2{font-size:2em}.comments .wrapper h3{font-size:1.6em}.comments .wrapper h4{font-size:1.4em}.comments .wrapper h5{font-size:1.3em}.comments .wrapper h6{font-size:1.2em}.comments .wrapper p{margin:1em 0}.comments .wrapper>*:first-child{margin-top:0}.comments .wrapper>*:last-child{margin-bottom:0}.comments .wrapper ol,.comments .wrapper ul{padding-left:1.75em}.comments .wrapper ol li{list-style:decimal}.comments .wrapper ul li{list-style:disc}.comments .wrapper li{margin:1em 0}.comments .wrapper li:first-child{margin-top:0}.comments .wrapper li:last-child{margin-bottom:0}.comments .wrapper code{display:inline-block;padding:0.25em 0.25em 0 0.25em}.comments .wrapper pre{display:block;overflow-x:auto;overflow-y:hidden}.comments .wrapper pre code{padding:1em}.comments .wrapper blockquote{padding:0 1em}.comments .wrapper strong{font-weight:700}.comments .wrapper em{font-style:italic}html{background:#4a525a}#document{background:#f5fbff -webkit-gradient(linear, 0% 50%, 100% 50%, color-stop(0%, #272c30), color-stop(30%, #3e454c), color-stop(100%, #4a525a)) 33em no-repeat;background:#f5fbff -webkit-linear-gradient(left, #272c30,#3e454c 0.3em,#4a525a 1em) 33em no-repeat;background:#f5fbff -moz-linear-gradient(left, #272c30,#3e454c 0.3em,#4a525a 1em) 33em no-repeat;background:#f5fbff -o-linear-gradient(left, #272c30,#3e454c 0.3em,#4a525a 1em) 33em no-repeat;background:#f5fbff linear-gradient(left, #272c30,#3e454c 0.3em,#4a525a 1em) 33em no-repeat;margin-right:-1em;padding-right:1em}@media (max-width: 45.05em){#document{margin-right:0;padding-right:0}}#meta>*{font-family:"Helvetica Neue",Helvetica,"Droid Sans",sans-serif;font-weight:300;font-size:0.9375em;line-height:1.35;text-shadow:#272c30 1px 1px 0}#meta>*,#meta>* a{color:#9faab7}#meta>* a{text-decoration:none}.comments .wrapper{font-family:"Helvetica Neue",Helvetica,"Droid Sans",sans-serif;font-weight:300;font-size:0.9375em;line-height:1.35;text-shadow:#fff 1px 1px 0;color:#4a525a}.code .wrapper{font-family:"Droid Sans Mono",Menlo,Monaco,monospace;font-size:0.75em;line-height:1.4;text-shadow:#272c30 1px 1px 0;color:#cbd1d8}.code .wrapper .k{color:#e0c090}.code .wrapper .kc{color:#e0c090}.code .wrapper .kd{color:#e0c090}.code .wrapper .kp{color:#e0c090}.code .wrapper .kr{color:#e0c090}.code .wrapper .kt{color:#e0c090}.code .wrapper .na{color:#a9c2ba}.code .wrapper .nc{color:#cee4dd}.code .wrapper .no{color:#cee4dd}.code .wrapper .nd{color:#cee4dd}.code .wrapper .nf{color:#abd9cf}.code .wrapper .py{color:#abd9cf}.code .wrapper .nv{color:#b9d0af}.code .wrapper .vc{color:#b9d0af}.code .wrapper .vg{color:#b9d0af}.code .wrapper .vi{color:#b9d0af}.code .wrapper .s{color:#e9baba}.code .wrapper .sb{color:#e9baba}.code .wrapper .sc{color:#e9baba}.code .wrapper .sd{color:#e9baba}.code .wrapper .s2{color:#e9baba}.code .wrapper .se{color:#e9baba}.code .wrapper .sh{color:#e9baba}.code .wrapper .si{color:#e9baba}.code .wrapper .sx{color:#e9baba}.code .wrapper .sr{color:#cba8d6}.code .wrapper .s1{color:#e9baba}.code .wrapper .ss{color:#cba8d6}.code .wrapper .m{color:#cba8d6}.code .wrapper .mf{color:#cba8d6}.code .wrapper .mh{color:#cba8d6}.code .wrapper .mi{color:#cba8d6}.code .wrapper .il{color:#cba8d6}.code .wrapper .mo{color:#cba8d6}.code .wrapper .o{color:#ded3a1}.code .wrapper .ow{color:#ded3a1}.code .wrapper .p{color:#ded3a1}.code .wrapper .c,.code .wrapper .cm,.code .wrapper .cp,.code .wrapper .c1,.code .wrapper .cs{font-style:italic}.code .wrapper .c{color:#b1bac4}.code .wrapper .cm{color:#b1bac4}.code .wrapper .cp{color:#b1bac4}.code .wrapper .c1{color:#b1bac4}.code .wrapper .cs{color:#b1bac4}@media (max-width: 45.05em){.code{-webkit-border-radius:0.4em;-moz-border-radius:0.4em;-ms-border-radius:0.4em;-o-border-radius:0.4em;border-radius:0.4em;-webkit-box-shadow:#272c30 0 0 0.5em 0.2em inset;-moz-box-shadow:#272c30 0 0 0.5em 0.2em inset;box-shadow:#272c30 0 0 0.5em 0.2em inset;background:#4a525a}.code .wrapper{-webkit-box-shadow:#4a525a 0 0 0.25em 0.75em;-moz-box-shadow:#4a525a 0 0 0.25em 0.75em;box-shadow:#4a525a 0 0 0.25em 0.75em;background:#4a525a}}@media (max-width: 29em){.code{-webkit-border-radius:0;-moz-border-radius:0;-ms-border-radius:0;-o-border-radius:0;border-radius:0}}nav{text-shadow:#f0f0f0 1px 1px 0;color:#4a525a}nav .tools,nav .toc{font-family:"Helvetica Neue",Helvetica,"Droid Sans",sans-serif;font-weight:300;font-size:0.9375em;line-height:1.35}nav .tools{-webkit-box-shadow:rgba(0,0,0,0.3) 0 0 0.5em 0.1em;-moz-box-shadow:rgba(0,0,0,0.3) 0 0 0.5em 0.1em;box-shadow:rgba(0,0,0,0.3) 0 0 0.5em 0.1em;background:-webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, rgba(255,255,255,0.9)), color-stop(100%, rgba(205,205,205,0.9)));background:-webkit-linear-gradient(top, rgba(255,255,255,0.9),rgba(205,205,205,0.9));background:-moz-linear-gradient(top, rgba(255,255,255,0.9),rgba(205,205,205,0.9));background:-o-linear-gradient(top, rgba(255,255,255,0.9),rgba(205,205,205,0.9));background:linear-gradient(top, rgba(255,255,255,0.9),rgba(205,205,205,0.9));-moz-border-radius-bottomleft:0.4em;-webkit-border-bottom-left-radius:0.4em;border-bottom-left-radius:0.4em;border-bottom:1px solid #4a525a;border-left:1px solid #4a525a}@media (max-width: 53em){nav .tools{-moz-border-radius-bottomleft:0;-webkit-border-bottom-left-radius:0;border-bottom-left-radius:0}}nav .tools li{border-right:1px solid #4a525a}nav .tools li:last-child{border-right:none}nav .tools .toggle{cursor:pointer}nav .tools .github a{-webkit-transition:opacity 200ms;-moz-transition:opacity 200ms;-o-transition:opacity 200ms;transition:opacity 200ms;filter:progid:DXImageTransform.Microsoft.Alpha(Opacity=50);opacity:0.5;background:url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACcAAAAwCAYAAACScGMWAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYxIDY0LjE0MDk0OSwgMjAxMC8xMi8wNy0xMDo1NzowMSAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNS4xIE1hY2ludG9zaCIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDowOEFDRENGODE2NEUxMUUxODdDNUQ2ODM0QzVGRkVBMSIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDowOEFDRENGOTE2NEUxMUUxODdDNUQ2ODM0QzVGRkVBMSI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjA4QUNEQ0Y2MTY0RTExRTE4N0M1RDY4MzRDNUZGRUExIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjA4QUNEQ0Y3MTY0RTExRTE4N0M1RDY4MzRDNUZGRUExIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+FC/Z5AAACv9JREFUeNrMWXl0VNUdvu/NmzWZJQnZN0hCWIQEIQuErUCBI2qwEAFRBJUeDvUPDwfKVhDUY2mPp8spakVELSq11goIiCBbUVKKUGKQQFiCSBJIQjLJZPbJzOt3J/dOXiYJgcqh3nO+vPfm3Xfvd3/3t94IsiyTH2sTyY+4SfxGpVIpfzdBokdxjQHOADuAj4GmuzRvFjAbmAZkAocEQZjLX/r9/vYbuq0UgigoQKagsxyG74FlgB4gYdAA0UASkAIkACahvSn70Xd/AlrCxm4VRDEBIBScUxg5wiCs7oZcEJDwN7g+AswH3gAOApVALdAIWIEGtpgyYAfwPFtYTU/jbtmy5W/gsZAugnMKbSsJ2oXAn1J62o9AIJCDy/ZgbzbQLVoqkAtM722fa2pqYnHJwfgmXG23MgjV7SjO3bR06BnlogUSe7PW+ntplXQHUlNTHewxqjdyR+8lOehxYNCgQa3hnHoil8a18F60trY2cenSpYU+n48qfXMnvaEQYcIMQ4KmrbAk/Cb3ZGV3gt7GWbx4cSm4xHd1JR2+aPfdIPK/ICIiwlNaWroKfMSgwDq0Moj78feB/1e4cjqdmq1btz6C25921jk5iOLe4i2XdDh+aF/ejhw5ksYEZJE6BAeHSuT83nyaMTLSZzAYfO2K7BPdbo/k9ngkOM8u32i1moBep2/TarVtGrU64PZ6VC0tLVqv1ydyFxLeamtrzbgYgJFSh+Bk2jOpe1ICmf7QtKp5856sHJo7zGoym4Lk3G636HQ4JXurTd3U1KTBtqgcTpcQZTYHIiIjfNExMV6DIaINuuTX6XQBp8sp1t24odv3+d6UN9/cPPTqtWpjOEFYLOeUI3CJwJJULAMZFE5u9cqVx1/esKE8jLebgWc3akCjjIFKbwF46dw0AlLXVnXpUlzx9OJpZyvO9VEShJR9LpfrHdy2SgqDCEB83i7Elj53NozYKeAY3QHAE0ZOz0KQmukuJ+VifUPkMrKyjO9t2bzvwUdmbL5eV2/gBBVE1crAL/OAy4mlJSe5Vq5Zd0pB7O/4OB7XXwJbgC/pYLHRFhJtNhONRk1q6xtIv+RE4vJ4SUOTldTdDKWABcBi+g3wdtH9OfaHJ4zaVpg7NHvH/oPrFKGMW4wghYn/uvJhwvjx1UZLFN+6I/iQ3r/Pnh+iGQcWUVPfaCWNzTZiiowgMA5yo7GJ1N5oIP4OI4llmQzV6QVAdenp8v3J8X1IhF7aplarV0HXaE5IJEniH8md/RwhFZ1iWFoqj3dUop8yQrzFPPvss78Cuf48e7W22IjL7SHXauuUxGgbpTS2goKC5fhu9InyCnLmfFWDiByQv6OOuCu5dmEeU46Iyfj7CqzKwXQp1OLj4wfSrcJEll78q0b5EBMTQ4k++V3N9cE6rVYCuRCP5OTkFm5ECskJFMdxd5X/dLOh3shuG9n1n8pMYuLEiQ10sawmuFU7SQMAfxg3bhxXn1yLyWDx+X0mhVT5O2d4NLADb/GHr0/9J97ltFO9lDJSgruyC3gpNjb20tq1a4+OHj26OaxQGgDMYxarbN8BTxuNxm9nzZr1zZIlS6r4GiWVekhbW0BL9Q0L9s+dO/dqKKfsJvCb4fMuMKuRP/nwvSN4//PHH55CsAXckqkhbGJ4nWYSbMCXmIKkKRNJhQeIATYqvs3PGZD1EX1F55s0adI5xbupXciJ7ddCWBCVopyekuw8ffJr2lkzMLMviYky0/7UeRcDNIMYxbeIKf6IvLy8madOnZqId1KEQU8S4/rA1ZiwODX9Ng9YCcxc/sxjkyWVivo+GRGkurKy8j1G7DW6YGWECMVY2hKTEicjHH1stVpNSYkJztmPlqw/uG/vK/6ATPeC+Nv88JIqUg2X0epwEo/XW4LPltMaFNs+vays7HhSUtLS9OTEpgi9jkRbTMRmd5Ios5G0OuGTA/LkMxcubWtr89MIcRnZyLYnnniC70Ap8JfutjWE9evXF02YMKGCiz0hPu5YWlLC/PuyMzOGZGdKOQP7k76pSSR3YDZJSYyDVE0js7KyVhw88MVQjJkODAR0AzLSyJi8XIJvzMMGZU+M7xP9V5p4snHf3/jqxp+g35+Z1F4GTEFOCsktYCHmANCgKAX779q1a9W7776bd/jw4b6QpFEtSUSr0VyTJPE8vMB3Br2uSRREh0oUbPEpaQlFhQW5dXU3mtUaddzBA4crHE5HItba3+ly9/V4fWbMSQuo7SD2DsanPnQhEMnmfYM66c4Vf3txTFdSDTwakqAYrE2jgAV2u/2tvXv3/mPRokUfZWdnfwhvXhHKBBm4IYXhX8BrwC/wvmDZsmV9mFQXKgzgaeovRUXFr5QcdQcvAKupwFJSUkqqa6q3Kxw0lWIqU/rhly9fTsKWP1hdXR3dW4YL3fumqqrq1xqNhpZ9cewMhiYJNAKdpjqG+a9wy+56VsIkNXLkSOqIZXjx5s/37Z3QnS5SK4yMjDx8J/VBSUlJOb5bATwGUB3rC2j57gQ9BSuyeixwEJLiYdbUucq5uTnXNm3a1B3BXKDtTshZLBbnxYsXV1M31GW82yXH8ArXHbPZbENa/kc8zwPoQcvrwDU+Kd7ZIUUXq57cc+bMKeMlICKCC1sZWsTOnTs/wVyP3i65noqZjezEiNhsNiP83XPovBXYzHKy0EHPzJkzz6elpQXDGIj48/Pz67mWjhgxorqoqOhKKJGwWmkCUADdNXSuBTqrWG8V//d0hXq93spDEEd4Gz58eCMqdoENLtPqPXQyKUl+vK8PS8tMQaMQeDkqk477zkm+dAsjOzxjxozxXq/3rZMnT2Y0NzcbaIWFrXLjKqJKCqZJCHOy4qTIj+ghK47GBLwPhEsITddxL/R+7Npd++CDD86AyJPAMzU1NXGYW0C+5UHkGLhhw4axzL0IyiCvUomBsPM84QefCfd4oi2KlZhgQ2pq6ng83ke3xeFweHo6ykIKJCuykB90GCTdTicQpLq3AyR30oIXQXoRPzLopu9dO52S7uSUkrkXmq67uzMOOAMZRtDj6aeisrqt+UIjqTWasEHbM/eo2HiiQ07G9JtodDpibahTNdXdCPYzRBoFo8XCDr2D48h8clRutH8oROoMkaEVpQ8YzCxE6PEoMERubPHPFJZDvXOwpiB6gyF4/E5/87jcJDE9gxz7bMcDlBx1mOkZGS5UXMFxNHq9v29mf4+I+oIarj9ApCE5w+x8jhNl5emzSmbUBM8aRo3lUaBdCjJzKQrrVUhO23kVcrsP8nk9TJdUxGGzJXz2/pYXbtbWBI/JxkyavKd/Zlbr1StV9PCFDB6aW1dUmN/YLzOr5cK5iuizZ8v7PDD17S+HDLu/8tuy0wP+8NuXh/jdds/8BU9Fet3uXrc2RM7a0NBOjq1ECB0CtBMVoUu2psZxrVbrOKM5emeE2bj7iz27Ilauf/EZR2srVE3tXvP8ui+R55Hla9Z9tfDx2cVVFy6YP9r5acaRQ4deLZk9K9Nlt5fs3r0nc3h+4RRbc+PJAETL5RH0jWHOMKQPk+fM7+7cq+NjSSQum4M01V8nZ//9FfXyxRevXJ02ZtTI6TGxsVf6ZWWv2LP946ms8iofkDOsKeBx/06j1WtPHC99E7XEizSfA7LZ6LSSOzBl7lPuTkqOtn/bO53J3WHLAx4G6igRlvPPZO6FFiy/B2j5V0hLQvYNPcY4AVB/Sa3BEqwTCLnSo3e4S//oiGHFDTXh3cDFsIVMZXH8N4z8bbX/CjAA0UTEH4oMvREAAAAASUVORK5CYII=') center center no-repeat;background-size:19.5px 24px}nav .tools .github a:hover{filter:progid:DXImageTransform.Microsoft.Alpha(Opacity=90);opacity:0.9}nav.active .tools{-moz-border-radius-bottomleft:0;-webkit-border-bottom-left-radius:0;border-bottom-left-radius:0}nav.active .tools .toggle{background:rgba(205,205,205,0.9);position:relative}nav .toc{-webkit-box-shadow:rgba(0,0,0,0.3) 0 0 0.5em 0.1em;-moz-box-shadow:rgba(0,0,0,0.3) 0 0 0.5em 0.1em;box-shadow:rgba(0,0,0,0.3) 0 0 0.5em 0.1em;background:rgba(230,230,230,0.9);border-left:1px solid #4a525a}nav .toc .label{color:#4a525a;text-decoration:none;border-top:1px solid rgba(192,192,192,0.9);border-bottom:1px solid rgba(192,192,192,0.9);margin-top:-1px}nav .toc .label:hover{background:rgba(205,205,205,0.9)}nav .toc .file>.label{font-weight:bold}nav .toc .selected>.label{background:#f5fbff}nav .toc .label em{font-weight:bold}nav .toc .file>.label em{color:#101214}nav .toc .matched-child>.label{filter:progid:DXImageTransform.Microsoft.Alpha(Opacity=65);opacity:0.65;text-shadow:none;background:rgba(192,192,192,0.9)}@media (max-width: 45.05em){nav .tools,nav .toc{border-left-width:0}nav .tools{background:-webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #ffffff), color-stop(100%, #cdcdcd));background:-webkit-linear-gradient(top, #ffffff,#cdcdcd);background:-moz-linear-gradient(top, #ffffff,#cdcdcd);background:-o-linear-gradient(top, #ffffff,#cdcdcd);background:linear-gradient(top, #ffffff,#cdcdcd)}nav .toc{background:#e6e6e6}}.comments .wrapper a{display:inline-block;color:#a8614e;text-decoration:none}.comments .wrapper a:hover,.comments .wrapper a:hover *{text-decoration:underline}.comments .wrapper code{font-family:"Droid Sans Mono",Menlo,Monaco,monospace;font-size:0.75em;line-height:1.4;border:1px solid #e6e0d5}.comments .wrapper pre,.comments .wrapper code{-webkit-border-radius:0.4em;-moz-border-radius:0.4em;-ms-border-radius:0.4em;-o-border-radius:0.4em;border-radius:0.4em;background:#fbf8f3}.comments .wrapper pre{-webkit-box-shadow:#f2ece3 0 0 0.4em 0.2em;-moz-box-shadow:#f2ece3 0 0 0.4em 0.2em;box-shadow:#f2ece3 0 0 0.4em 0.2em;border:1px solid #d9c9af}.comments .wrapper pre code{border-width:0;background:transparent}.comments .wrapper blockquote{border-left:0.15em solid #959fa8;margin-left:-0.15em}body{-webkit-text-size-adjust:100%}input[type="search"]{-webkit-border-radius:1em;-moz-border-radius:1em;-ms-border-radius:1em;-o-border-radius:1em;border-radius:1em;-webkit-box-shadow:#ddd 0 1px 1px 0 inset;-moz-box-shadow:#ddd 0 1px 1px 0 inset;box-shadow:#ddd 0 1px 1px 0 inset;border:1px solid #959595;padding:0.15em 0.8em}