IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> PHP知识库 -> php实现Stripe支付 -> 正文阅读

[PHP知识库]php实现Stripe支付

Stripe支付 :https://dashboard.stripe.com/dashboard

?

1. 安装Stripe:

composer?require?stripe/stripe-php

2. 获取密钥:https://dashboard.stripe.com/test/apikeys

3. 创建产品:https://dashboard.stripe.com/test/products

4. php 代码:

官方发起支付请求示例:https://stripe.com/docs/checkout/quickstart

/**
 * stripe支付
 */
public function actionStripe()
{
    $_key = 'sk_test_51Jyo2iHnJH***********************************';

    // stripe 生成订单
    $url = 'https://www.baidu.com';
    \Stripe\Stripe::setApiKey($_key);
    $checkout_session = \Stripe\Checkout\Session::create([
        'line_items' => [[
            'price' => {{PRICE_ID}}, // 产品id
            'quantity' => 1,
        ]],
        'mode' => 'payment',
        'success_url' => $url . '/success.html',
        'cancel_url' => $url . '/cancel.html',
        'automatic_tax' => [
            'enabled' => true,
        ],
    ]);
    $arrGoodsInfo['payment_intent'] = $checkout_session->payment_intent;
    // 创建本地订单操作,并payment_intent保留
//    ......

    //$checkout_session->url stripe跳转支付url
    // $checkout_session->payment_intent是识别支付与通知关系的唯一凭证
    return ['url' => $checkout_session->url, 'id' => $checkout_session->id, 'payment_intent' => $checkout_session->payment_intent];
}

出现tax_behavior 相关问题时需查看产品是否配置税务信息

var_dump($checkout_session);结果

object(Stripe\Checkout\Session)#149 (40) {
  ["id"]=>
  string(66) "cs_test_a1sCxxxxJXHyXBgkPhsDTQV6Yw2AQtNL0ATkO2I6ekAUID"
  ["object"]=>
  string(16) "checkout.session"
  ["after_expiration"]=>
  NULL
  ["allow_promotion_codes"]=>
  NULL
  ["amount_subtotal"]=>
  int(99)
  ["amount_total"]=>
  int(99)
  ["automatic_tax"]=>
  object(Stripe\StripeObject)#160 (2) {
    ["enabled"]=>
    bool(false)
    ["status"]=>
    NULL
  }
  ["billing_address_collection"]=>
  NULL
  ["cancel_url"]=>
  string(31) "https://baidu.com/cancel"
  ["client_reference_id"]=>
  NULL
  ["consent"]=>
  NULL
  ["consent_collection"]=>
  NULL
  ["currency"]=>
  string(3) "usd"
  ["customer"]=>
  NULL
  ["customer_creation"]=>
  string(6) "always"
  ["customer_details"]=>
  NULL
  ["customer_email"]=>
  NULL
  ["expires_at"]=>
  int(1646384155)
  ["livemode"]=>
  bool(false)
  ["locale"]=>
  NULL
  ["metadata"]=>
  object(Stripe\StripeObject)#161 (0) {
  }
  ["mode"]=>
  string(7) "payment"
  ["payment_intent"]=>
  string(27) "pi_3xxxxxxxkIXvS1oQs8VqO"
  ["payment_link"]=>
  NULL
  ["payment_method_options"]=>
  array(0) {
  }
  ["payment_method_types"]=>
  array(1) {
    [0]=>
    string(4) "card"
  }
  ["payment_status"]=>
  string(6) "unpaid"
  ["phone_number_collection"]=>
  object(Stripe\StripeObject)#165 (1) {
    ["enabled"]=>
    bool(false)
  }
  ["recovered_from"]=>
  NULL
  ["setup_intent"]=>
  NULL
  ["shipping"]=>
  NULL
  ["shipping_address_collection"]=>
  NULL
  ["shipping_options"]=>
  array(0) {
  }
  ["shipping_rate"]=>
  NULL
  ["status"]=>
  string(4) "open"
  ["submit_type"]=>
  NULL
  ["subscription"]=>
  NULL
  ["success_url"]=>
  string(33) "https://baidu.com/success.html"
  ["total_details"]=>
  object(Stripe\StripeObject)#169 (3) {
    ["amount_discount"]=>
    int(0)
    ["amount_shipping"]=>
    int(0)
    ["amount_tax"]=>
    int(0)
  }
  ["url"]=>
  string(357) "https://checkout.stripe.com/pay/cs_test_xxxxbWppYWB3dic%2FcXdwYHgl"
}

链接跳转内容

官方提供得测试账号:https://stripe.com/docs/testing

支付成功会自动跳转到success.html

回调:

<?php
/**
 * 支付回调
 */
namespace api\controllers;

use yii\web\Controller;
use Yii;

class PayNotifyController extends Controller
{
    /**
     * stripe支付回调
     */
    public function actionStripe()
    {
        $_key = 'sk_test_51Jyo2iHnJH***********************************';
        \Stripe\Stripe::setApiKey($_key);
        $payload = @file_get_contents('php://input');
        $event = null;
        try {
            $event = \Stripe\Event::constructFrom(
                json_decode($payload, true)
            );
        } catch(\UnexpectedValueException $e) {
            // Invalid payload
            http_response_code(400);
            exit();
        }
        // Handle the event
        switch ($event->type) {
            case 'charge.succeeded':
                $succeeded = $event->data->object;
                $content = "=========".date('Y-m-d H:i:s',time())."==========\r\n";
                $content .= json_encode($succeeded);
                file_put_contents(dirname(__DIR__).'/runtime/logs/stripe_success.log',$content . "\r\n",FILE_APPEND);
                if ($succeeded->status == 'succeeded'){
                    $payment_intent = $succeeded->payment_intent;
                }
                break;
            default:
                echo 'Received unknown event type ' . $event->type;
                break;
        }
        return true;
    }
}

  PHP知识库 最新文章
Laravel 下实现 Google 2fa 验证
UUCTF WP
DASCTF10月 web
XAMPP任意命令执行提升权限漏洞(CVE-2020-
[GYCTF2020]Easyphp
iwebsec靶场 代码执行关卡通关笔记
多个线程同步执行,多个线程依次执行,多个
php 没事记录下常用方法 (TP5.1)
php之jwt
2021-09-18
上一篇文章      下一篇文章      查看所有文章
加:2022-03-08 22:08:09  更:2022-03-08 22:09:01 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/23 11:01:18-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码