hotel_commerce/modules/qlopaypalcommerce/libs/Orders.php
2023-06-26 13:09:26 +05:30

158 lines
6.0 KiB
PHP

<?php
/**
* 2010-2021 Webkul.
*
* NOTICE OF LICENSE
*
* All right is reserved,
* Please go through LICENSE.txt file inside our module
*
* DISCLAIMER
*
* Do not edit or add to this file if you wish to upgrade this module to newer
* versions in the future. If you wish to customize this module for your
* needs please refer to CustomizationPolicy.txt file inside our module for more information.
*
* @author Webkul IN
* @copyright 2010-2021 Webkul IN
* @license LICENSE.txt
*/
include_once(dirname(__FILE__) . '/Helpers/PayPalHelper.php');
class PayPalOrders extends PayPalHelper
{
private function _createOrder($postData) {
$this->_checkToken();
$this->_http->resetHelper();
$this->_setDefaultHeaders();
// $this->_http->addHeader("PayPal-Request-Id: " . $this->getUUID());
$this->_setAPIVersion('2');
$this->_http->setUrl($this->_createApiUrl("checkout/orders"));
$this->_http->setBody($postData);
return $this->_respond($this->_http->sendRequest());
}
private function _getOrder($orderID) {
$this->_checkToken();
$this->_http->resetHelper();
$this->_setDefaultHeaders();
$this->_setAPIVersion('2');
$this->_http->setUrl($this->_createApiUrl("checkout/orders/" . $orderID));
return $this->_respond($this->_http->sendRequest());
}
private function _patchOrder($orderID, $patchData) {
$this->_checkToken();
$this->_http->resetHelper();
$this->_setDefaultHeaders();
$this->_setAPIVersion('2');
$this->_http->setUrl($this->_createApiUrl("checkout/orders/" . $orderID));
$this->_http->setBody($patchData);
$this->_http->setRequestType('PATCH');
return $this->_respond($this->_http->sendRequest());
}
private function _captureOrder($orderID) {
$this->_checkToken();
$this->_http->resetHelper();
$this->_setDefaultHeaders();
$this->_http->addHeader("PayPal-Request-Id: " . $this->getUUID());
$this->_setAPIVersion('2');
$this->_http->setUrl($this->_createApiUrl("checkout/orders/" . $orderID . "/capture"));
$this->_http->setBody('');
return $this->_respond($this->_http->sendRequest());
}
private function _disburseCapture($postData) {
$this->_checkToken();
$this->_http->resetHelper();
$this->_setDefaultHeaders();
$this->_setAPIVersion('1');
$this->_http->setUrl($this->_createApiUrl("payments/referenced-payouts-items"));
$this->_http->setBody($postData);
return $this->_respond($this->_http->sendRequest());
}
private function _refundCapture($transactionID, $assertion, $postData) {
$this->_checkToken();
$this->_http->resetHelper();
$this->_setDefaultHeaders();
$this->_http->addHeader("PayPal-Request-Id: " . $this->getUUID());
$this->_http->addHeader("PayPal-Auth-Assertion: " . $assertion);
$this->_setAPIVersion('2');
$this->_http->setUrl($this->_createApiUrl("payments/captures/" . $transactionID . "/refund"));
$this->_http->setBody($postData);
return $this->_respond($this->_http->sendRequest());
}
public function create($postData) {
if($postData['flow'] === 'mark') {
$postData['original']['purchase_units'][0]['amount']['value'] -= $postData['original']['purchase_units'][0]['amount']['breakdown']['shipping']['value'];
$postData['original']['purchase_units'][0]['amount']['breakdown']['shipping']['value'] = $postData['update']['updated_shipping'];
$postData['original']['purchase_units'][0]['amount']['value'] += $postData['original']['purchase_units'][0]['amount']['breakdown']['shipping']['value'];
$postData['original']['purchase_units'][0]['shipping'] = $postData['update']['shipping_address'];
return $this->_createOrder($postData['original']);
} else {
return $this->_createOrder($postData['original']);
}
}
public function get($orderID) {
return $this->_getOrder($orderID);
}
public function patch($data) {
$data['order']['amount']['value'] -= $data['order']['amount']['breakdown']['shipping']['value'];
$data['order']['amount']['breakdown']['shipping']['value'] = $data['updated_shipping'];
$data['order']['amount']['value'] += $data['order']['amount']['breakdown']['shipping']['value'];
$patchData = array(
array(
"op" => "replace",
"path" => "/purchase_units/@reference_id=='" . $data['order']['reference_id'] . "'/amount",
"value" => $data['order']['amount']
)
);
return $this->_patchOrder($data['order']['order_id'], $patchData);
}
public function capture($orderID) {
return $this->_captureOrder($orderID);
}
public function disburse($transactionID) {
$postData = array(
"reference_type" => "TRANSACTION_ID",
"reference_id" => $transactionID
);
return $this->_disburseCapture($postData);
}
public function refund($postData) {
$transactionID = $postData['transaction_id'];
$assertion = $postData['auth_assertion'];
$postDataArr = array();
$postDataArr['note_to_payer'] = $postData['refund_reason'];
if (array_key_exists('amount', $postData)) {
$postDataArr['amount'] = $postData['amount'];
}
return $this->_refundCapture($transactionID, $assertion, $postDataArr);
}
private function _getRefund($refundID) {
$this->_checkToken();
$this->_http->resetHelper();
$this->_setDefaultHeaders();
$this->_setAPIVersion('2');
$this->_http->setUrl($this->_createApiUrl("payments/refunds/" . $refundID));
$this->_http->setRequestType('GET');
return $this->_respond($this->_http->sendRequest());
}
public function getRefund($refundID) {
return $this->_getRefund($refundID);
}
}