本文整理汇总了PHP中Sylius\Component\Core\Model\OrderInterface::setPaymentState方法的典型用法代码示例。如果您正苦于以下问题:PHP OrderInterface::setPaymentState方法的具体用法?PHP OrderInterface::setPaymentState怎么用?PHP OrderInterface::setPaymentState使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Sylius\Component\Core\Model\OrderInterface
的用法示例。
在下文中一共展示了OrderInterface::setPaymentState方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。
示例1: resolvePaymentState
/**
* {@inheritdoc}
*/
public function resolvePaymentState(OrderInterface $order)
{
$paymentState = PaymentInterface::STATE_NEW;
if ($order->hasPayments()) {
$payments = $order->getPayments();
$completedPaymentTotal = 0;
foreach ($payments as $payment) {
if (PaymentInterface::STATE_COMPLETED === $payment->getState()) {
$completedPaymentTotal += $payment->getAmount();
}
}
if ($completedPaymentTotal >= $order->getTotal()) {
// Payment is completed if we have received full amount.
$paymentState = PaymentInterface::STATE_COMPLETED;
} else {
// Payment is processing if one of the payment is.
if ($payments->exists(function ($key, $payment) {
return in_array($payment->getState(), [PaymentInterface::STATE_PROCESSING, PaymentInterface::STATE_PENDING]);
})) {
$paymentState = PaymentInterface::STATE_PROCESSING;
}
}
}
$order->setPaymentState($paymentState);
}
示例2: Payment
function it_marks_order_as_new_if_no_payment_is_in_process(OrderInterface $order)
{
$payment1 = new Payment();
$payment1->setAmount(6000);
$payment1->setState(PaymentInterface::STATE_NEW);
$payment2 = new Payment();
$payment2->setAmount(4000);
$payment2->setState(PaymentInterface::STATE_NEW);
$payments = new ArrayCollection(array($payment1, $payment2));
$order->hasPayments()->willReturn(true);
$order->getPayments()->willReturn($payments);
$order->getTotal()->willReturn(10000);
$order->setPaymentState(PaymentInterface::STATE_NEW)->shouldBeCalled();
$this->resolvePaymentState($order);
}