ApplepayController.php 1.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. <?php
  2. namespace Longyi\Pay\Applepay\Http\Controllers;
  3. use Webkul\Checkout\Facades\Cart;
  4. use Webkul\Sales\Models\Order;
  5. use Webkul\Sales\Repositories\OrderRepository;
  6. use Webkul\Sales\Transformers\OrderResource;
  7. use Longyi\Pay\Applepay\Payment\Applepay;
  8. class ApplepayController extends Controller
  9. {
  10. /**
  11. * Create a new controller instance.
  12. *
  13. * @return void
  14. */
  15. public function __construct(
  16. protected OrderRepository $orderRepository,
  17. protected Applepay $applepay,
  18. ) {}
  19. public function hook()
  20. {
  21. $header = request()->header();
  22. $rawBody = request()->getContent();
  23. $event = json_decode($rawBody, true);
  24. $signatureResult = $this->applepay->webhookSignature($header, $event);
  25. if (!$signatureResult) {
  26. @header("HTTP/1.0 400 Bad Request");
  27. exit;
  28. }
  29. $orderId = $event['resource']['invoice_id'];
  30. $transactionId = $event['resource']['id'];
  31. $type = $event['event_type'];
  32. switch ($type) {
  33. case 'PAYMENT.CAPTURE.COMPLETED':
  34. $this->applepay->paymentSucceeded($orderId, $transactionId);
  35. @header("HTTP/1.0 200 ok");
  36. break;
  37. default:
  38. // 对于未知事件类型,记录日志但仍返回成功
  39. @header("HTTP/1.0 200 ok");
  40. break;
  41. }
  42. }
  43. }