Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 1 addition & 2 deletions config/payment.php
Original file line number Diff line number Diff line change
Expand Up @@ -41,8 +41,7 @@
],

'wave' => [
'client_key' => '',
'client_secret' => '',
'api_key' => '', // Your Wave API key (starts with wave_sn_prod_ or wave_sn_sandbox_)
'webhook_secret' => ''
],

Expand Down
14 changes: 11 additions & 3 deletions src/IvoryCost/OrangeMoney/OrangeMoneyGateway.php
Original file line number Diff line number Diff line change
Expand Up @@ -37,9 +37,17 @@ public function payment(...$args)
// Set the right production endpoint
$payment->setPaymentEndpoint('/orange-money-webpay/v1/webpayment');

$payment->setNotifyUrl($args['notif_url']);
$payment->setCancelUrl($args['cancel_url']);
$payment->setReturnUrl($args['return_url']);
if (isset($args['notif_url'])) {
$payment->setNotifyUrl($args['notif_url']);
}

if (isset($args['cancel_url'])) {
$payment->setCancelUrl($args['cancel_url']);
}

if (isset($args['return_url'])) {
$payment->setReturnUrl($args['return_url']);
}

$amount = $args['amount'];
$reference = $args['reference'];
Expand Down
249 changes: 249 additions & 0 deletions src/IvoryCost/Wave/WaveCheckoutSession.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,249 @@
<?php

namespace Bow\Payment\IvoryCost\Wave;

/**
* Wave Checkout Session
* Represents a Wave checkout session object
*/
class WaveCheckoutSession
{
/**
* WaveCheckoutSession constructor
*
* @param string $id
* @param string $amount
* @param string $checkoutStatus
* @param string $paymentStatus
* @param string $currency
* @param string $businessName
* @param string $successUrl
* @param string $errorUrl
* @param string $waveLaunchUrl
* @param string|null $transactionId
* @param string|null $clientReference
* @param string|null $aggregatedMerchantId
* @param string|null $restrictPayerMobile
* @param array|null $lastPaymentError
* @param string $whenCreated
* @param string|null $whenCompleted
* @param string $whenExpires
*/
public function __construct(
private string $id,
private string $amount,
private string $checkoutStatus,
private string $paymentStatus,
private string $currency,
private string $businessName,
private string $successUrl,
private string $errorUrl,
private string $waveLaunchUrl,
private ?string $transactionId = null,
private ?string $clientReference = null,
private ?string $aggregatedMerchantId = null,
private ?string $restrictPayerMobile = null,
private ?array $lastPaymentError = null,
private string $whenCreated = '',
private ?string $whenCompleted = null,
private string $whenExpires = ''
) {
}

/**
* Create from API response
*
* @param array $data
* @return self
*/
public static function fromResponse(array $data): self
{
return new self(
id: $data['id'],
amount: $data['amount'],
checkoutStatus: $data['checkout_status'],
paymentStatus: $data['payment_status'],
currency: $data['currency'],
businessName: $data['business_name'],
successUrl: $data['success_url'],
errorUrl: $data['error_url'],
waveLaunchUrl: $data['wave_launch_url'],
transactionId: $data['transaction_id'] ?? null,
clientReference: $data['client_reference'] ?? null,
aggregatedMerchantId: $data['aggregated_merchant_id'] ?? null,
restrictPayerMobile: $data['restrict_payer_mobile'] ?? null,
lastPaymentError: $data['last_payment_error'] ?? null,
whenCreated: $data['when_created'],
whenCompleted: $data['when_completed'] ?? null,
whenExpires: $data['when_expires']
);
}

/**
* Get checkout session ID
*
* @return string
*/
public function getId(): string
{
return $this->id;
}

/**
* Get amount
*
* @return string
*/
public function getAmount(): string
{
return $this->amount;
}

/**
* Get checkout status
*
* @return string
*/
public function getCheckoutStatus(): string
{
return $this->checkoutStatus;
}

/**
* Get payment status
*
* @return string
*/
public function getPaymentStatus(): string
{
return $this->paymentStatus;
}

/**
* Get Wave launch URL
*
* @return string
*/
public function getWaveLaunchUrl(): string
{
return $this->waveLaunchUrl;
}

/**
* Get transaction ID
*
* @return string|null
*/
public function getTransactionId(): ?string
{
return $this->transactionId;
}

/**
* Get client reference
*
* @return string|null
*/
public function getClientReference(): ?string
{
return $this->clientReference;
}

/**
* Check if checkout is open
*
* @return bool
*/
public function isOpen(): bool
{
return $this->checkoutStatus === 'open';
}

/**
* Check if checkout is complete
*
* @return bool
*/
public function isComplete(): bool
{
return $this->checkoutStatus === 'complete';
}

/**
* Check if checkout is expired
*
* @return bool
*/
public function isExpired(): bool
{
return $this->checkoutStatus === 'expired';
}

/**
* Check if payment succeeded
*
* @return bool
*/
public function isPaymentSucceeded(): bool
{
return $this->paymentStatus === 'succeeded';
}

/**
* Check if payment is processing
*
* @return bool
*/
public function isPaymentProcessing(): bool
{
return $this->paymentStatus === 'processing';
}

/**
* Check if payment is cancelled
*
* @return bool
*/
public function isPaymentCancelled(): bool
{
return $this->paymentStatus === 'cancelled';
}

/**
* Get last payment error
*
* @return array|null
*/
public function getLastPaymentError(): ?array
{
return $this->lastPaymentError;
}

/**
* Convert to array
*
* @return array
*/
public function toArray(): array
{
return [
'id' => $this->id,
'amount' => $this->amount,
'checkout_status' => $this->checkoutStatus,
'payment_status' => $this->paymentStatus,
'currency' => $this->currency,
'business_name' => $this->businessName,
'success_url' => $this->successUrl,
'error_url' => $this->errorUrl,
'wave_launch_url' => $this->waveLaunchUrl,
'transaction_id' => $this->transactionId,
'client_reference' => $this->clientReference,
'aggregated_merchant_id' => $this->aggregatedMerchantId,
'restrict_payer_mobile' => $this->restrictPayerMobile,
'last_payment_error' => $this->lastPaymentError,
'when_created' => $this->whenCreated,
'when_completed' => $this->whenCompleted,
'when_expires' => $this->whenExpires,
];
}
}
Loading