You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Laravel集成Stripe Apple Pay求助:无有效教程指引

Laravel 集成 Stripe Apple Pay 指南及疑问解答

一、是否必须使用 MacBook 开发?

不需要。开发阶段:

  • 无Mac设备时,可直接用Stripe Dashboard提供的测试模拟工具验证Apple Pay集成逻辑,无需真实Apple设备。
  • 仅当需要在真实Mac/iOS设备上做端到端测试时,才对应Apple设备;部署后,用户只要使用支持Apple Pay的设备(iPhone、iPad、Mac等)即可完成支付,和你的开发设备无关。

二、Laravel 集成 Stripe Apple Pay 实操步骤

1. 基础依赖与配置

  • 安装Stripe官方PHP SDK:
    composer require stripe/stripe-php
    
  • 在.env文件配置Stripe密钥:
    STRIPE_KEY=你的公钥
    STRIPE_SECRET=你的私钥
    

2. Stripe 后台配置

  • 登录Stripe后台,进入Payment Methods启用Apple Pay。
  • 将你的域名添加到Stripe的Apple Pay域名验证列表,按提示上传验证文件到Laravel项目的public目录完成域名校验。

3. 前端实现

在支付页面引入Stripe.js并创建Apple Pay按钮:

<script src="https://js.stripe.com/v3/"></script>
<div id="apple-pay-button"></div>
<script>
const stripe = Stripe('{{ env('STRIPE_KEY') }}');
const elements = stripe.elements();

// 创建Apple Pay元素并挂载
const applePayElement = elements.create('applePay');
applePayElement.mount('#apple-pay-button');

// 绑定支付触发事件
document.getElementById('apple-pay-button').addEventListener('click', async () => {
  // 从后端获取支付意图的客户端秘钥
  const res = await fetch('/create-payment-intent', { method: 'POST' });
  const { clientSecret } = await res.json();

  // 发起Apple Pay支付确认
  const { error } = await stripe.confirmApplePayPayment(
    clientSecret,
    {
      payment_method: { apple_pay: applePayElement }
    }
  );

  if (error) {
    console.error(error.message);
    // 这里可添加前端错误提示逻辑
  } else {
    // 支付成功后的跳转或提示
    window.location.href = '/payment-success';
  }
});
</script>

4. 后端路由与逻辑

在routes/web.php添加路由:

Route::post('/create-payment-intent', [PaymentController::class, 'createPaymentIntent']);

创建PaymentController对应方法:

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use Stripe\Stripe;
use Stripe\PaymentIntent;

class PaymentController extends Controller
{
    public function createPaymentIntent(Request $request)
    {
        Stripe::setApiKey(env('STRIPE_SECRET'));

        $paymentIntent = PaymentIntent::create([
            'amount' => 1000, // 单位为分,示例对应10美元
            'currency' => 'usd',
            'payment_method_types' => ['apple_pay'],
        ]);

        return response()->json(['clientSecret' => $paymentIntent->client_secret]);
    }
}

5. 测试与排查

  • 用Stripe测试工具模拟Apple Pay请求,在Stripe Dashboard查看支付记录。
  • 若按钮不显示:检查域名是否完成Stripe验证、页面是否为HTTPS环境(本地开发可使用Ngrok生成HTTPS链接)。
  • 若支付失败:查看Stripe Dashboard的日志,确认Payment Intent的状态和错误信息,检查金额、货币参数是否合规。

内容的提问来源于stack exchange,提问作者Ali Gill

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.25 12:52:15