|
|
@@ -28,6 +28,8 @@ class SmartButtonController extends Controller
|
|
|
*/
|
|
|
public function createOrder()
|
|
|
{
|
|
|
+ $this->resolveApiCartContext();
|
|
|
+
|
|
|
try {
|
|
|
return response()->json($this->smartButton->createOrder($this->buildRequestBody()));
|
|
|
} catch (\Exception $e) {
|
|
|
@@ -42,8 +44,20 @@ class SmartButtonController extends Controller
|
|
|
*/
|
|
|
public function captureOrder()
|
|
|
{
|
|
|
+ $this->resolveApiCartContext();
|
|
|
+
|
|
|
try {
|
|
|
- $this->smartButton->captureOrder(request()->input('orderData.orderID'));
|
|
|
+ $orderId = request()->input('orderData.orderID')
|
|
|
+ ?? request()->input('orderData.orderId')
|
|
|
+ ?? request()->input('orderID')
|
|
|
+ ?? request()->input('orderId')
|
|
|
+ ?? request()->input('paypalOrderId');
|
|
|
+
|
|
|
+ if (empty($orderId)) {
|
|
|
+ throw new \Exception('Missing PayPal order id for capture.');
|
|
|
+ }
|
|
|
+
|
|
|
+ $this->smartButton->captureOrder($orderId);
|
|
|
|
|
|
return $this->saveOrder();
|
|
|
} catch (\Exception $e) {
|
|
|
@@ -297,4 +311,35 @@ class SmartButtonController extends Controller
|
|
|
throw new \Exception(trans('shop::app.checkout.cart.specify-payment-method'));
|
|
|
}
|
|
|
}
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Resolve cart context for BagistoApi requests using bearer cart token.
|
|
|
+ *
|
|
|
+ * @return void
|
|
|
+ */
|
|
|
+ protected function resolveApiCartContext()
|
|
|
+ {
|
|
|
+ if (! request()->is('api/*')) {
|
|
|
+ return;
|
|
|
+ }
|
|
|
+
|
|
|
+ if (
|
|
|
+ ! class_exists(\Webkul\BagistoApi\Facades\TokenHeaderFacade::class)
|
|
|
+ || ! class_exists(\Webkul\BagistoApi\Facades\CartTokenFacade::class)
|
|
|
+ ) {
|
|
|
+ return;
|
|
|
+ }
|
|
|
+
|
|
|
+ $token = \Webkul\BagistoApi\Facades\TokenHeaderFacade::getAuthorizationBearerToken(request());
|
|
|
+
|
|
|
+ if (empty($token)) {
|
|
|
+ return;
|
|
|
+ }
|
|
|
+
|
|
|
+ $cart = \Webkul\BagistoApi\Facades\CartTokenFacade::getCartByToken($token);
|
|
|
+
|
|
|
+ if ($cart) {
|
|
|
+ Cart::setCart($cart);
|
|
|
+ }
|
|
|
+ }
|
|
|
}
|