Как получить доступ к Stripe в CodeIgniter 4

Я пытаюсь загрузить Stripe PHP API (установленный через Composer) в мое приложение CodeIgniter 4. Вот как выглядят мои файлы:

Composer.json

{
"description": "The CodeIgniter framework",
"name": "codeigniter/framework",
"type": "project",
"homepage": "https://codeigniter.com",
"license": "MIT",
"support": {
"forum": "http://forum.codeigniter.com/",
"wiki": "https://github.com/bcit-ci/CodeIgniter/wiki",
"slack": "https://codeigniterchat.slack.com",
"source": "https://github.com/bcit-ci/CodeIgniter"},
"require": {
"php": ">=5.3.7",
"stripe/stripe-php": "^6.7"},
"suggest": {
"paragonie/random_compat": "Provides better randomness in PHP 5.x"},
"require-dev": {
"mikey179/vfsStream": "1.1.*",
"phpunit/phpunit": "4.* || 5.*"}
}

autoload.php (только код, который имеет значение)

...
$classmap = ['Stripe' => '../../vendor/stripe/stripe-php/lib/Stripe.php'];
...

MyController.php

public function construct() {
parent::__construct($request, $response, $logger = null);
$this->db = \Config\Services::db();
$this->stripe = Stripe();
}

Запуск этого кода дает мне: вызов неопределенной функции App \ Controllers \ Base \ Stripe (). Я почти уверен, что все настроил правильно, и я просто неправильно вызываю Stripe с моего контроллера. Я взглянул на документы CodeIgniter 4, но не смог найти никакой помощи, и, поскольку CI4 настолько нов, что онлайн не так много. Любая помощь с благодарностью!

2

Решение

Если у вас есть автозагрузка, вам не нужно передавать ее в переменную, просто используйте ее.

Так что нашивка доступна через

\Stripe\[function]

От: https://stripe.com/docs/charges с дополнительным комментарием

// set your API key
\Stripe\Stripe::setApiKey("sk_test_your_key");

// Token is created using Checkout or Elements!
// Get the payment token ID submitted by the form:
$token = $_POST['stripeToken'];

// you set a variable when expecting a result/return
$charge = \Stripe\Charge::create([
'amount' => 999,
'currency' => 'usd',
'description' => 'Example charge',
'source' => $token,
]);
1

Другие решения

Вы должны включить autoload.php в контроллер.

include("path-to-autoload.php-in-vendor");
1

По вопросам рекламы [email protected]