REST API Reference - PayPal
Create a form such named 'createPayment.php' using following contents:
<?php session_start(); require './PaypalBase.php'; if(count($_POST) > 0) { $dataArray = array( "intent" => "sale", "payer" => array( "payment_method" => "credit_card", "funding_instruments" => array( array ( "credit_card" => array( "number" => $_POST["card"], "type" => "visa", "expire_month" => $_POST["cardMonth"], "expire_year" => $_POST["cardYear"], "cvv2" => $_POST["cardCvv"], "first_name" => $_POST["firstName"], "last_name" => $_POST["lastName"] ) ) ) ), "transactions" => array( array( "amount" => array( "total" => floatval($_POST["subTotal"]) + floatval($_POST["tax"]) + floatval($_POST["shipping"]), "currency" => $_POST["currency"], "details" => array( "subtotal" => floatval($_POST["subTotal"]), "tax" => floatval($_POST["tax"]), "shipping" => floatval($_POST["shipping"]) ) ) ) ) ); $paymentArray = PaypalBase::createPayment($dataArray); if($paymentArray != NULL) { PaypalBase::printR($paymentArray); return; } else { echo "<b>Error in payment</b>"; } } else { $_POST["card"] = "4417119669820331"; /* Test credit card */ $_POST["firstName"] = "Pritom"; $_POST["lastName"] = "Kumar Mondal"; $_POST["cardMonth"] = "06"; $_POST["cardYear"] = "2018"; $_POST["cardCvv"] = "123"; $_POST["subTotal"] = "20"; $_POST["tax"] = "10"; $_POST["shipping"] = "10"; $_POST["currency"] = "USD"; } ?> <form method="POST"> <table> <tr> <td colspan="2"><i>Card Information</i></td> </tr> <tr> <td>Card Number</td> <td><input name="card" value="<?php echo $_POST["card"]; ?>"/></td> </tr> <tr> <td>Card Name</td> <td> <input name="firstName" value="<?php echo $_POST["firstName"]; ?>"/> <input name="lastName" value="<?php echo $_POST["lastName"]; ?>"/> </td> </tr> <tr> <td>Card Expiry</td> <td> <input name="cardMonth" value="<?php echo $_POST["cardMonth"]; ?>"/> <input name="cardYear" value="<?php echo $_POST["cardYear"]; ?>"/> </td> </tr> <tr> <td>Card CVV</td> <td><input name="cardCvv" value="<?php echo $_POST["cardCvv"]; ?>"/></td> </tr> <tr> <td colspan="2"><i>Product Information</i></td> </tr> <tr> <td>Currency</td> <td><input name="currency" value="<?php echo $_POST["currency"]; ?>"/></td> </tr> <tr> <td>Sub Total</td> <td><input name="subTotal" value="<?php echo $_POST["subTotal"]; ?>"/></td> </tr> <tr> <td>Tax</td> <td><input name="tax" value="<?php echo $_POST["tax"]; ?>"/></td> </tr> <tr> <td>Shipping</td> <td><input name="shipping" value="<?php echo $_POST["shipping"]; ?>"/></td> </tr> <tr> <td></td> <td><input type="submit" value="Pay..."/></td> </tr> </table> </form>
createPayment method from 'PaypalBase.php'
<?php public static function createPayment($dataArray) { self::info("createpayment"); self::info("---------------------------------------------------------"); self::info("---------------------------------------------------------"); $accessToken = self::generateAccessToken(PPConstants::CLIENT_ID, PPConstants::CLIENT_SECRET); if(!$accessToken) { throw new Exception("Creating accessToken failed", NULL, NULL); } self::info("AccessToken: " . $accessToken); $headers = array( 'Content-Type: application/json', 'Content-Length: ' . strlen(json_encode($dataArray)), 'Authorization: Bearer '.$accessToken, "PayPal-Request-Id" => self::generateRequestId(), "User-Agent" => self::getUserAgent() ); $paymentUrl = PPConstants::REST_SANDBOX_ENDPOINT. PPConstants::PAYMENT_CREATE_URL; if(!self::$testMode) { $paymentUrl = PPConstants::REST_LIVE_ENDPOINT. PPConstants::PAYMENT_CREATE_URL; } self::info("Url: " . $paymentUrl); $result = self::makeCurlCall($paymentUrl, "POST", json_encode($dataArray), NULL, $headers); $returnResult = NULL; if($result != NULL && is_array($result) && isset($result["code"]) && isset($result["response"]) && $result["code"] == 201) { $result = json_decode($result["response"]); if($result != NULL) { $returnResult = $result; } } self::info("Result: "); if($returnResult) { self::info($returnResult); } else { self::info($result); } return $returnResult; } ?>
Output would be like this from valid payment:
stdClass Object
(
[id] => PAY-3H999973GM723222TKNAVENY
[create_time] => 2014-04-06T13:10:15Z
[update_time] => 2014-04-06T13:10:30Z
[state] => approved
[intent] => sale
[payer] => stdClass Object
(
[payment_method] => credit_card
[funding_instruments] => Array
(
[0] => stdClass Object
(
[credit_card] => stdClass Object
(
[type] => visa
[number] => xxxxxxxxxxxx0331
[expire_month] => 6
[expire_year] => 2018
[first_name] => Pritom
[last_name] => Kumar Mondal
)
)
)
)
[transactions] => Array
(
[0] => stdClass Object
(
[amount] => stdClass Object
(
[total] => 40.00
[currency] => USD
[details] => stdClass Object
(
[subtotal] => 20.00
[tax] => 10.00
[shipping] => 10.00
)
)
[related_resources] => Array
(
[0] => stdClass Object
(
[sale] => stdClass Object
(
[id] => 0HU38682D5581260D
[create_time] => 2014-04-06T13:10:15Z
[update_time] => 2014-04-06T13:10:30Z
[state] => completed
[amount] => stdClass Object
(
[total] => 40.00
[currency] => USD
)
[parent_payment] => PAY-3H999973GM723222TKNAVENY
[links] => Array
(
[0] => stdClass Object
(
[href] => https://api.sandbox.paypal.com/v1/payments/sale/0HU38682D5581260D
[rel] => self
[method] => GET
)
[1] => stdClass Object
(
[href] => https://api.sandbox.paypal.com/v1/payments/sale/0HU38682D5581260D/refund
[rel] => refund
[method] => POST
)
[2] => stdClass Object
(
[href] => https://api.sandbox.paypal.com/v1/payments/payment/PAY-3H999973GM723222TKNAVENY
[rel] => parent_payment
[method] => GET
)
)
)
)
)
)
)
[links] => Array
(
[0] => stdClass Object
(
[href] => https://api.sandbox.paypal.com/v1/payments/payment/PAY-3H999973GM723222TKNAVENY
[rel] => self
[method] => GET
)
)
)