mirror of
https://github.com/woocommerce/woocommerce-paypal-payments.git
synced 2025-09-05 08:59:14 +08:00
Make Order createTime optional
When the intent is set to authorize and the status is completed in many cases the created time is not returned back
This commit is contained in:
parent
d6d7db48c2
commit
751260c00a
2 changed files with 11 additions and 11 deletions
|
@ -21,16 +21,15 @@ class Order
|
|||
*/
|
||||
public function __construct(
|
||||
string $id,
|
||||
\DateTime $createTime,
|
||||
array $purchaseUnits,
|
||||
OrderStatus $orderStatus,
|
||||
Payer $payer = null,
|
||||
string $intent = 'CAPTURE',
|
||||
\DateTime $createTime = null,
|
||||
\DateTime $updateTime = null
|
||||
) {
|
||||
|
||||
$this->id = $id;
|
||||
$this->createTime = $createTime;
|
||||
//phpcs:disable Inpsyde.CodeQuality.ArgumentTypeDeclaration.NoArgumentType
|
||||
$this->purchaseUnits = array_values(array_filter(
|
||||
$purchaseUnits,
|
||||
|
@ -43,6 +42,7 @@ class Order
|
|||
$this->orderStatus = $orderStatus;
|
||||
$this->intent = ($intent === 'CAPTURE') ? 'CAPTURE' : 'AUTHORIZE';
|
||||
$this->purchaseUnits = $purchaseUnits;
|
||||
$this->createTime = $createTime;
|
||||
$this->updateTime = $updateTime;
|
||||
}
|
||||
|
||||
|
@ -51,7 +51,7 @@ class Order
|
|||
return $this->id;
|
||||
}
|
||||
|
||||
public function createTime() : \DateTime
|
||||
public function createTime() : ?\DateTime
|
||||
{
|
||||
return $this->createTime;
|
||||
}
|
||||
|
@ -96,8 +96,10 @@ class Order
|
|||
},
|
||||
$this->purchaseUnits()
|
||||
),
|
||||
'create_time' => $this->createTime()->format(\DateTimeInterface::ISO8601),
|
||||
];
|
||||
if ($this->createTime()) {
|
||||
$order['create_time'] = $this->createTime()->format(\DateTimeInterface::ISO8601);
|
||||
}
|
||||
if ($this->payer()) {
|
||||
$order['payer'] =$this->payer()->toArray();
|
||||
}
|
||||
|
|
|
@ -28,11 +28,11 @@ class OrderFactory
|
|||
|
||||
return new Order(
|
||||
$order->id(),
|
||||
$order->createTime(),
|
||||
$purchaseUnits,
|
||||
$order->status(),
|
||||
$order->payer(),
|
||||
$order->intent(),
|
||||
$order->createTime(),
|
||||
$order->updateTime()
|
||||
);
|
||||
}
|
||||
|
@ -44,11 +44,6 @@ class OrderFactory
|
|||
__('Order does not contain an id.', 'woocommerce-paypal-commerce-gateway')
|
||||
);
|
||||
}
|
||||
if (! isset($orderData->create_time)) {
|
||||
throw new RuntimeException(
|
||||
__('Order does not contain a create time.', 'woocommerce-paypal-commerce-gateway')
|
||||
);
|
||||
}
|
||||
if (! isset($orderData->purchase_units) || !is_array($orderData->purchase_units)) {
|
||||
throw new RuntimeException(
|
||||
__('Order does not contain items.', 'woocommerce-paypal-commerce-gateway')
|
||||
|
@ -72,6 +67,9 @@ class OrderFactory
|
|||
$orderData->purchase_units
|
||||
);
|
||||
|
||||
$createTime = (isset($orderData->create_time)) ?
|
||||
\DateTime::createFromFormat(\DateTime::ISO8601, $orderData->create_time)
|
||||
: null;
|
||||
$updateTime = (isset($orderData->update_time)) ?
|
||||
\DateTime::createFromFormat(\DateTime::ISO8601, $orderData->update_time)
|
||||
: null;
|
||||
|
@ -81,11 +79,11 @@ class OrderFactory
|
|||
|
||||
return new Order(
|
||||
$orderData->id,
|
||||
\DateTime::createFromFormat(\DateTime::ISO8601, $orderData->create_time),
|
||||
$purchaseUnits,
|
||||
new OrderStatus($orderData->status),
|
||||
$payer,
|
||||
$orderData->intent,
|
||||
$createTime,
|
||||
$updateTime
|
||||
);
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue