Receive payments easily using Stripe and PHP
Introduction
Many times, our applications require to provide an easy way to make payments to purchase products or services. Stripe can be a good option to receive payments. In this post, we are going to learn how to create a stripe payment link so that you can redirect your users to those link to send their payments.
What is Stripe ?
Stripe is a technology company that provides online payment processing services, allowing businesses to accept payments over the internet. It offers a suite of tools and APIs that enable companies to manage online transactions, subscriptions, and other payment-related tasks.
Before starting to write code, we must understand the following Stripe components:
- Product: A product represents a good or service that you want to sell. It includes the name, description, and pricing details among others.
-
Price: A price is a specific pricing configuration for a product. It defines the amount that a customer will pay for a product, as well as any additional pricing details such as currency, billing cycle, and pricing tiers. As an example, for a service named "Community Membership" you could have two prices:
- Annual for which users would pay 50$ per year.
- Monthly for which users would pay 3.5$ per month.
Payment link: A payment link is a URL that allows customers to make a payment for a specific price. When a customer clicks on a payment link, they are redirected to a Stripe-hosted payment page where they can enter their payment information and complete the transaction. Payment links can be shared via email, messaging apps, or embedded on your website.
Prices also allow us to define the payment type which can be "recurring" or "one_time". For the "Community membership example", the annual payment could be one_type and the monthly one could be recurrent. Every year, the users would renew (or not) their memberships and would choose the payment type again.
Install the Stripe PHP component
The stripe php library can be installed using composer, so, to install it, you simply have to execute the following command in your project root folder:
composer require stripe/stripe-php
Retreiving the Developer API key
Before you can retrieve your api key, you must be registered on Stripe. One you have been registered, you can follow the next steps:
- Log-in to your Stripe account.
- Click on the gear icon in the top right corner of the screen and select "Developers".
- Click on "API keys" and you will be able to create them.
Create a Stripe Price
We can create the Stripe Price creating the product first and then the price or embedding the product name into the price options. Let's code it using the first way so we can see all the process.
$stripe = new \Stripe\StripeClient(<your_stripe_api_key>); $product = $stripe->products->create([ 'name' => 'Community Subscription', 'description' => 'A Subscription to our community', ]); $price = $stripe->prices->create([ 'currency' => 'usd', 'unit_amount' => 5025, 'product': $product->id, 'type' => 'one_time' ]);
Let's explain the above code step by step:
- We create a new StripeClient passing our stripe api keys.
- Then, we create a new product named "Community Subscription".
- Finally, we create a price for the recently created product with the following features:
- It uses de USD currency.
- It references the created product by its id.
- The payment will not be recurrent.
The unit_amount parameter deserves special attention. The Stripe documentation says the following about unit_amount: "A positive integer in cents (or 0 for a free price) representing how much to charge." This means that we must multiply the price by 100 to convert it to cents before passing it to the unit_amount parameter. For example, if the price is $10.99, we would set unit_amount to 1099. This is a common gotcha, so be sure to double-check your code to avoid any unexpected pricing issues.
For instance, if you have an "$amount" variable which holds a float value as amount, you could code something like this:
$formattedAmount = (int)($amount * 100);
Create the payment link
So far, we have a price created with a correctly formatted amount. Now its time to create the payment link.
$stripe = new \Stripe\StripeClient(<your_stripe_api_key>); $paymentLink = $stripe->paymentLinks->create([ 'line_items' => [ [ 'price' => $price->id, 'quantity' => 1, ] ], 'after_completion' => [ 'type' => 'redirect', 'redirect' => [ 'url' => <your redirect link> ] ] ]);
Let's explain it step by step:
- We create the StripeClient object as before.
- Then, we create the payment link by using the following options:
- line_items: Here you can include all the items we want to add for selling. In this case we only add the created price and we only sell one unit.
- after_completion: We instruct Stripe to redirect to an url after the payment is completed.
We could redirect to an intermediate url which could perform some stuff such as updating our database register payment. The following code shows a simple Symfony controller which would perform the required tasks and then would redirect to the final url where the user will see that the payment has been completed.
class StripeController extends AbstractController { #[Route('/confirm-payment', name: 'confirm-payment', methods: ['GET'])] public function confirmPayment(Request $request): Response { // Here you perform the necessary stuff $succeedUrl = '...'; return new RedirectResponse($succeedUrl); } }
After we have created the PaymentLink object, we can access the string payment url by the url property:
$paymentUrl = $paymentLink->url;
Conclusion
In this post we have learned how to configure our php backend to easily accept payments with stripe using the stripe-php component.
Processing the payments in your php backend offers some advantages such as:
- Keep sensitive payment information, such as the API keys, secure.
- Gives more control over the payment flow and allows for greater flexibility in handling different payment scenarios.
If you like my content and enjoy reading it and you are interested in learning more about PHP, you can read my ebook about how to create an operation-oriented API using PHP and the Symfony Framework. You can find it here: Building an Operation-Oriented Api using PHP and the Symfony Framework: A step-by-step guide
The above is the detailed content of Receive payments easily using Stripe and PHP. For more information, please follow other related articles on the PHP Chinese website!

Hot AI Tools

Undresser.AI Undress
AI-powered app for creating realistic nude photos

AI Clothes Remover
Online AI tool for removing clothes from photos.

Undress AI Tool
Undress images for free

Clothoff.io
AI clothes remover

Video Face Swap
Swap faces in any video effortlessly with our completely free AI face swap tool!

Hot Article

Hot Tools

Notepad++7.3.1
Easy-to-use and free code editor

SublimeText3 Chinese version
Chinese version, very easy to use

Zend Studio 13.0.1
Powerful PHP integrated development environment

Dreamweaver CS6
Visual web development tools

SublimeText3 Mac version
God-level code editing software (SublimeText3)

Hot Topics











In PHP, password_hash and password_verify functions should be used to implement secure password hashing, and MD5 or SHA1 should not be used. 1) password_hash generates a hash containing salt values to enhance security. 2) Password_verify verify password and ensure security by comparing hash values. 3) MD5 and SHA1 are vulnerable and lack salt values, and are not suitable for modern password security.

PHP and Python each have their own advantages, and choose according to project requirements. 1.PHP is suitable for web development, especially for rapid development and maintenance of websites. 2. Python is suitable for data science, machine learning and artificial intelligence, with concise syntax and suitable for beginners.

PHP is widely used in e-commerce, content management systems and API development. 1) E-commerce: used for shopping cart function and payment processing. 2) Content management system: used for dynamic content generation and user management. 3) API development: used for RESTful API development and API security. Through performance optimization and best practices, the efficiency and maintainability of PHP applications are improved.

PHP type prompts to improve code quality and readability. 1) Scalar type tips: Since PHP7.0, basic data types are allowed to be specified in function parameters, such as int, float, etc. 2) Return type prompt: Ensure the consistency of the function return value type. 3) Union type prompt: Since PHP8.0, multiple types are allowed to be specified in function parameters or return values. 4) Nullable type prompt: Allows to include null values and handle functions that may return null values.

PHP is still dynamic and still occupies an important position in the field of modern programming. 1) PHP's simplicity and powerful community support make it widely used in web development; 2) Its flexibility and stability make it outstanding in handling web forms, database operations and file processing; 3) PHP is constantly evolving and optimizing, suitable for beginners and experienced developers.

PHP is mainly procedural programming, but also supports object-oriented programming (OOP); Python supports a variety of paradigms, including OOP, functional and procedural programming. PHP is suitable for web development, and Python is suitable for a variety of applications such as data analysis and machine learning.

PHP and Python have their own advantages and disadvantages, and the choice depends on project needs and personal preferences. 1.PHP is suitable for rapid development and maintenance of large-scale web applications. 2. Python dominates the field of data science and machine learning.

Using preprocessing statements and PDO in PHP can effectively prevent SQL injection attacks. 1) Use PDO to connect to the database and set the error mode. 2) Create preprocessing statements through the prepare method and pass data using placeholders and execute methods. 3) Process query results and ensure the security and performance of the code.
