Home  >  Article  >  Backend Development  >  Pay using PHP and PayPal API

Pay using PHP and PayPal API

王林
王林Original
2023-06-19 16:13:192877browse

With the increasing popularity of online transactions, payment methods are gradually diversifying, among which PayPal is very popular as a widely used payment method. If you want to use PayPal to process transactions on your website or application, then you can use PHP and PayPal API to complete the payment process easily.

The PayPal API is a set of programming interfaces for interacting with PayPal. Through the API, you can receive notifications from PayPal, query the latest transaction information, initiate payment requests and more. In this article, we will explain how to make payments using PHP and PayPal API. let's start!

Step 1: Obtain PayPal API Credentials

Before using the PayPal API, you need to obtain API credentials. This will allow you to communicate with PayPal via the API and conduct transactions. To obtain credentials, follow these steps:

1. Visit the PayPal Developer website, log into your account, and click Account Center.

2. Click "Profile".

3. Click "My Applications and Credentials".

4. Click "Create Credentials".

5. Select the API credential type (and so on):

- "Payment" represents the application from which you will receive payments.
- "Payouts" represent payments to users that your application will perform.
- "Subscriptions and Agreements" represent recurring payments that your application will perform.

6. Enter your application name and optional description, then click Create Credentials.

7. You will see your API credentials. Please keep them in a safe place as you will need them in your code.

Step 2: Connect to PayPal

Now you need to connect to the PayPal API in code. To connect to PayPal, use the following code:

$api_endpoint = 'https://api.sandbox.paypal.com'; // Sandbox endpoint
// $api_endpoint = 'https://api.paypal.com'; // Live endpoint
$client_id = 'YOUR_CLIENT_ID_HERE';
$client_secret = 'YOUR_CLIENT_SECRET_HERE';

 $ch = curl_init();
 curl_setopt($ch, CURLOPT_URL, $api_endpoint."/v1/oauth2/token");
 curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
 curl_setopt($ch, CURLOPT_POST, 1);
 curl_setopt($ch, CURLOPT_USERPWD, $client_id.":".$client_secret);
 curl_setopt($ch, CURLOPT_POSTFIELDS, "grant_type=client_credentials");
 
 $result = curl_exec($ch);
 $response = json_decode($result);
 
 $access_token = $response->access_token;

This will connect to the PayPal API in a test environment. To connect to the production environment, uncomment line 5 and comment line 4.

Step 3: Initiate a payment request

Now that you are connected to the PayPal API, you can initiate a payment request. To initiate a payment request, use the following code:

$post_data = '{
   "intent": "sale",
   "payer": {
     "payment_method": "paypal"
   },
   "transactions": [{
     "amount": {
       "total": "10.00",
       "currency": "USD"
     }
   }],
   "redirect_urls": {
     "return_url": "https://example.com/success",
     "cancel_url": "https://example.com/cancel"
   }
 }';

$ch = curl_init();
 curl_setopt($ch, CURLOPT_URL, $api_endpoint."/v1/payments/payment");
 curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
 curl_setopt($ch, CURLOPT_POST, 1);
 curl_setopt($ch, CURLOPT_POSTFIELDS, $post_data);
 
 $headers = array(
   "Content-Type: application/json",
   "Authorization: Bearer ".$access_token
 );
 curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
 
 $result = curl_exec($ch);
 $response = json_decode($result);

This will initiate a payment request for $10 and redirect the user to a success or cancellation page. You can change the amount and currency as needed.

Step 4: Obtain Payment Credentials

After the payment is successful, you need to obtain the PayPal payment credentials in order to save it to the database or otherwise process it. To get the payment credentials, use the following code:

$payment_id = $response->id;
 $payer_id = $_GET['PayerID'] // Payer ID from the URL parameter
 $execute_payment = '{
   "payer_id": "'.$payer_id.'"
 }';
 
 $ch = curl_init();
 curl_setopt($ch, CURLOPT_URL, $api_endpoint."/v1/payments/payment/".$payment_id."/execute");
 curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
 curl_setopt($ch, CURLOPT_POST, 1);
 curl_setopt($ch, CURLOPT_POSTFIELDS, $execute_payment);
 
 $headers = array(
   "Content-Type: application/json",
   "Authorization: Bearer ".$access_token
 );
 curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
 
 $result = curl_exec($ch);
 $response = json_decode($result);
 $transaction_id = $response->transactions[0]->related_resources[0]->sale->id;

This will get the payment ID and transaction ID, you can save them to the database or process them in other ways.

Step 5: Handle PayPal notifications

Finally, PayPal will send a notification to your application when a transaction occurs. You can use the following code to handle notifications:

$http_body = file_get_contents('php://input');
 $notification = json_decode($http_body);
 
 if($notification->event_type == "PAYMENT.SALE.COMPLETED") {
   $payment_id = $notification->resource->parent_payment;
   $sale_id = $notification->resource->id;
   // Process the completed sale
 } elseif($notification->event_type == "PAYMENT.SALE.REFUNDED") {
   $payment_id = $notification->resource->parent_payment;
   $refund_id = $notification->resource->id;
   // Process the refunded sale
 } else {
   // Handle other event types
 }

You can handle payment completion and refund notifications as needed.

Summary

By using PHP and the PayPal API, you can easily handle payment requests, obtain payment vouchers, and handle notifications. Using these code snippets, you can accept payments through PayPal and easily handle payment information in your own applications.

The above is the detailed content of Pay using PHP and PayPal API. For more information, please follow other related articles on the PHP Chinese website!

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn