我使用的是一种付款方式,成功时会返回一个类似mysite / payment / sucess的网址?auth = SDX53641sSDFSDF,但由于我使用的是codeigniter,因此url中的问号对我无效。 我尝试过路由,但它没有用。作为最后的手段,我创建了一个预系统挂钩,并从网址中取消设置GET部分,因为我必须设置
$config["uri_protocol"] = "REQUEST_URI";
它以这种方式工作,但我网站中的所有其他链接都没有按预期工作,尝试更改uri_protocol但无法以任何方式使其工作。 所以基本上我的问题是在我的网址中处理?auth = SDFSEFSDFXsdf5345sdf部分,每当付款方法使用上面提到的网址重定向到我的网站时,它会被重定向到主页而不是控制器内的功能。 我怎么能处理这个,我使用的是codeIgniter 1.7版本,并且无法找到任何方法。 请提出一些解决方案。
答案 0 :(得分:2)
我想我会扩展核心URI类,在application / libraries / MY_URI.php创建新文件,这将扩展CI_URI类,然后复制_fetch_uri_string方法,在这里你可以添加你的逻辑,如果$ _SERVER [' QUERY_STRING']存在:
class MY_URI extends CI_URI { function __construct() { parent::CI_URI(); } //Whatever this method returns the router class is using to map controller and action accordingly. function _fetch_uri_string() { if(isset($_SERVER['QUERY_STRING']) AND !empty($_GET['auth'])) { //Do your logic here, For example you can do something like if you are using REQUEST_URI $this->uri_string = 'payment/success/'.$_GET['auth']; return; //You will set the uri_string to controller/action/param the CI way and process further } //Here goes the rest of the method that you copied } }
另请注意,您必须对您的URL进行安全检查,我希望这对您有用,否则您可以尝试扩展CI_Router类或其他方法(尽管_set_routing很重要,但只需使用少量方法进行实验)。这两个类负责截获的URL并将它们映射到CI中的controller / action / params。
答案 1 :(得分:1)
答案 2 :(得分:0)
redirect(base_url()."controller_name/function_name");
答案 3 :(得分:0)
查看Stripe文档中的示例代码: https://stripe.com/docs/payments/checkout/set-up-a-subscription 可能会得出这样的结论:您只能像这样命名的GET参数检索一个checkout_session_id:
'success_url' => 'https://example.com/success?session_id={CHECKOUT_SESSION_ID}',
在使用.htaccess和配置设置(如先前的答案)并最终使其工作之后,我突然意识到DEVELOPER是由success_url格式而不是Stripe控制的。因此,可以通过以正常的干净Codeigniter格式指定成功网址来避免GET参数的所有问题,如下所示:
'success_url' => 'https://example.com/success/{CHECKOUT_SESSION_ID}',
在我的路由文件中,传入的CHECKOUT_SESSION_ID字符串通过以下路由传递到订阅控制器的checkout_success方法:
$route['success/(:any)'] = 'subscription/checkout_success/$1';
该方法接受$ checkout_session_id如下:
function checkout_success($checkout_session_id)
{
// Do something with the $checkout_session_id...
}
我是Stripe Checkout的新手,但这似乎简化了集成而又不违反Codeigniter的GET处理规则。