PHP Laravel 5.6 - Ключ Stripe API не определен! сообщение об ошибке - PullRequest
0 голосов
/ 07 апреля 2020

Любая помощь или предложения будут высоко оценены! Я пытаюсь вернуть деньги в PHP Laravel 5.6 с включенной Stripe Sandbox. Я использую таблицу, и в этой таблице у меня есть два текстовых поля для определения теста Stripe и живых ключей.

Это код моих услуг в PHP Laravel:


return [

    /*
    |--------------------------------------------------------------------------
    | Third Party Services
    |--------------------------------------------------------------------------
    |
    | This file is for storing the credentials for third party services such
    | as Stripe, Mailgun, SparkPost and others. This file provides a sane
    | default location for this type of information, allowing packages
    | to have a conventional place to find your various credentials.
    |
    */

    'mailgun' => [
        'domain' => env('MAILGUN_DOMAIN'),
        'secret' => env('MAILGUN_SECRET'),
    ],

    'ses' => [
        'key' => env('SES_KEY'),
        'secret' => env('SES_SECRET'),
        'region' => 'us-east-1',
    ],

    'sparkpost' => [
        'secret' => env('SPARKPOST_SECRET'),
    ],

    'stripe' => [
        'model' => App\User::class,
        'key' => config('settings.stripe_sandbox_enabled') ? config('settings.stripe_test_key_pk') : config('settings.stripe_live_key_pk'),
        'secret' => config('settings.stripe_sandbox_enabled') ? config('settings.stripe_test_key_sk') : config('stripe_live_key_sk'),        
    ],

];

Вот строка кода для выдачи возмещения через Stripe в моем блейд-файле:


            //issue refund
            $invoice = $booking->invoice()->first();

            if($invoice['payment_method'] == __('app.credit_card'))
            {
                try {
                    //refund via stripe
                    if($booking->invoice->is_partial == 1){
                        if($booking->invoice->amount_left != 0){
                        //     print_r($booking->invoice->transaction_id);
                        // exit();
                            Stripe::refunds()->create($booking->invoice->transaction_id, $booking->invoice->first_payment, [
                                'reason' => 'requested_by_customer'
                            ]);
                        }
                        else{
                            $transaction_ids = explode(',', $booking->invoice->transaction_id);
                            Stripe::refunds()->create($transaction_ids[0], $booking->invoice->first_payment, [
                                    'reason' => 'requested_by_customer'
                                ]);
                            Stripe::refunds()->create($transaction_ids[1], $booking->invoice->second_payment, [
                                    'reason' => 'requested_by_customer'
                                ]);
                        }
                    }
                    else{
                        Stripe::refunds()->create($booking->invoice->transaction_id, $booking->invoice->amount , [
                            'reason' => 'requested_by_customer'
                        ]);
                    }

Ответы [ 2 ]

0 голосов
/ 07 апреля 2020

Эй, ребята, я на самом деле понял проблему в "vendor / cartalyst / stripe / src / Config. php" Я изменил следующий код:

    {
        $this->setVersion($version);

        $this->setApiKey($apiKey ?: getenv('STRIPE_API_KEY'));

        $this->setApiVersion($apiVersion ?: getenv('STRIPE_API_VERSION') ?: '2017-06-05');

        if (! $this->apiKey) {
            throw new \RuntimeException('The Stripe API key is not defined!');
        }
    }

На:

    {
        $this->setVersion($version);

        $this->setApiKey(config('settings.stripe_sandbox_enabled') ? config('settings.stripe_test_key_sk') : config('settings.stripe_live_key_sk'));
        $this->setApiVersion($apiVersion ?: getenv('STRIPE_API_VERSION') ?: '2017-06-05');

        if (! $this->apiKey) {
            throw new \RuntimeException('The Stripe API key is not defined!');
        }
    }

и теперь работает на 100%. Теперь я могу вернуть деньги в зависимости от типа используемого ключа. Спасибо всем, и я надеюсь, что это помогает кому-то, сталкивающемуся с подобными проблемами.

0 голосов
/ 07 апреля 2020

Я бы предложил установить правильный ключ Stripe в каждой среде и просто прочитать эти значения конфигурации в вашем файле конфигурации:

'stripe' => [
    'model' => App\User::class,
    'key' => env('STRIPE_KEY'),
    'secret' => env('STRIPE_SECRET'),     
],

В вашем случае это означало бы, что вы должны установить эти значения среды :

STRIPE_KEY=your-stripe-key
STRIPE_SECRET=your-stripe-secret

Вам больше не нужна переменная stripe_sandbox_enabled, когда вы используете ключ песочницы (тест), среда песочницы будет использоваться автоматически.

...