ProcessManager.php 3.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137
  1. <?php
  2. require_once dirname(__FILE__) . '/Processes/AbstractProcess.php';
  3. require_once dirname(__FILE__) . '/Processes/CancelQuote.php';
  4. require_once dirname(__FILE__) . '/Processes/Refund.php';
  5. require_once dirname(__FILE__) . '/Processes/CreateOrder/CompatibilityMode/Process.php';
  6. require_once dirname(__FILE__) . '/Processes/CreateOrder/CreateOrderAbstract.php';
  7. require_once dirname(__FILE__) . '/Processes/CreateOrder/WC_LT_3_6/Process.php';
  8. require_once dirname(__FILE__) . '/Processes/CreateOrder/WC_GT_3_6/Process.php';
  9. require_once dirname(__FILE__) . '/Processes/CreateQuote/CreateQuoteAbstract.php';
  10. require_once dirname(__FILE__) . '/Processes/CreateQuote/WC_LT_3_6/Process.php';
  11. require_once dirname(__FILE__) . '/Processes/CreateQuote/WC_GT_3_6/Process.php';
  12. require_once dirname(__FILE__) . '/Processes/RedirectPayment/Process.php';
  13. require_once dirname(__FILE__) . '/Processes/RedirectPayment/CompatibilityMode/Process.php';
  14. class Laybuy_ProcessManager
  15. {
  16. private static $instance;
  17. private $apiGateway;
  18. private $wcGateway;
  19. private $compatibilityMode;
  20. public function setApiGateway($gateway)
  21. {
  22. $this->apiGateway = $gateway;
  23. return $this;
  24. }
  25. public function getApiGateway()
  26. {
  27. return $this->apiGateway;
  28. }
  29. public function setWcGateway($gateway)
  30. {
  31. $this->wcGateway = $gateway;
  32. return $this;
  33. }
  34. public function getWcGateway()
  35. {
  36. return $this->wcGateway;
  37. }
  38. public function setCompatibilityMode($mode)
  39. {
  40. $this->compatibilityMode = $mode;
  41. return $this;
  42. }
  43. public function getCompatibilityMode()
  44. {
  45. return $this->compatibilityMode;
  46. }
  47. public static function getInstance()
  48. {
  49. if (!self::$instance) {
  50. self::$instance = new static();
  51. }
  52. return self::$instance;
  53. }
  54. public function createOrderFromQuote($quote_id)
  55. {
  56. if (version_compare( WC_VERSION, '3.6', '<' )) {
  57. $process = new Laybuy_Processes_CreateOrder_WC_LT_3_6_Process();
  58. } else {
  59. $process = new Laybuy_Processes_CreateOrder_WC_GT_3_6_Process();
  60. }
  61. $process->setProcessManager($this);
  62. $process->setQuoteId($quote_id);
  63. return $process->execute();
  64. }
  65. public function createQuote($checkout)
  66. {
  67. if (version_compare( WC_VERSION, '3.6', '<' )) {
  68. $process = new Laybuy_Processes_CreateQuote_WC_LT_3_6_Process();
  69. } else {
  70. $process = new Laybuy_Processes_CreateQuote_WC_GT_3_6_Process();
  71. }
  72. $process->setProcessManager($this);
  73. $process->setCheckout($checkout);
  74. $process->execute();
  75. }
  76. public function createOrder($orderId)
  77. {
  78. $process = new Laybuy_Processes_CreateOrder_CompatibilityMode_Process();
  79. $process->setOrderId($orderId);
  80. $process->setProcessManager($this);
  81. $process->execute();
  82. }
  83. public function refund($orderId, $amount, $reason)
  84. {
  85. $process = new Laybuy_Processes_Refund();
  86. $process->setProcessManager($this)
  87. ->setOrderId($orderId)
  88. ->setAmount($amount)
  89. ->setReason($reason);
  90. return $process->execute();
  91. }
  92. public function cancelQuote($quoteId, $status = 'cancelled')
  93. {
  94. $process = new Laybuy_Processes_CancelQuote();
  95. return $process->setQuoteId($quoteId)
  96. ->setStatus($status)
  97. ->execute();
  98. }
  99. public function processRedirectPayment($id, $status, $token)
  100. {
  101. if ($this->compatibilityMode) {
  102. $process = new Laybuy_Processes_RedirectPayment_CompatibilityMode_Process();
  103. $process->setOrderId($id);
  104. } else {
  105. $process = new Laybuy_Processes_RedirectPayment_Process();
  106. $process->setQuoteId($id);
  107. }
  108. return $process
  109. ->setStatus($status)
  110. ->setToken($token)
  111. ->setProcessManager($this)
  112. ->execute();
  113. }
  114. }