Feat: Tying Specific Methods with Carrier Drivers
This commit is contained in:
@@ -5,6 +5,7 @@ namespace Modules\Core\Payment\Drivers;
|
||||
use Illuminate\Support\Str;
|
||||
use Lunar\DataTypes\Price;
|
||||
use Modules\Core\Payment\Contracts\Configurable;
|
||||
use Modules\Core\Payment\Contracts\RequiresFulfillmentType;
|
||||
use Modules\Core\Payment\Contracts\SupportsPay;
|
||||
use Modules\Core\Payment\DTOs\PaymentResult;
|
||||
use Modules\Core\Payment\Enums\PaymentResultStatus;
|
||||
@@ -44,13 +45,24 @@ use Modules\Core\Payment\Events\PaymentDeferred;
|
||||
* — a real bug, not a hypothetical, caught and fixed after the fact. See
|
||||
* PaymentDeferred's own docblock for the full reasoning.
|
||||
*/
|
||||
class CashOnDeliveryPaymentDriver implements Configurable, SupportsPay
|
||||
class CashOnDeliveryPaymentDriver implements Configurable, SupportsPay, RequiresFulfillmentType
|
||||
{
|
||||
public function isConfigured(): bool
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* "On delivery" is the operative word — a carrier physically hands
|
||||
* over the parcel and collects payment at that moment. Meaningless
|
||||
* for store pickup, which already has OfflinePaymentDriver for the
|
||||
* equivalent in-person moment.
|
||||
*/
|
||||
public function requiredFulfillmentType(): string
|
||||
{
|
||||
return 'carrier';
|
||||
}
|
||||
|
||||
public function pay(string $type, Price $amount, array $data = [], array $context = []): PaymentResult
|
||||
{
|
||||
$result = new PaymentResult(
|
||||
|
||||
Reference in New Issue
Block a user