llp пре 1 дан
родитељ
комит
385ab8c82a

+ 76 - 68
bootstrap/cache/services.php

@@ -60,40 +60,44 @@
     56 => 'Longyi\\RewardPoints\\Providers\\RewardPointsServiceProvider',
     57 => 'Longyi\\Member\\Providers\\MemberServiceProvider',
     58 => 'Longyi\\Gift\\Providers\\GiftServiceProvider',
-    59 => 'Webkul\\Attribute\\Providers\\AttributeServiceProvider',
-    60 => 'Webkul\\BookingProduct\\Providers\\BookingProductServiceProvider',
-    61 => 'Webkul\\CMS\\Providers\\CMSServiceProvider',
-    62 => 'Webkul\\CartRule\\Providers\\CartRuleServiceProvider',
-    63 => 'Webkul\\CatalogRule\\Providers\\CatalogRuleServiceProvider',
-    64 => 'Webkul\\Category\\Providers\\CategoryServiceProvider',
-    65 => 'Webkul\\Checkout\\Providers\\CheckoutServiceProvider',
-    66 => 'Webkul\\Core\\Providers\\CoreServiceProvider',
-    67 => 'Webkul\\Core\\Providers\\EnvValidatorServiceProvider',
-    68 => 'Webkul\\Customer\\Providers\\CustomerServiceProvider',
-    69 => 'Webkul\\DataGrid\\Providers\\DataGridServiceProvider',
-    70 => 'Webkul\\DataTransfer\\Providers\\DataTransferServiceProvider',
-    71 => 'Webkul\\DebugBar\\Providers\\DebugBarServiceProvider',
-    72 => 'Webkul\\FPC\\Providers\\FPCServiceProvider',
-    73 => 'Webkul\\GDPR\\Providers\\GDPRServiceProvider',
-    74 => 'Webkul\\Installer\\Providers\\InstallerServiceProvider',
-    75 => 'Webkul\\Inventory\\Providers\\InventoryServiceProvider',
-    76 => 'Webkul\\MagicAI\\Providers\\MagicAIServiceProvider',
-    77 => 'Webkul\\Marketing\\Providers\\MarketingServiceProvider',
-    78 => 'Webkul\\Notification\\Providers\\NotificationServiceProvider',
-    79 => 'Webkul\\Payment\\Providers\\PaymentServiceProvider',
-    80 => 'Webkul\\Paypal\\Providers\\PaypalServiceProvider',
-    81 => 'Webkul\\Product\\Providers\\ProductServiceProvider',
-    82 => 'Webkul\\Rule\\Providers\\RuleServiceProvider',
-    83 => 'Webkul\\Sales\\Providers\\SalesServiceProvider',
-    84 => 'Webkul\\Shipping\\Providers\\ShippingServiceProvider',
-    85 => 'Webkul\\Shop\\Providers\\ShopServiceProvider',
-    86 => 'Webkul\\Sitemap\\Providers\\SitemapServiceProvider',
-    87 => 'Webkul\\SocialLogin\\Providers\\SocialLoginServiceProvider',
-    88 => 'Webkul\\SocialShare\\Providers\\SocialShareServiceProvider',
-    89 => 'Webkul\\Tax\\Providers\\TaxServiceProvider',
-    90 => 'Webkul\\Theme\\Providers\\ThemeServiceProvider',
-    91 => 'Webkul\\User\\Providers\\UserServiceProvider',
-    92 => 'Webkul\\BagistoApi\\Providers\\BagistoApiServiceProvider',
+    59 => 'Longyi\\Pay\\AwxAfterpay\\Providers\\AwxAfterpayServiceProvider',
+    60 => 'Longyi\\Pay\\AwxKlarna\\Providers\\AwxKlarnaServiceProvider',
+    61 => 'Longyi\\Pay\\Applepay\\Providers\\ApplepayServiceProvider',
+    62 => 'Longyi\\Pay\\Airwallex\\Providers\\AirwallexServiceProvider',
+    63 => 'Webkul\\Attribute\\Providers\\AttributeServiceProvider',
+    64 => 'Webkul\\BookingProduct\\Providers\\BookingProductServiceProvider',
+    65 => 'Webkul\\CMS\\Providers\\CMSServiceProvider',
+    66 => 'Webkul\\CartRule\\Providers\\CartRuleServiceProvider',
+    67 => 'Webkul\\CatalogRule\\Providers\\CatalogRuleServiceProvider',
+    68 => 'Webkul\\Category\\Providers\\CategoryServiceProvider',
+    69 => 'Webkul\\Checkout\\Providers\\CheckoutServiceProvider',
+    70 => 'Webkul\\Core\\Providers\\CoreServiceProvider',
+    71 => 'Webkul\\Core\\Providers\\EnvValidatorServiceProvider',
+    72 => 'Webkul\\Customer\\Providers\\CustomerServiceProvider',
+    73 => 'Webkul\\DataGrid\\Providers\\DataGridServiceProvider',
+    74 => 'Webkul\\DataTransfer\\Providers\\DataTransferServiceProvider',
+    75 => 'Webkul\\DebugBar\\Providers\\DebugBarServiceProvider',
+    76 => 'Webkul\\FPC\\Providers\\FPCServiceProvider',
+    77 => 'Webkul\\GDPR\\Providers\\GDPRServiceProvider',
+    78 => 'Webkul\\Installer\\Providers\\InstallerServiceProvider',
+    79 => 'Webkul\\Inventory\\Providers\\InventoryServiceProvider',
+    80 => 'Webkul\\MagicAI\\Providers\\MagicAIServiceProvider',
+    81 => 'Webkul\\Marketing\\Providers\\MarketingServiceProvider',
+    82 => 'Webkul\\Notification\\Providers\\NotificationServiceProvider',
+    83 => 'Webkul\\Payment\\Providers\\PaymentServiceProvider',
+    84 => 'Webkul\\Paypal\\Providers\\PaypalServiceProvider',
+    85 => 'Webkul\\Product\\Providers\\ProductServiceProvider',
+    86 => 'Webkul\\Rule\\Providers\\RuleServiceProvider',
+    87 => 'Webkul\\Sales\\Providers\\SalesServiceProvider',
+    88 => 'Webkul\\Shipping\\Providers\\ShippingServiceProvider',
+    89 => 'Webkul\\Shop\\Providers\\ShopServiceProvider',
+    90 => 'Webkul\\Sitemap\\Providers\\SitemapServiceProvider',
+    91 => 'Webkul\\SocialLogin\\Providers\\SocialLoginServiceProvider',
+    92 => 'Webkul\\SocialShare\\Providers\\SocialShareServiceProvider',
+    93 => 'Webkul\\Tax\\Providers\\TaxServiceProvider',
+    94 => 'Webkul\\Theme\\Providers\\ThemeServiceProvider',
+    95 => 'Webkul\\User\\Providers\\UserServiceProvider',
+    96 => 'Webkul\\BagistoApi\\Providers\\BagistoApiServiceProvider',
   ),
   'eager' => 
   array (
@@ -139,40 +143,44 @@
     39 => 'Longyi\\RewardPoints\\Providers\\RewardPointsServiceProvider',
     40 => 'Longyi\\Member\\Providers\\MemberServiceProvider',
     41 => 'Longyi\\Gift\\Providers\\GiftServiceProvider',
-    42 => 'Webkul\\Attribute\\Providers\\AttributeServiceProvider',
-    43 => 'Webkul\\BookingProduct\\Providers\\BookingProductServiceProvider',
-    44 => 'Webkul\\CMS\\Providers\\CMSServiceProvider',
-    45 => 'Webkul\\CartRule\\Providers\\CartRuleServiceProvider',
-    46 => 'Webkul\\CatalogRule\\Providers\\CatalogRuleServiceProvider',
-    47 => 'Webkul\\Category\\Providers\\CategoryServiceProvider',
-    48 => 'Webkul\\Checkout\\Providers\\CheckoutServiceProvider',
-    49 => 'Webkul\\Core\\Providers\\CoreServiceProvider',
-    50 => 'Webkul\\Core\\Providers\\EnvValidatorServiceProvider',
-    51 => 'Webkul\\Customer\\Providers\\CustomerServiceProvider',
-    52 => 'Webkul\\DataGrid\\Providers\\DataGridServiceProvider',
-    53 => 'Webkul\\DataTransfer\\Providers\\DataTransferServiceProvider',
-    54 => 'Webkul\\DebugBar\\Providers\\DebugBarServiceProvider',
-    55 => 'Webkul\\FPC\\Providers\\FPCServiceProvider',
-    56 => 'Webkul\\GDPR\\Providers\\GDPRServiceProvider',
-    57 => 'Webkul\\Installer\\Providers\\InstallerServiceProvider',
-    58 => 'Webkul\\Inventory\\Providers\\InventoryServiceProvider',
-    59 => 'Webkul\\MagicAI\\Providers\\MagicAIServiceProvider',
-    60 => 'Webkul\\Marketing\\Providers\\MarketingServiceProvider',
-    61 => 'Webkul\\Notification\\Providers\\NotificationServiceProvider',
-    62 => 'Webkul\\Payment\\Providers\\PaymentServiceProvider',
-    63 => 'Webkul\\Paypal\\Providers\\PaypalServiceProvider',
-    64 => 'Webkul\\Product\\Providers\\ProductServiceProvider',
-    65 => 'Webkul\\Rule\\Providers\\RuleServiceProvider',
-    66 => 'Webkul\\Sales\\Providers\\SalesServiceProvider',
-    67 => 'Webkul\\Shipping\\Providers\\ShippingServiceProvider',
-    68 => 'Webkul\\Shop\\Providers\\ShopServiceProvider',
-    69 => 'Webkul\\Sitemap\\Providers\\SitemapServiceProvider',
-    70 => 'Webkul\\SocialLogin\\Providers\\SocialLoginServiceProvider',
-    71 => 'Webkul\\SocialShare\\Providers\\SocialShareServiceProvider',
-    72 => 'Webkul\\Tax\\Providers\\TaxServiceProvider',
-    73 => 'Webkul\\Theme\\Providers\\ThemeServiceProvider',
-    74 => 'Webkul\\User\\Providers\\UserServiceProvider',
-    75 => 'Webkul\\BagistoApi\\Providers\\BagistoApiServiceProvider',
+    42 => 'Longyi\\Pay\\AwxAfterpay\\Providers\\AwxAfterpayServiceProvider',
+    43 => 'Longyi\\Pay\\AwxKlarna\\Providers\\AwxKlarnaServiceProvider',
+    44 => 'Longyi\\Pay\\Applepay\\Providers\\ApplepayServiceProvider',
+    45 => 'Longyi\\Pay\\Airwallex\\Providers\\AirwallexServiceProvider',
+    46 => 'Webkul\\Attribute\\Providers\\AttributeServiceProvider',
+    47 => 'Webkul\\BookingProduct\\Providers\\BookingProductServiceProvider',
+    48 => 'Webkul\\CMS\\Providers\\CMSServiceProvider',
+    49 => 'Webkul\\CartRule\\Providers\\CartRuleServiceProvider',
+    50 => 'Webkul\\CatalogRule\\Providers\\CatalogRuleServiceProvider',
+    51 => 'Webkul\\Category\\Providers\\CategoryServiceProvider',
+    52 => 'Webkul\\Checkout\\Providers\\CheckoutServiceProvider',
+    53 => 'Webkul\\Core\\Providers\\CoreServiceProvider',
+    54 => 'Webkul\\Core\\Providers\\EnvValidatorServiceProvider',
+    55 => 'Webkul\\Customer\\Providers\\CustomerServiceProvider',
+    56 => 'Webkul\\DataGrid\\Providers\\DataGridServiceProvider',
+    57 => 'Webkul\\DataTransfer\\Providers\\DataTransferServiceProvider',
+    58 => 'Webkul\\DebugBar\\Providers\\DebugBarServiceProvider',
+    59 => 'Webkul\\FPC\\Providers\\FPCServiceProvider',
+    60 => 'Webkul\\GDPR\\Providers\\GDPRServiceProvider',
+    61 => 'Webkul\\Installer\\Providers\\InstallerServiceProvider',
+    62 => 'Webkul\\Inventory\\Providers\\InventoryServiceProvider',
+    63 => 'Webkul\\MagicAI\\Providers\\MagicAIServiceProvider',
+    64 => 'Webkul\\Marketing\\Providers\\MarketingServiceProvider',
+    65 => 'Webkul\\Notification\\Providers\\NotificationServiceProvider',
+    66 => 'Webkul\\Payment\\Providers\\PaymentServiceProvider',
+    67 => 'Webkul\\Paypal\\Providers\\PaypalServiceProvider',
+    68 => 'Webkul\\Product\\Providers\\ProductServiceProvider',
+    69 => 'Webkul\\Rule\\Providers\\RuleServiceProvider',
+    70 => 'Webkul\\Sales\\Providers\\SalesServiceProvider',
+    71 => 'Webkul\\Shipping\\Providers\\ShippingServiceProvider',
+    72 => 'Webkul\\Shop\\Providers\\ShopServiceProvider',
+    73 => 'Webkul\\Sitemap\\Providers\\SitemapServiceProvider',
+    74 => 'Webkul\\SocialLogin\\Providers\\SocialLoginServiceProvider',
+    75 => 'Webkul\\SocialShare\\Providers\\SocialShareServiceProvider',
+    76 => 'Webkul\\Tax\\Providers\\TaxServiceProvider',
+    77 => 'Webkul\\Theme\\Providers\\ThemeServiceProvider',
+    78 => 'Webkul\\User\\Providers\\UserServiceProvider',
+    79 => 'Webkul\\BagistoApi\\Providers\\BagistoApiServiceProvider',
   ),
   'deferred' => 
   array (

+ 30 - 21
packages/Longyi/Pay/Airwallex/src/Payment/Airwallex.php

@@ -20,6 +20,7 @@ class Airwallex extends Payment
     protected $clientId;
     protected $apikey;
     protected $secret;
+    protected $currentOrder;
     protected $prefix = 'AS';
     protected $tokenCacheKey = 'airwallex_airwallex_token';
     protected $tokenUrl = 'https://api-demo.airwallex.com/api/v1/authentication/login';
@@ -49,52 +50,60 @@ class Airwallex extends Payment
     public function getRedirectUrl()
     {
     }
-
-    public function getPaymentData($cart)
+    public function setOrder($order = null): self
+    {
+        $this->currentOrder = $order;
+        return $this;
+    }
+    public function getOrder()
+    {
+        return $this->currentOrder;
+    }
+    public function createGatewayOrder()
     {
-        return $this->createIntents($cart, ['merchantOrderId' => $cart->id]);
+        return $this->createIntents($this->getOrder(), ['merchantOrderId' => $this->getOrder()->increment_id]);
     }
 
-    public function createIntents($cart, $override)
+    public function createIntents($order, $override)
     {
-        $shop = $cart['shipping_address'];
+        $shop = $order->shipping_address;
         $products = [];
-        foreach ($cart->items as $item) {
+        foreach ($order->items as $item) {
             $data = [
                 'name' => $item->name,
                 'desc' => $item->name,
                 'unit_price' => (float) $item->price,
                 'sku' => $item->sku,
-                'quantity' => $item->quantity
+                'quantity' => $item->qty_ordered
             ];
             array_push($products, $data);
         }
-        $grandTotal = round($cart['grand_total'], 2);
+        $grandTotal = round($order->grand_total, 2);
         $data = [
             'request_id' => $this->createUuid(),
             'amount' => $grandTotal,
             'descriptor' => $this->prefix,
             'merchant_order_id' => $this->prefix . $override['merchantOrderId'],
-            'currency' => $cart['order_currency_code'],
+            'currency' => $order->order_currency_code,
             'customer' => [
-                'email' => $cart['customer_email'],
-                'first_name' => $cart['customer_first_name'],
-                'last_name' => $cart['customer_last_name']
+                'email' => $order->customer_email,
+                'first_name' => $order->customer_first_name,
+                'last_name' => $order->customer_last_name
             ],
             'order' => [
                 'products' => $products,
                 'shipping' => [
                     'address' => [
-                        'city' => $shop['city'],
-                        'postcode' => $shop['postcode'],
-                        'state' => $shop['state'],
-                        'country_code'=> $shop['country'],
-                        'street' =>$shop['address'],
+                        'city' => $shop->city,
+                        'postcode' => $shop->postcode,
+                        'state' => $shop->state,
+                        'country_code'=> $shop->country,
+                        'street' => $shop->address,
                     ],
-                    'first_name' => $shop['first_name'],
-                    'last_name' => $shop['last_name'],
-                    'phone_number' => $shop['phone'],
-                    'email' => $shop['email']
+                    'first_name' => $shop->first_name,
+                    'last_name' => $shop->last_name,
+                    'phone_number' => $shop->phone,
+                    'email' => $shop->email
                 ],
             ],
         ];

+ 2 - 0
packages/Longyi/Pay/Airwallex/src/Providers/AirwallexServiceProvider.php

@@ -19,6 +19,8 @@ class AirwallexServiceProvider extends ServiceProvider
      */
     public function boot(): void
     {
+        // 加载路由
+        $this->loadRoutesFrom(__DIR__ . '/../Http/routes.php');
     }
 
     /**

+ 35 - 21
packages/Longyi/Pay/Applepay/src/Payment/Applepay.php

@@ -16,6 +16,7 @@ class Applepay extends Payment
     protected $clientId;
     protected $apikey;
     protected $secret;
+    protected $currentOrder;
     protected $prefix = 'QQS';
     public $createOrderApi = 'https://api-m.sandbox.paypal.com/v2/checkout/orders';
     public $captureOrderApi = 'https://api-m.sandbox.paypal.com/v2/checkout/orders/{id}/capture';
@@ -47,48 +48,61 @@ class Applepay extends Payment
     {
 
     }
+    public function setOrder($order = null): self
+    {
+        $this->currentOrder = $order;
 
-    public function createOrder($cart)
+        return $this;
+    }
+    public function getOrder()
+    {
+        return $this->currentOrder;
+    }
+    public function createGatewayOrder()
+    {
+        return $this->createOrder($this->getOrder());
+    }
+    public function createOrder($order)
     {
-        $billingAddressLines = $this->getAddressLines($cart->billing_address->address);
+        $billingAddressLines = $this->getAddressLines($order->billing_address->address);
         $data = [
             'intent' => 'CAPTURE',
             'purchase_units' => [
                 [
                     'amount' => [
-                        'currency_code' => $cart->cart_currency_code,
-                        'value' => $this->formatCurrencyValue((float) $cart->sub_total + $cart->tax_total + ($cart->selected_shipping_rate ? $cart->selected_shipping_rate->price : 0) - $cart->discount_amount),
+                        'currency_code' => $order->order_currency_code,
+                        'value' => $this->formatCurrencyValue((float) $order->sub_total + $order->tax_total + ($order->selected_shipping_rate ? $order->selected_shipping_rate->price : 0) - $order->discount_amount),
                         'breakdown' => [
                             'item_total' => [
-                                'currency_code' => $cart->cart_currency_code,
-                                'value'         => $this->formatCurrencyValue((float) $cart->sub_total),
+                                'currency_code' => $order->order_currency_code,
+                                'value'         => $this->formatCurrencyValue((float) $order->sub_total),
                             ],
 
                             'shipping'   => [
-                                'currency_code' => $cart->cart_currency_code,
-                                'value'         => $this->formatCurrencyValue((float) ($cart->selected_shipping_rate ? $cart->selected_shipping_rate->price : 0)),
+                                'currency_code' => $order->order_currency_code,
+                                'value'         => $this->formatCurrencyValue((float) ($order->selected_shipping_rate ? $order->selected_shipping_rate->price : 0)),
                             ],
 
                             'tax_total'  => [
-                                'currency_code' => $cart->cart_currency_code,
-                                'value'         => $this->formatCurrencyValue((float) $cart->tax_total),
+                                'currency_code' => $order->order_currency_code,
+                                'value'         => $this->formatCurrencyValue((float) $order->tax_total),
                             ],
 
                             'discount'   => [
-                                'currency_code' => $cart->cart_currency_code,
-                                'value'         => $this->formatCurrencyValue((float) $cart->discount_amount),
+                                'currency_code' => $order->order_currency_code,
+                                'value'         => $this->formatCurrencyValue((float) $order->discount_amount),
                             ],
                         ],
                     ],
-                    'items' => $this->getLineItems($cart),
+                    'items' => $this->getLineItems($order),
                     'shipping' => [
                         'address' => [
                             'address_line_1' => current($billingAddressLines),
                             'address_line_2' => last($billingAddressLines),
-                            'admin_area_2'   => $cart->shipping_address->city,
-                            'admin_area_1'   => $cart->shipping_address->state,
-                            'postal_code'    => $cart->shipping_address->postcode,
-                            'country_code'   => $cart->shipping_address->country,
+                            'admin_area_2'   => $order->shipping_address->city,
+                            'admin_area_1'   => $order->shipping_address->state,
+                            'postal_code'    => $order->shipping_address->postcode,
+                            'country_code'   => $order->shipping_address->country,
                         ],
                     ],
                 ]
@@ -114,17 +128,17 @@ class Applepay extends Payment
      * @param  string  $cart
      * @return array
      */
-    protected function getLineItems($cart)
+    protected function getLineItems($order)
     {
         $lineItems = [];
 
-        foreach ($cart->items as $item) {
+        foreach ($order->items as $item) {
             $lineItems[] = [
                 'unit_amount' => [
-                    'currency_code' => $cart->cart_currency_code,
+                    'currency_code' => $order->order_currency_code,
                     'value'         => $this->formatCurrencyValue((float) $item->price),
                 ],
-                'quantity'    => $item->quantity,
+                'quantity'    => $item->qty_ordered,
                 'name'        => $item->name,
                 'sku'         => $item->sku,
                 'category'    => $item->getTypeInstance()->isStockable() ? 'PHYSICAL_GOODS' : 'DIGITAL_GOODS',

+ 44 - 31
packages/Longyi/Pay/AwxAfterpay/src/Payment/AwxAfterpay.php

@@ -14,6 +14,7 @@ class AwxAfterpay extends Payment
     protected $clientId;
     protected $apikey;
     protected $secret;
+    protected $currentOrder;
     protected $prefix = 'QQS';
     protected $tokenCacheKey = 'airwallex_klarna_token';
     protected $tokenUrl = 'https://api-demo.airwallex.com/api/v1/authentication/login';
@@ -49,13 +50,25 @@ class AwxAfterpay extends Payment
     {
         return route('afterpay.standard.placeOrder');
     }
-
-    public function createPayment($cart, $override)
+    public function setOrder($order = null): self
+    {
+        $this->currentOrder = $order;
+        return $this;
+    }
+    public function getOrder()
+    {
+        return $this->currentOrder;
+    }
+    public function createGatewayOrder()
+    {
+        return $this->createPayment($this->getOrder(), ['merchantOrderId' => $this->getOrder()->id]);
+    }
+    public function createPayment($order, $override)
     {
-        $shop = $cart['shipping_address'];
-        $bill = $cart['billing_address'];
-        $telephone = $shop['phone'] ?: $bill['phone'];
-        $grandTotal = round($cart['grand_total'], 2);
+        $shop = $order->shipping_address;
+        $bill = $order->billing_address;
+        $telephone = $shop->phone ?: $bill->phone;
+        $grandTotal = round($order->grand_total, 2);
         $products[] = [
             'name' => 'total',
             'unit_price' => $grandTotal,
@@ -67,11 +80,11 @@ class AwxAfterpay extends Payment
             'descriptor' => $this->prefix,
             'return_url' => $this->getBaseUlr() . '/klarna/standard/return?orderId=' . $override['merchantOrderId'],
             'merchant_order_id' => $this->prefix . $override['merchantOrderId'],
-            'currency' => $cart['order_currency_code'],
+            'currency' => $order->order_currency_code,
             'customer' => [
-                'email' => $cart['customer_email'],
-                'first_name' => $cart['customer_first_name'],
-                'last_name' => $cart['customer_last_name'],
+                'email' => $order->customer_email,
+                'first_name' => $order->customer_first_name,
+                'last_name' => $order->customer_last_name,
                 'phone_number' => $telephone
             ],
 //            'metadata' => $cart['items'],
@@ -79,16 +92,16 @@ class AwxAfterpay extends Payment
                 'products' => $products,
                 'shipping' => [
                     'address' => [
-                        'city' => $shop['city'],
-                        'postcode' => $shop['postcode'],
-                        'state' => $shop['state'],
-                        'country_code' => $shop['country'],
-                        'street' => $shop['address'],
+                        'city' => $shop->city,
+                        'postcode' => $shop->postcode,
+                        'state' => $shop->state,
+                        'country_code' => $shop->country,
+                        'street' => $shop->address,
                     ],
-                    'first_name' => $shop['first_name'],
-                    'last_name' => $shop['last_name'],
-                    'phone_number' => $shop['phone'],
-                    'email' => $shop['email']
+                    'first_name' => $shop->first_name,
+                    'last_name' => $shop->last_name,
+                    'phone_number' => $shop->phone,
+                    'email' => $shop->email
                 ],
             ]
         ];
@@ -108,7 +121,7 @@ class AwxAfterpay extends Payment
             throw new \Exception($resultObject->details->original_response_message ?:$resultObject->message);
         } else {
             $id = $resultObject->id;
-            $confirmResultObject = $this->confirmRequest($id, $cart);
+            $confirmResultObject = $this->confirmRequest($id, $order);
             if (empty($confirmResultObject->next_action->url)) {
                 throw new \Exception($confirmResultObject->details->original_response_message ?:$confirmResultObject->message);
             }
@@ -116,25 +129,25 @@ class AwxAfterpay extends Payment
         }
     }
 
-    public function confirmRequest($paymentIntentId, $cart)
+    public function confirmRequest($paymentIntentId, $order)
     {
-        $bill = $cart['billing_address'];
+        $bill = $order->billing_address;
         $data = [
             'request_id' => $this->createUuid(),
             'payment_method' => [
                 'type' => 'afterpay',
                 'afterpay' => [
-                    'shopper_email' => $bill['email'],
+                    'shopper_email' => $order->email,
                     'billing' => [
-                        'first_name' => $bill['first_name'],
-                        'last_name' => $bill['last_name'],
-                        'phone_number' => $bill['phone'],
+                        'first_name' => $order->first_name,
+                        'last_name' => $order->last_name,
+                        'phone_number' => $order->phone,
                         'address' => [
-                            'country_code' => $bill['country'],
-                            'city' => $bill['city'],
-                            'street' => $bill['address'],
-                            'postcode' => $bill['postcode'],
-                            'state' => $bill['state']
+                            'country_code' => $order->country,
+                            'city' => $order->city,
+                            'street' => $order->address,
+                            'postcode' => $order->postcode,
+                            'state' => $order->state
                         ],
                     ],
                 ]

+ 44 - 31
packages/Longyi/Pay/AwxKlarna/src/Payment/AwxKlarna.php

@@ -15,6 +15,7 @@ class AwxKlarna extends Payment
     protected $clientId;
     protected $apikey;
     protected $secret;
+    protected $currentOrder;
     protected $prefix = 'QQS';
     protected $tokenCacheKey = 'airwallex_klarna_token';
     protected $tokenUrl = 'https://api-demo.airwallex.com/api/v1/authentication/login';
@@ -51,13 +52,25 @@ class AwxKlarna extends Payment
     {
         return route('klarna.standard.placeOrder');
     }
-
-    public function createPayment($cart, $override)
+    public function setOrder($order = null): self
+    {
+        $this->currentOrder = $order;
+        return $this;
+    }
+    public function getOrder()
+    {
+        return $this->currentOrder;
+    }
+    public function createGatewayOrder()
+    {
+        return $this->createPayment($this->getOrder(), ['merchantOrderId' => $this->getOrder()->id]);
+    }
+    public function createPayment($order, $override)
     {
-        $shop = $cart['shipping_address'];
-        $bill = $cart['billing_address'];
+        $shop = $order->shipping_address;
+        $bill = $order->billing_address;
         $telephone = $shop['phone'] ?: $bill['phone'];
-        $grandTotal = round($cart['grand_total'], 2);
+        $grandTotal = round($order->grand_total, 2);
         $products[] = [
             'name' => 'total',
             'unit_price' => $grandTotal,
@@ -69,11 +82,11 @@ class AwxKlarna extends Payment
             'descriptor' => $this->prefix,
             'return_url' => $this->getBaseUlr() . '/klarna/standard/return?orderId=' . $override['merchantOrderId'],
             'merchant_order_id' => $this->prefix . $override['merchantOrderId'],
-            'currency' => $cart['order_currency_code'],
+            'currency' => $order->order_currency_code,
             'customer' => [
-                'email' => $cart['customer_email'],
-                'first_name' => $cart['customer_first_name'],
-                'last_name' => $cart['customer_last_name'],
+                'email' => $order->customer_email,
+                'first_name' => $order->customer_first_name,
+                'last_name' => $order->customer_last_name,
                 'phone_number' => $telephone
             ],
 //            'metadata' => $cart['items'],
@@ -81,16 +94,16 @@ class AwxKlarna extends Payment
                 'products' => $products,
                 'shipping' => [
                     'address' => [
-                        'city' => $shop['city'],
-                        'postcode' => $shop['postcode'],
-                        'state' => $shop['state'],
-                        'country_code' => $shop['country'],
-                        'street' => $shop['address'],
+                        'city' => $shop->city,
+                        'postcode' => $shop->postcode,
+                        'state' => $shop->state,
+                        'country_code' => $shop->country,
+                        'street' => $shop->address,
                     ],
-                    'first_name' => $shop['first_name'],
-                    'last_name' => $shop['last_name'],
-                    'phone_number' => $shop['phone'],
-                    'email' => $shop['email']
+                    'first_name' => $shop->first_name,
+                    'last_name' => $shop->last_name,
+                    'phone_number' => $shop->phone,
+                    'email' => $shop->email
                 ],
             ]
         ];
@@ -110,7 +123,7 @@ class AwxKlarna extends Payment
             throw new \Exception($resultObject->details->original_response_message ?:$resultObject->message);
         } else {
             $id = $resultObject->id;
-            $confirmResultObject = $this->confirmRequest($id, $cart);
+            $confirmResultObject = $this->confirmRequest($id, $order);
             if (empty($confirmResultObject->next_action->url)) {
                 throw new \Exception($confirmResultObject->details->original_response_message ?:$confirmResultObject->message);
             }
@@ -118,26 +131,26 @@ class AwxKlarna extends Payment
         }
     }
 
-    public function confirmRequest($paymentIntentId, $cart)
+    public function confirmRequest($paymentIntentId, $order)
     {
-        $bill = $cart['billing_address'];
+        $bill = $order->billing_address;
         $data = [
             'request_id' => $this->createUuid(),
             'payment_method' => [
                 'type' => 'klarna',
                 'klarna' => [
-                    'country_code' => $bill['country'],
+                    'country_code' => $bill->country,
                     'billing' => [
-                        'email' => $bill['email'],
-                        'first_name' => $bill['first_name'],
-                        'last_name' => $bill['last_name'],
-                        'phone_number' => $bill['phone'],
+                        'email' => $bill->email,
+                        'first_name' => $bill->first_name,
+                        'last_name' => $bill->last_name,
+                        'phone_number' => $bill->phone,
                         'address' => [
-                            'country_code' => $bill['country'],
-                            'city' => $bill['city'],
-                            'street' => $bill['address'],
-                            'postcode' => $bill['postcode'],
-                            'state' => $bill['state']
+                            'country_code' => $bill->country,
+                            'city' => $bill->city,
+                            'street' => $bill->address,
+                            'postcode' => $bill->postcode,
+                            'state' => $bill->state
                         ],
                     ],
                 ],

+ 2 - 8
packages/Webkul/BagistoApi/src/Services/PaymentService.php

@@ -449,25 +449,19 @@ class PaymentService
         if (! $config || ! isset($config['class'])) {
             return null;
         }
-
         try {
             $handler = app($config['class']);
-
             if (method_exists($handler, 'setOrder')) {
                 $handler->setOrder($order);
             }
-
             if (! method_exists($handler, 'createGatewayOrder')) {
                 Log::warning('Payment handler does not implement createGatewayOrder', [
                     'method' => $method,
                     'class'  => $config['class'],
                 ]);
-
-                return $handler;
+                return null;
             }
-
-
-            return null;
+            return $handler;
         } catch (\Throwable $e) {
             Log::error('Failed to instantiate payment handler', [
                 'method' => $method,