forked from LiveCarta/PayPal-PHP-SDK
101 lines
13 KiB
HTML
101 lines
13 KiB
HTML
<!DOCTYPE html><html lang="en"><head><title>CreatePaymentUsingPayPal</title></head><meta http-equiv="Content-Type" content="text/html; charset=utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0"><meta name="groc-relative-root" content=""><meta name="groc-document-path" content="CreatePaymentUsingPayPal"><meta name="groc-project-path" content="CreatePaymentUsingPayPal.php"><link rel="stylesheet" type="text/css" media="all" href="assets/style.css"><script type="text/javascript" src="assets/behavior.js"></script><body><div id="meta"><div class="file-path">CreatePaymentUsingPayPal.php</div></div><div id="document"><div class="segment"><div class="code"><div class="wrapper"><span class="cp"><?php</span></div></div></div><div class="segment"><div class="comments "><div class="wrapper"><h1 id="create-payment-using-paypal-as-payment-method">Create Payment using PayPal as payment method</h1>
|
|
|
|
<p>This sample code demonstrates how you can process a
|
|
PayPal Account based Payment.
|
|
API used: /v1/payments/payment</p></div></div><div class="code"><div class="wrapper"><span class="k">require</span> <span class="nx">__DIR__</span> <span class="o">.</span> <span class="s1">'/../bootstrap.php'</span><span class="p">;</span>
|
|
<span class="k">use</span> <span class="nx">PayPal\Api\Amount</span><span class="p">;</span>
|
|
<span class="k">use</span> <span class="nx">PayPal\Api\Details</span><span class="p">;</span>
|
|
<span class="k">use</span> <span class="nx">PayPal\Api\Item</span><span class="p">;</span>
|
|
<span class="k">use</span> <span class="nx">PayPal\Api\ItemList</span><span class="p">;</span>
|
|
<span class="k">use</span> <span class="nx">PayPal\Api\Payer</span><span class="p">;</span>
|
|
<span class="k">use</span> <span class="nx">PayPal\Api\Payment</span><span class="p">;</span>
|
|
<span class="k">use</span> <span class="nx">PayPal\Api\RedirectUrls</span><span class="p">;</span>
|
|
<span class="k">use</span> <span class="nx">PayPal\Api\Transaction</span><span class="p">;</span>
|
|
<span class="nb">session_start</span><span class="p">();</span></div></div></div><div class="segment"><div class="comments "><div class="wrapper"><h3 id="payer">Payer</h3>
|
|
|
|
<p>A resource representing a Payer that funds a payment
|
|
For paypal account payments, set payment method
|
|
to 'paypal'.</p></div></div><div class="code"><div class="wrapper"><span class="nv">$payer</span> <span class="o">=</span> <span class="k">new</span> <span class="nx">Payer</span><span class="p">();</span>
|
|
<span class="nv">$payer</span><span class="o">-></span><span class="na">setPaymentMethod</span><span class="p">(</span><span class="s2">"paypal"</span><span class="p">);</span></div></div></div><div class="segment"><div class="comments "><div class="wrapper"><h3 id="itemized-information">Itemized information</h3>
|
|
|
|
<p>(Optional) Lets you specify item wise
|
|
information</p></div></div><div class="code"><div class="wrapper"><span class="nv">$item1</span> <span class="o">=</span> <span class="k">new</span> <span class="nx">Item</span><span class="p">();</span>
|
|
<span class="nv">$item1</span><span class="o">-></span><span class="na">setName</span><span class="p">(</span><span class="s1">'Ground Coffee 40 oz'</span><span class="p">)</span>
|
|
<span class="o">-></span><span class="na">setCurrency</span><span class="p">(</span><span class="s1">'USD'</span><span class="p">)</span>
|
|
<span class="o">-></span><span class="na">setQuantity</span><span class="p">(</span><span class="mi">1</span><span class="p">)</span>
|
|
<span class="o">-></span><span class="na">setPrice</span><span class="p">(</span><span class="s1">'7.50'</span><span class="p">);</span>
|
|
<span class="nv">$item2</span> <span class="o">=</span> <span class="k">new</span> <span class="nx">Item</span><span class="p">();</span>
|
|
<span class="nv">$item2</span><span class="o">-></span><span class="na">setName</span><span class="p">(</span><span class="s1">'Granola bars'</span><span class="p">)</span>
|
|
<span class="o">-></span><span class="na">setCurrency</span><span class="p">(</span><span class="s1">'USD'</span><span class="p">)</span>
|
|
<span class="o">-></span><span class="na">setQuantity</span><span class="p">(</span><span class="mi">5</span><span class="p">)</span>
|
|
<span class="o">-></span><span class="na">setPrice</span><span class="p">(</span><span class="s1">'2.00'</span><span class="p">);</span>
|
|
|
|
<span class="nv">$itemList</span> <span class="o">=</span> <span class="k">new</span> <span class="nx">ItemList</span><span class="p">();</span>
|
|
<span class="nv">$itemList</span><span class="o">-></span><span class="na">setItems</span><span class="p">(</span><span class="k">array</span><span class="p">(</span><span class="nv">$item1</span><span class="p">,</span> <span class="nv">$item2</span><span class="p">));</span></div></div></div><div class="segment"><div class="comments "><div class="wrapper"><h3 id="additional-payment-details">Additional payment details</h3>
|
|
|
|
<p>Use this optional field to set additional
|
|
payment information such as tax, shipping
|
|
charges etc.</p></div></div><div class="code"><div class="wrapper"><span class="nv">$details</span> <span class="o">=</span> <span class="k">new</span> <span class="nx">Details</span><span class="p">();</span>
|
|
<span class="nv">$details</span><span class="o">-></span><span class="na">setShipping</span><span class="p">(</span><span class="s1">'1.20'</span><span class="p">)</span>
|
|
<span class="o">-></span><span class="na">setTax</span><span class="p">(</span><span class="s1">'1.30'</span><span class="p">)</span>
|
|
<span class="o">-></span><span class="na">setSubtotal</span><span class="p">(</span><span class="s1">'17.50'</span><span class="p">);</span></div></div></div><div class="segment"><div class="comments "><div class="wrapper"><h3 id="amount">Amount</h3>
|
|
|
|
<p>Lets you specify a payment amount.
|
|
You can also specify additional details
|
|
such as shipping, tax.</p></div></div><div class="code"><div class="wrapper"><span class="nv">$amount</span> <span class="o">=</span> <span class="k">new</span> <span class="nx">Amount</span><span class="p">();</span>
|
|
<span class="nv">$amount</span><span class="o">-></span><span class="na">setCurrency</span><span class="p">(</span><span class="s2">"USD"</span><span class="p">)</span>
|
|
<span class="o">-></span><span class="na">setTotal</span><span class="p">(</span><span class="s2">"20.00"</span><span class="p">)</span>
|
|
<span class="o">-></span><span class="na">setDetails</span><span class="p">(</span><span class="nv">$details</span><span class="p">);</span></div></div></div><div class="segment"><div class="comments "><div class="wrapper"><h3 id="transaction">Transaction</h3>
|
|
|
|
<p>A transaction defines the contract of a
|
|
payment - what is the payment for and who
|
|
is fulfilling it. </p></div></div><div class="code"><div class="wrapper"><span class="nv">$transaction</span> <span class="o">=</span> <span class="k">new</span> <span class="nx">Transaction</span><span class="p">();</span>
|
|
<span class="nv">$transaction</span><span class="o">-></span><span class="na">setAmount</span><span class="p">(</span><span class="nv">$amount</span><span class="p">)</span>
|
|
<span class="o">-></span><span class="na">setItemList</span><span class="p">(</span><span class="nv">$itemList</span><span class="p">)</span>
|
|
<span class="o">-></span><span class="na">setDescription</span><span class="p">(</span><span class="s2">"Payment description"</span><span class="p">);</span></div></div></div><div class="segment"><div class="comments "><div class="wrapper"><h3 id="redirect-urls">Redirect urls</h3>
|
|
|
|
<p>Set the urls that the buyer must be redirected to after
|
|
payment approval/ cancellation.</p></div></div><div class="code"><div class="wrapper"><span class="nv">$baseUrl</span> <span class="o">=</span> <span class="nx">getBaseUrl</span><span class="p">();</span>
|
|
<span class="nv">$redirectUrls</span> <span class="o">=</span> <span class="k">new</span> <span class="nx">RedirectUrls</span><span class="p">();</span>
|
|
<span class="nv">$redirectUrls</span><span class="o">-></span><span class="na">setReturnUrl</span><span class="p">(</span><span class="s2">"</span><span class="si">$baseUrl</span><span class="s2">/ExecutePayment.php?success=true"</span><span class="p">)</span>
|
|
<span class="o">-></span><span class="na">setCancelUrl</span><span class="p">(</span><span class="s2">"</span><span class="si">$baseUrl</span><span class="s2">/ExecutePayment.php?success=false"</span><span class="p">);</span></div></div></div><div class="segment"><div class="comments "><div class="wrapper"><h3 id="payment">Payment</h3>
|
|
|
|
<p>A Payment Resource; create one using
|
|
the above types and intent set to 'sale'</p></div></div><div class="code"><div class="wrapper"><span class="nv">$payment</span> <span class="o">=</span> <span class="k">new</span> <span class="nx">Payment</span><span class="p">();</span>
|
|
<span class="nv">$payment</span><span class="o">-></span><span class="na">setIntent</span><span class="p">(</span><span class="s2">"sale"</span><span class="p">)</span>
|
|
<span class="o">-></span><span class="na">setPayer</span><span class="p">(</span><span class="nv">$payer</span><span class="p">)</span>
|
|
<span class="o">-></span><span class="na">setRedirectUrls</span><span class="p">(</span><span class="nv">$redirectUrls</span><span class="p">)</span>
|
|
<span class="o">-></span><span class="na">setTransactions</span><span class="p">(</span><span class="k">array</span><span class="p">(</span><span class="nv">$transaction</span><span class="p">));</span></div></div></div><div class="segment"><div class="comments "><div class="wrapper"><h3 id="create-payment">Create Payment</h3>
|
|
|
|
<p>Create a payment by calling the 'create' method
|
|
passing it a valid apiContext.
|
|
(See bootstrap.php for more on <code>ApiContext</code>)
|
|
The return object contains the state and the
|
|
url to which the buyer must be redirected to
|
|
for payment approval</p></div></div><div class="code"><div class="wrapper"><span class="k">try</span> <span class="p">{</span>
|
|
<span class="nv">$payment</span><span class="o">-></span><span class="na">create</span><span class="p">(</span><span class="nv">$apiContext</span><span class="p">);</span>
|
|
<span class="p">}</span> <span class="k">catch</span> <span class="p">(</span><span class="nx">PayPal\Exception\PPConnectionException</span> <span class="nv">$ex</span><span class="p">)</span> <span class="p">{</span>
|
|
<span class="k">echo</span> <span class="s2">"Exception: "</span> <span class="o">.</span> <span class="nv">$ex</span><span class="o">-></span><span class="na">getMessage</span><span class="p">()</span> <span class="o">.</span> <span class="nx">PHP_EOL</span><span class="p">;</span>
|
|
<span class="nb">var_dump</span><span class="p">(</span><span class="nv">$ex</span><span class="o">-></span><span class="na">getData</span><span class="p">());</span>
|
|
<span class="k">exit</span><span class="p">(</span><span class="mi">1</span><span class="p">);</span>
|
|
<span class="p">}</span></div></div></div><div class="segment"><div class="comments "><div class="wrapper"><h3 id="get-redirect-url">Get redirect url</h3>
|
|
|
|
<p>The API response provides the url that you must redirect
|
|
the buyer to. Retrieve the url from the $payment->getLinks()
|
|
method</p></div></div><div class="code"><div class="wrapper"><span class="k">foreach</span><span class="p">(</span><span class="nv">$payment</span><span class="o">-></span><span class="na">getLinks</span><span class="p">()</span> <span class="k">as</span> <span class="nv">$link</span><span class="p">)</span> <span class="p">{</span>
|
|
<span class="k">if</span><span class="p">(</span><span class="nv">$link</span><span class="o">-></span><span class="na">getRel</span><span class="p">()</span> <span class="o">==</span> <span class="s1">'approval_url'</span><span class="p">)</span> <span class="p">{</span>
|
|
<span class="nv">$redirectUrl</span> <span class="o">=</span> <span class="nv">$link</span><span class="o">-></span><span class="na">getHref</span><span class="p">();</span>
|
|
<span class="k">break</span><span class="p">;</span>
|
|
<span class="p">}</span>
|
|
<span class="p">}</span></div></div></div><div class="segment"><div class="comments "><div class="wrapper"><h3 id="redirect-buyer-to-paypal-website">Redirect buyer to PayPal website</h3>
|
|
|
|
<p>Save the payment id so that you can 'complete' the payment
|
|
once the buyer approves the payment and is redirected
|
|
back to your website.
|
|
It is not 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.</p></div></div><div class="code"><div class="wrapper"><span class="nv">$_SESSION</span><span class="p">[</span><span class="s1">'paymentId'</span><span class="p">]</span> <span class="o">=</span> <span class="nv">$payment</span><span class="o">-></span><span class="na">getId</span><span class="p">();</span>
|
|
<span class="k">if</span><span class="p">(</span><span class="nb">isset</span><span class="p">(</span><span class="nv">$redirectUrl</span><span class="p">))</span> <span class="p">{</span>
|
|
<span class="nx">header</span><span class="p">(</span><span class="s2">"Location: </span><span class="si">$redirectUrl</span><span class="s2">"</span><span class="p">);</span>
|
|
<span class="k">exit</span><span class="p">;</span>
|
|
<span class="p">}</span></div></div></div></div></body></html> |