| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071 |
- <?php
- namespace Longyi\Pay\Klarna\Http\Controllers;
- use Illuminate\Support\Facades\Log;
- use Longyi\Pay\Klarna\Payment\Klarna;
- use Webkul\Checkout\Facades\Cart;
- use Webkul\Sales\Models\Order;
- use Webkul\Sales\Repositories\OrderRepository;
- use Webkul\Sales\Transformers\OrderResource;
- use Longyi\Pay\AwxKlarna\Payment\AwxKlarna;
- class KlarnaController extends Controller
- {
- /**
- * Create a new controller instance.
- *
- * @return void
- */
- public function __construct(
- protected OrderRepository $orderRepository,
- protected Klarna $klarna,
- ) {}
- public function hook()
- {
- $rawBody = request()->getContent();
- $orderId = request()->get('orderId', 0);
- $secretToken = request()->get('secretToken', '');
- Log::channel('payment')->info('klarna hook request received', [
- 'query' => request()->query(),
- 'order_id' => $orderId,
- 'secretToken' => $secretToken,
- 'raw_body' => $rawBody,
- ]);
- // 验证签名
- if (!$this->klarna->verifySignature($orderId, $secretToken)) {
- @header("HTTP/1.0 400 Bad Request");
- exit;
- }
- if (empty($orderId)) {
- @header("HTTP/1.0 400 Bad Request");
- exit;
- }
- $order = $this->orderRepository->find($orderId);
- if (empty($order)) {
- @header("HTTP/1.0 400 Bad Request");
- exit;
- }
- $event = json_decode($rawBody);
- if ($event->merchant_reference2 != $orderId) {
- @header("HTTP/1.0 400 Bad Request");
- exit;
- }
- try {
- $this->klarna->paymentSucceeded($order, $event->authorization_token);
- @header("HTTP/1.0 200 ok");
- } catch (\Exception $e) {
- //记录日志
- Log::channel('payment')->error('klarna hook error', [
- 'order' => $order,
- 'event' => $event,
- 'error' => $e->getMessage()
- ]);
- @header("HTTP/1.0 400 Bad Request");
- exit;
- }
- }
- }
|