Хорошо. Я использую Laravel вместе с Stripe Checkout. Пожалуйста, терпите меня, когда я объясняю процесс, происходящий здесь.
Шаг 1: У меня довольно простой процесс оформления заказа, который отправляет данные в Stripe. Вот мой JS код, который настраивает проверку полосы:
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, чтобы уведомить меня, что платеж был успешным.
Полезная нагрузка, которая отправляется на мой сайт, имеет идентификатор платежа, который мне нужен, чтобы сделать секунду вызов API Stripe для получения ранее указанного client_reference_id. Client_reference_id, который был добавлен к плате, не возвращается с веб-крючком charge.succeeded.
Для обработки полезных данных, отправленных с веб-крючка Stripe, я использую этот пакет: 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 вместо этого использует Кассир для такого рода вещей.
И вот где мое замешательство. Как я могу повторить это:
$ch = \Stripe\Charge::retrieve('ch_1GPWqkC9MZvQsUbFkKJQJ33e');
Когда присутствует Laravel Касса? Могу ли я игнорировать кассу и все равно использовать Stripe PHP SDK? Есть ли простая команда сделать это с помощью кассира? И как мне сделать это, зная, что все это происходит в задании, созданном для пакета обработки веб-крюков?
Я прошу прощения, если что-то из этого является расплывчатым или слишком абстрактным с деталями. Пожалуйста, не стесняйтесь задавать любые пояснения, и я с удовольствием предоставлю любую дополнительную информацию.
Большое спасибо!