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

MVC PHP项目中Stripe回调URL指向public外目录的问题求助

问题分析与解决方案

核心问题

线上服务器为了安全,只会对外暴露public目录,你直接把Stripe回调URL指向public外的app目录下的PHP文件,服务器会拦截这类请求,直接跳转到框架默认的index.php。而本地测试因为服务器配置宽松(比如PHP内置服务器、本地Apache/Nginx没限制目录访问),所以能直接访问app下的文件。

解决步骤

1. 配置公开的路由入口

不要直接访问app里的视图文件,而是利用MVC的路由机制,在框架的路由规则里添加两个公开路由:

  • /payment-success 对应支付成功页面
  • /payment-cancel 对应支付取消页面

2. 更新Stripe回调URL

把配置改成指向公开路由,而不是app内的文件:

define('STRIPE_SUCCESS_URL', 'https://mywebsite.com/payment-success');
define('STRIPE_CANCEL_URL', 'https://mywebsite.com/payment-cancel');

3. 绑定控制器与视图

创建对应的控制器方法,处理回调逻辑并渲染视图:

// 示例控制器代码(根据你的MVC框架调整)
class PaymentController {
    public function success() {
        // 可选:验证Stripe回调的合法性(防止伪造请求)
        // 渲染app/views下的成功视图
        $this->view('payment-success');
    }

    public function cancel() {
        // 处理取消逻辑
        $this->view('payment-cancel');
    }
}

4. 确保服务器路由规则正确

  • Nginx配置(确保请求都转发到public/index.php):
location / {
    try_files $uri $uri/ /index.php?$query_string;
}
  • Apache配置(public目录下的.htaccess文件):
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L]

内容的提问来源于stack exchange,提问作者Leigh Harvey

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.18 00:44:54