Skip to content

Commit

Permalink
[PAYSHIP-2679] New DB structure for PayPal Order (#1203)
Browse files Browse the repository at this point in the history
* Added new db structure for orders

* Added entities for order

* Added PayPal Order repository

* Added create and delete functions

* Added sql escaping

* Added order saving to DB to event handler

* Added new fields for order, capture and refund

* phpstan fix
  • Loading branch information
L3RAZ committed Mar 7, 2024
1 parent 67eacb4 commit 92dea79
Show file tree
Hide file tree
Showing 10 changed files with 1,629 additions and 1 deletion.
11 changes: 11 additions & 0 deletions config/common.yml
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,10 @@ services:
arguments:
- "ps_checkout"

ps_checkout.db:
class: Db
factory: [ 'Db', 'getInstance' ]

ps_checkout.module.version:
class: 'PrestaShop\Module\PrestashopCheckout\Version\Version'
factory: ["PrestaShop\\Module\\PrestashopCheckout\\Version\\Version", "buildFromString"]
Expand Down Expand Up @@ -508,6 +512,7 @@ services:
- "@ps_checkout.paypal.order.service.check_transition_paypal_order_status"
- "@ps_checkout.order.state.service.order_state_mapper"
- '@ps_checkout.paypal.configuration'
- '@PrestaShop\Module\PrestashopCheckout\Repository\PayPalOrderRepository'

PrestaShop\Module\PrestashopCheckout\PayPal\Payment\Capture\EventSubscriber\PayPalCaptureEventSubscriber:
class: 'PrestaShop\Module\PrestashopCheckout\PayPal\Payment\Capture\EventSubscriber\PayPalCaptureEventSubscriber'
Expand Down Expand Up @@ -741,6 +746,12 @@ services:
arguments:
- '@PrestaShop\Module\PrestashopCheckout\Builder\Configuration\PaymentClientConfigurationBuilder'


PrestaShop\Module\PrestashopCheckout\Repository\PayPalOrderRepository:
class: 'PrestaShop\Module\PrestashopCheckout\Repository\PayPalOrderRepository'
arguments:
- '@ps_checkout.db'

PrestaShop\Module\PrestashopCheckout\Api\Payment\PaymentService:
class: 'PrestaShop\Module\PrestashopCheckout\Api\Payment\PaymentService'
arguments:
Expand Down
53 changes: 53 additions & 0 deletions src/Database/TableManager.php
Original file line number Diff line number Diff line change
Expand Up @@ -94,6 +94,59 @@ public function createTable()
`data` text NOT NULL,
PRIMARY KEY (`id_customer`, `paypal_customer_id`)
) ENGINE=' . _MYSQL_ENGINE_ . ' DEFAULT CHARSET=UTF8;
') && $this->db->execute('
CREATE TABLE IF NOT EXISTS `' . _DB_PREFIX_ . 'pscheckout_order` (
`id` varchar(50) NOT NULL,
`id_cart` varchar(50) NOT NULL,
`status` varchar(50) NOT NULL,
`final_capture` tinyint(1) NOT NULL,,
`payment_source` text,
`environment` varchar(50) NOT NULL,
`is_card_fields` tinyint(1) NOT NULL,
`is_express_checkout` tinyint(1) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=' . _MYSQL_ENGINE_ . ' DEFAULT CHARSET=UTF8;
') && $this->db->execute('
CREATE TABLE IF NOT EXISTS `' . _DB_PREFIX_ . 'pscheckout_capture` (
`id` varchar(50) NOT NULL,
`id_order` varchar(50) NOT NULL,
`status` varchar(50) NOT NULL,
`final_capture` tinyint(1) NOT NULL,
`created_at` varchar(50) NOT NULL,
`updated_at` varchar(50) NOT NULL,
`seller_protection` varchar(50) NOT NULL,
`seller_receivable_breakdown` text,
PRIMARY KEY (`id`)
) ENGINE=' . _MYSQL_ENGINE_ . ' DEFAULT CHARSET=UTF8;
') && $this->db->execute('
CREATE TABLE IF NOT EXISTS `' . _DB_PREFIX_ . 'pscheckout_refund` (
`id` varchar(50) NOT NULL,
`id_order` varchar(50) NOT NULL,
`status` varchar(50) NOT NULL,
`invoice_id` varchar(50) NOT NULL,
`custom_id` varchar(50) NOT NULL,
`acquirer_reference_number` varchar(50) NOT NULL,
`seller_payable_breakdown` text,
`id_order_slip` INT(10) UNSIGNED,
PRIMARY KEY (`id`)
) ENGINE=' . _MYSQL_ENGINE_ . ' DEFAULT CHARSET=UTF8;
') && $this->db->execute('
CREATE TABLE IF NOT EXISTS `' . _DB_PREFIX_ . 'pscheckout_authorization` (
`id` varchar(50) NOT NULL,
`id_order` varchar(50) NOT NULL,
`status` varchar(50) NOT NULL,
`expiration_time` varchar(50) NOT NULL,
`seller_protection` varchar(50) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=' . _MYSQL_ENGINE_ . ' DEFAULT CHARSET=UTF8;
') && $this->db->execute('
CREATE TABLE IF NOT EXISTS `' . _DB_PREFIX_ . 'pscheckout_purchase_unit` (
`id_order` varchar(50) NOT NULL,
`checksum` varchar(50) NOT NULL,
`reference_id` varchar(50) NOT NULL,
`items` text,
PRIMARY KEY (`reference_id`, `id_order`)
) ENGINE=' . _MYSQL_ENGINE_ . ' DEFAULT CHARSET=UTF8;
');

$this->checkTable();
Expand Down
254 changes: 254 additions & 0 deletions src/Entity/PayPalOrder.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,254 @@
<?php
/**
* Copyright since 2007 PrestaShop SA and Contributors
* PrestaShop is an International Registered Trademark & Property of PrestaShop SA
*
* NOTICE OF LICENSE
*
* This source file is subject to the Academic Free License version 3.0
* that is bundled with this package in the file LICENSE.md.
* It is also available through the world-wide-web at this URL:
* https://opensource.org/licenses/AFL-3.0
* If you did not receive a copy of the license and are unable to
* obtain it through the world-wide-web, please send an email
* to [email protected] so we can send you a copy immediately.
*
* @author PrestaShop SA and Contributors <[email protected]>
* @copyright Since 2007 PrestaShop SA and Contributors
* @license https://opensource.org/licenses/AFL-3.0 Academic Free License version 3.0
*/

namespace PrestaShop\Module\PrestashopCheckout\Entity;

class PayPalOrder
{
/**
* @var string|null
*/
private $id;
/**
* @var int|null
*/
private $idCart;
/**
* @var string|null
*/
private $intent;
/**
* @var string|null
*/
private $fundingSource;
/**
* @var string|null
*/
private $status;
/**
* @var string|null
*/
private $paymentSource;
/**
* @var string
*/
private $environment;
/**
* @var bool
*/
private $isCardFields;
/**
* @var bool
*/
private $isExpressCheckout;

public function __construct($id = null, $idCart = null, $intent = null, $fundingSource = null, $status = null, $paymentSource = null, $environment = 'LIVE', $isCardFields = false, $isExpressCheckout = false)
{
$this->id = $id;
$this->idCart = $idCart;
$this->intent = $intent;
$this->fundingSource = $fundingSource;
$this->status = $status;
$this->paymentSource = $paymentSource;
$this->environment = $environment;
$this->isCardFields = (bool) $isCardFields;
$this->isExpressCheckout = (bool) $isExpressCheckout;
}

/**
* @return string|null
*/
public function getId()
{
return $this->id;
}

/**
* @param string $id
*
* @return PayPalOrder
*/
public function setId($id)
{
$this->id = $id;

return $this;
}

/**
* @return int|null
*/
public function getIdCart()
{
return $this->idCart;
}

/**
* @param int $idCart
*
* @return PayPalOrder
*/
public function setIdCart($idCart)
{
$this->idCart = $idCart;

return $this;
}

/**
* @return string|null
*/
public function getIntent()
{
return $this->intent;
}

/**
* @param string $intent
*
* @return PayPalOrder
*/
public function setIntent($intent)
{
$this->intent = $intent;

return $this;
}

/**
* @return string|null
*/
public function getFundingSource()
{
return $this->fundingSource;
}

/**
* @param string $fundingSource
*
* @return PayPalOrder
*/
public function setFundingSource($fundingSource)
{
$this->fundingSource = $fundingSource;

return $this;
}

/**
* @return string|null
*/
public function getStatus()
{
return $this->status;
}

/**
* @param string $status
*
* @return PayPalOrder
*/
public function setStatus($status)
{
$this->status = $status;

return $this;
}

/**
* @return string|null
*/
public function getPaymentSource()
{
return $this->paymentSource;
}

/**
* @param string $paymentSource
*
* @return PayPalOrder
*/
public function setPaymentSource($paymentSource)
{
$this->paymentSource = $paymentSource;

return $this;
}

/**
* @return string
*/
public function getEnvironment()
{
return $this->environment;
}

/**
* @param string $environment
*
* @return PayPalOrder
*/
public function setEnvironment($environment)
{
$this->environment = $environment;

return $this;
}

/**
* @return bool
*/
public function getIsCardFields()
{
return $this->isCardFields;
}

/**
* @param bool $isCardFields
*
* @return PayPalOrder
*/
public function setIsCardFields($isCardFields)
{
$this->isCardFields = (bool) $isCardFields;

return $this;
}

/**
* @return bool
*/
public function getIsExpressCheckout()
{
return $this->isExpressCheckout;
}

/**
* @param bool $isExpressCheckout
*
* @return PayPalOrder
*/
public function setIsExpressCheckout($isExpressCheckout)
{
$this->isExpressCheckout = (bool) $isExpressCheckout;

return $this;
}
}
Loading

0 comments on commit 92dea79

Please sign in to comment.