diff --git a/packages/Webkul/Admin/src/Listeners/Order.php b/packages/Webkul/Admin/src/Listeners/Order.php index 15f6470eb..d20270f09 100755 --- a/packages/Webkul/Admin/src/Listeners/Order.php +++ b/packages/Webkul/Admin/src/Listeners/Order.php @@ -5,9 +5,6 @@ namespace Webkul\Admin\Listeners; use Webkul\Admin\Traits\Mails; use Webkul\Paypal\Payment\SmartButton; use PayPalCheckoutSdk\Orders\OrdersGetRequest; -use PayPalCheckoutSdk\Orders\OrdersCaptureRequest; -use PayPalCheckoutSdk\Orders\OrdersAuthorizeRequest; -use PayPalCheckoutSdk\Payments\AuthorizationsCaptureRequest; class Order { @@ -15,17 +12,29 @@ class Order public function refundOrder($data) { - $orderID = $data['order']->payment->additional['orderID']; - $payerID = $data['order']->payment->additional['payerID']; - // dd($orderID, $payerID, $data['order']->payment->additional); + $paymentMethod = $data['order']->payment->method; - $smartButton = new SmartButton(); - $client = $smartButton->client(); + if ($paymentMethod === 'paypal_smart_button') { - /* get order */ - // $response = $client->execute(new OrdersGetRequest($orderID)); - // dd($response); + try { + $orderID = $data['order']->payment->additional['orderID']; - // dd($smartButton->refundOrder($orderID, "{}")); + $smartButton = new SmartButton(); + $client = $smartButton->client(); + + /* get order */ + $orderDetails = $client->execute(new OrdersGetRequest($orderID)); + $captureID = $orderDetails->result->purchase_units[0]->payments->captures[0]->id; + + /* refunding order */ + $response = $smartButton->refundOrder($captureID, "{}"); + } catch (\Exception $e) { + /* reporting error */ + report($e); + + /* now aborting whole process */ + abort(500); + } + } } } diff --git a/packages/Webkul/Paypal/src/Http/Controllers/SmartButtonController.php b/packages/Webkul/Paypal/src/Http/Controllers/SmartButtonController.php index f0d0fba21..fc88d800b 100755 --- a/packages/Webkul/Paypal/src/Http/Controllers/SmartButtonController.php +++ b/packages/Webkul/Paypal/src/Http/Controllers/SmartButtonController.php @@ -7,6 +7,7 @@ use Webkul\Paypal\Payment\SmartButton; use Webkul\Sales\Repositories\OrderRepository; use Webkul\Sales\Repositories\InvoiceRepository; use PayPalCheckoutSdk\Orders\OrdersCreateRequest; +use PayPalCheckoutSdk\Orders\OrdersCaptureRequest; class SmartButtonController extends Controller { @@ -71,6 +72,11 @@ class SmartButtonController extends Controller */ public function saveOrder() { + $orderCreationData = request()->get('data'); + $request = new OrdersCaptureRequest($orderCreationData['orderID']); + $request->prefer('return=representation'); + $this->smartButtonClient->execute($request); + if (Cart::hasError()) { return response()->json(['redirect_url' => route('shop.checkout.cart.index')], 403); } @@ -143,12 +149,7 @@ class SmartButtonController extends Controller ], 'application_context' => [ - 'user_action' => 'PAY_NOW', 'shipping_preference' => 'SET_PROVIDED_ADDRESS', - - 'payment_method' => [ - 'payee_preferred' => 'IMMEDIATE_PAYMENT_REQUIRED', - ] ], 'purchase_units' => [