Receive payments easily using Stripe and PHP

DDD
发布: 2024-09-13 22:15:07
原创
1109 人浏览过

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

以上是Receive payments easily using Stripe and PHP的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:dev.to
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责声明 Sitemap
PHP中文网:公益在线PHP培训,帮助PHP学习者快速成长!