Я использую Stripe и его webhooks. У меня есть собственный контроллер, который расширяет собственный контроллер Webhook Кассира. Я заметил, что у контроллера webhook Кассира есть метод, называемый handleWebhook
который проверяет, существует ли событие в Stripe:
public function handleWebhook()
{
$payload = $this->getJsonPayload();
if ( ! $this->eventExistsOnStripe($payload['id']))
{
return;
}
// More code...
}
protected function eventExistsOnStripe($id)
{
try
{
return ! is_null(Stripe_Event::retrieve($id));
}
catch (Exception $e)
{
return false;
}
}
Теперь класс Stripe_Event имеет функцию получения с apiKey в качестве одного из параметров по умолчанию NULL:
public static function retrieve($id, $apiKey=null)
{
$class = get_class();
return self::_scopedRetrieve($class, $id, $apiKey);
}
NULL apiKey не позволяет мне выполнять мой код, когда я получаю веб-крючок от Stripe. Это значение NULL намеренно, и я делаю что-то не так? Что мне не хватает?
Вам необходимо установить ключ Stripe API вручную. Я также расширил контроллер Cashho webhook и добавил этот конструктор:
public function __construct()
{
Stripe::setApiKey(Config::get('services.stripe.secret'));
Stripe::setApiVersion("2015-10-16"); // use your Stripe API version
}
Не забывайте use Config, Stripe
заявления в верхней части вашего класса.
Других решений пока нет …