Взаимодействие с Stripe API в Laravel среди Cashier
Хорошо. Я использую Laravel вместе с Stripe Checkout. Пожалуйста, подождите, пока я объясню, что происходит здесь.
Шаг 1.
У меня довольно простой процесс оформления заказа, при котором данные отправляются в Stripe. Вот мой JS-код, который настраивает Stripe Checkout:
stripe.redirectToCheckout({
clientReferenceId: data.returnData.orderID,
items: [@foreach($cartCollection as $item){sku: '{{$item->attributes->sku}}', quantity: {{$item->quantity}} },@endforeach],
successUrl: 'https://statecollegestrong.com/success?oid='+data.returnData.orderID,
cancelUrl: 'https://statecollegestrong.com/canceled?oid='+data.returnData.orderID
}).then(function (result) {
if (result.error) {
var displayError = document.getElementById('error-message');
displayError.textContent = result.error.message;
}
});
Шаг 2:
После отправки платежа в Stripe создается "списание". Однако данные, которые меня в основном беспокоят, - это clientReferenceId, который я передаю из своего javascript.
Шаг 3.
У меня настроен веб-перехватчик, который отправляет полезные данные по URL-адресу на моем сайте с подтверждением успешного списания. Я использую событие charge.succeeded, чтобы уведомить меня об успешном платеже.
Полезная нагрузка, которая отправляется на мой сайт, имеет идентификатор заряда, который мне нужен, чтобы сделать второй вызов Stripe API, чтобы получить client_reference_id, упомянутый ранее. Client_reference_id, который был добавлен к начислению, не возвращается с начислением. Удачный веб-перехватчик.
Для обработки полезной нагрузки, отправленной из Stripe Webhook, я использую этот пакет:https://github.com/spatie/laravel-stripe-webhooks
У меня Webhook "работает" в том смысле, что он отправляет полезные данные на мой сайт и вызывает метод.
Я могу взять и оценить эту полезную нагрузку следующим образом:
public function handle() {
$charge = $this->webhookCall->payload['data']['object']; //This gets me the details of the charge
$stripeOrderID = $charge->id; //This is the charge ID.
//Here, I need to write some code to reach out to the Stripe API, pass in the charge ID ($stripeOrderID), and get a second payload with details about that charge.
}
Я просто не знаю, какой код мне нужно написать, чтобы взаимодействовать с Stripe API.
Согласно документации API, мне нужно что-то вроде этого:
$ch = \Stripe\Charge::retrieve('ch_1GPWqkC9MZvQsUbFkKJQJ33e');
Но, естественно, это не сработает, потому что у меня нет доступного класса Stripe, поскольку я не использую Stripe PHP SDK. Вместо этого Laravel использует Cashier для такого рода вещей.
И вот в чем мое замешательство. Как я могу это воспроизвести:
$ch = \Stripe\Charge::retrieve('ch_1GPWqkC9MZvQsUbFkKJQJ33e');
Когда присутствует Laravel Cashier? Могу ли я игнорировать кассира и в любом случае использовать Stripe PHP SDK? Есть ли простая команда для этого с помощью Cashier? И как мне это сделать, зная, что все это происходит в задании, созданном для пакета обработки веб-перехватчиков?
Прошу прощения, если что-то из этого расплывчато или слишком абстрактно с деталями. Пожалуйста, не стесняйтесь спрашивать любые разъяснения, и я буду рад предоставить любую дополнительную информацию.
Спасибо!