Created
February 20, 2020 07:45
-
-
Save torunar/6109f557e0d693e266aebe3ae5af77ae to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
diff --git a/app/addons/yandex_checkout/controllers/common/yandex_checkout.php b/app/addons/yandex_checkout/controllers/common/yandex_checkout.php | |
index 7eb2edd951..0c2fe8b8a3 100644 | |
--- a/app/addons/yandex_checkout/controllers/common/yandex_checkout.php | |
+++ b/app/addons/yandex_checkout/controllers/common/yandex_checkout.php | |
@@ -30,10 +30,15 @@ if ($mode == 'check_payment') { | |
} | |
$order_info = fn_get_order_info($metadata['order_id']); | |
$payment_data = $order_info['payment_info']; | |
- if ($payment_data['id'] !== $service->getPaymentIdFromNotification($response)) { | |
+ if ($payment_data['payment_id'] !== $service->getPaymentIdFromNotification($response)) { | |
return [CONTROLLER_STATUS_DENIED]; | |
} | |
+ | |
$status = $service->getStatusFromNotification($response); | |
+ if (isset($payment_data['status']) && $payment_data['status'] === $status) { | |
+ fn_update_order_payment_info($order_info['order_id'], ['yandex_checkout.notification_received' => __('yes')]); | |
+ return [CONTROLLER_STATUS_NO_CONTENT]; | |
+ } | |
switch ($status) { | |
case PaymentStatus::SUCCEEDED: | |
fn_change_order_status($order_info['order_id'], 'P'); | |
@@ -80,14 +85,16 @@ if ($mode == 'check_payment') { | |
$service | |
); | |
try { | |
- $payment_status = $payment_processor->getPaymentInfo($payment_data['id'])->getStatus(); | |
+ $payment_status = $payment_processor->getPaymentInfo($payment_data['payment_id'])->getStatus(); | |
switch ($payment_status) { | |
case PaymentStatus::SUCCEEDED: | |
fn_change_order_status($order_info['order_id'], 'P'); | |
+ fn_update_order_payment_info($order_info['order_id'], ['status' => $payment_status]); | |
fn_order_placement_routines('route', $order_info['order_id'], false); | |
break; | |
case PaymentStatus::CANCELED: | |
fn_set_notification('W', __('important'), __('text_transaction_cancelled'), 'S', 'transaction_cancelled'); | |
+ fn_update_order_payment_info($order_info['order_id'], ['status' => $payment_status]); | |
fn_order_placement_routines('route', $order_info['order_id'], false); | |
break; | |
case PaymentStatus::WAITING_FOR_CAPTURE: |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
diff --git a/app/addons/yandex_checkout/payments/yandex_checkout.php b/app/addons/yandex_checkout/payments/yandex_checkout.php | |
index 5126d2aa59..3442777f45 100644 | |
--- a/app/addons/yandex_checkout/payments/yandex_checkout.php | |
+++ b/app/addons/yandex_checkout/payments/yandex_checkout.php | |
@@ -23,7 +23,7 @@ try { | |
$response = $payment->createPayment($order_info, $processor_data); | |
$confirmation_url = $response->getConfirmation()->getConfirmationUrl(); | |
- fn_update_order_payment_info($order_info['order_id'], ['id' => $response->getId()]); | |
+ fn_update_order_payment_info($order_info['order_id'], ['payment_id' => $response->getId()]); | |
fn_create_payment_form($confirmation_url, [], __('yandex_checkout.yandex_checkout'), true, 'get'); | |
} catch (Exception $exception) { | |
$pp_response['reason_text'] = $exception->getMessage(); |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
diff --git a/app/addons/yandex_checkout/src/HookHandlers/OrdersHookHandler.php b/app/addons/yandex_checkout/src/HookHandlers/OrdersHookHandler.php | |
index b10fd2fdbb..6849094779 100644 | |
--- a/app/addons/yandex_checkout/src/HookHandlers/OrdersHookHandler.php | |
+++ b/app/addons/yandex_checkout/src/HookHandlers/OrdersHookHandler.php | |
@@ -33,18 +33,19 @@ class OrdersHookHandler | |
public function onCompletePurchase($order_id, $status_to, $status_from, $force_notification, $place_order, $order_info, $edp_data) | |
{ | |
$processor_id = db_get_field('SELECT processor_id FROM ?:payment_processors WHERE processor_script = ?s AND addon = ?s', 'yandex_checkout.php', 'yandex_checkout'); | |
- if ($order_info['payment_method']['processor_id'] != $processor_id) { | |
+ if (isset($order_info['payment_method']['processor_id']) && $order_info['payment_method']['processor_id'] != $processor_id) { | |
return; | |
} | |
if (YesNo::toBool($order_info['payment_method']['processor_params']['send_receipt']) | |
&& $status_to === $order_info['payment_method']['processor_params']['final_success_status'] | |
+ && !isset($order_info['payment_info']['yandex_checkout.full_payment_receipt_id']) | |
) { | |
$payment_processor = new YandexCheckout($order_info['payment_method']['processor_params']['shop_id'], $order_info['payment_method']['processor_params']['scid'], Tygh::$app['addons.yandex_checkout.receipt_service']); | |
try { | |
- $payment_info = $payment_processor->getPaymentInfo($order_info['payment_info']['id']); | |
+ $payment_info = $payment_processor->getPaymentInfo($order_info['payment_info']['payment_id']); | |
if ($payment_info->getStatus() === PaymentStatus::SUCCEEDED) { | |
- $payment_processor->createReceipt($order_info); | |
- fn_update_order_payment_info($order_id, ['status' => PaymentStatus::SUCCEEDED]); | |
+ $receipt = $payment_processor->createReceipt($order_info); | |
+ fn_update_order_payment_info($order_id, ['yandex_checkout.full_payment_receipt_id' => $receipt->getId()]); | |
} | |
} catch (Exception $exception) { | |
fn_set_notification('E', __('error'), $exception->getMessage()); |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
diff --git a/app/addons/yandex_checkout/src/Payments/YandexCheckout.php b/app/addons/yandex_checkout/src/Payments/YandexCheckout.php | |
index f65be1e2fb..63da9f76cc 100644 | |
--- a/app/addons/yandex_checkout/src/Payments/YandexCheckout.php | |
+++ b/app/addons/yandex_checkout/src/Payments/YandexCheckout.php | |
@@ -126,11 +126,12 @@ class YandexCheckout | |
/** | |
* @param array $order_info | |
* | |
- * @return bool | |
+ * @return \YandexCheckout\Request\Receipts\AbstractReceiptResponse|null | |
+ * | |
+ * @throws BadApiRequestException | |
* @throws \YandexCheckout\Common\Exceptions\ApiConnectionException | |
* @throws \YandexCheckout\Common\Exceptions\ApiException | |
* @throws \YandexCheckout\Common\Exceptions\AuthorizeException | |
- * @throws \YandexCheckout\Common\Exceptions\BadApiRequestException | |
* @throws \YandexCheckout\Common\Exceptions\ForbiddenException | |
* @throws \YandexCheckout\Common\Exceptions\InternalServerError | |
* @throws \YandexCheckout\Common\Exceptions\NotFoundException | |
@@ -141,8 +142,6 @@ class YandexCheckout | |
public function createReceipt(array $order_info) | |
{ | |
$receipt = $this->receipt_service->getPaymentReceiptFromOrder($order_info); | |
- | |
- $this->client->createReceipt($receipt); | |
- return true; | |
+ return $this->client->createReceipt($receipt); | |
} | |
} | |
\ No newline at end of file |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
diff --git a/app/addons/yandex_checkout/src/Services/ReceiptService.php b/app/addons/yandex_checkout/src/Services/ReceiptService.php | |
index 7da6df435f..ca899d6bcd 100644 | |
--- a/app/addons/yandex_checkout/src/Services/ReceiptService.php | |
+++ b/app/addons/yandex_checkout/src/Services/ReceiptService.php | |
@@ -95,7 +95,7 @@ class ReceiptService | |
$receipt = [ | |
'type' => 'payment', | |
- 'payment_id' => $order_info['payment_info']['id'], | |
+ 'payment_id' => $order_info['payment_info']['payment_id'], | |
'customer' => $prepayment_receipt['customer'], | |
'items' => $prepayment_receipt['items'], | |
'send' => true, |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment