我正在使用Stripe及其webhooks。我有自己的控制器,扩展了Cashier自己的Webhook控制器。我注意到Cashier的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);
}
当我从Stripe收到webhook时,NULL apiKey阻止我执行我的代码。这个NULL值是故意的吗?我做错了什么?我错过了什么?
答案 0 :(得分:0)
您需要手动设置Stripe API密钥。我还扩展了Cashier的webhook控制器并添加了这个构造函数:
public function __construct()
{
Stripe::setApiKey(Config::get('services.stripe.secret'));
Stripe::setApiVersion("2015-10-16"); // use your Stripe API version
}
不要忘记班级顶部的use Config, Stripe
语句。