Viewing file: MolliePayment.php (4.59 KB) -rw-r--r-- Select action/file-type: (+) | (+) | (+) | Code (+) | Session (+) | (+) | SDB (+) | (+) | (+) | (+) | (+) | (+) |
<?php
namespace Modules\PaymentGateway\WHNPurchaseGateway;
use App\Models\BillingRequest;
use App\Models\Customer;
use App\Models\Number;
use App\Models\NumberRequest;
use Carbon\Carbon;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Log;
class MolliePayment implements PaymentInterface
{
public $numberReq;
public $redirect_url;
public $error_message;
public $return_view;
public $will_redirect= false;
public function __construct()
{
}
public function pay()
{
// TODO: Implement pay() method.
}
public function getCredentials()
{
$credentials = json_decode(get_settings('payment_gateway'));
if (!isset($credentials->mollie_status) || !$credentials->mollie_api_key || $credentials->mollie_status != 'active') {
throw new \Exception('Credentials not found. Please contact with the administrator');
}
return $credentials;
}
public function request($request)
{
$this->request = $request;
return $this;
}
public function number($number)
{
$this->number = $number;
return $this;
}
public function number_request($numberReq)
{
$this->numberReq = $numberReq;
return $this;
}
public function will_redirect()
{
// TODO: Implement will_redirect() method.
return $this->will_redirect;
}
public function redirect_url()
{
// TODO: Implement redirect_url() method.
return $this->redirect_url;
}
public function return_view()
{
// TODO: Implement redirect_url() method.
return $this->return_view;
}
public function error_message()
{
// TODO: Implement error_message() method.
return $this->error_message;
}
public function process()
{
$mollieData = $this->molliePayment($this->numberReq);
if ($mollieData && $mollieData->id) {
$this->redirect_url = $mollieData->getCheckoutUrl();
$this->will_redirect = true;
$this->return_view = null;
}
}
function molliePayment($numberReq)
{
$credentials = $this->getCredentials();
if (!isset($credentials->mollie_status) || !$credentials->mollie_api_key || $credentials->mollie_status != 'active') {
throw new \Exception(trans('Invalid Payment'));
}
$mollie = new \Mollie\Api\MollieApiClient();
$mollie->setApiKey($credentials->mollie_api_key);
$payment = $mollie->payments->create([
"amount" => [
"currency" => 'USD',
"value" => $numberReq->sell_price . ""
],
"description" => "For number upgrade #" . $numberReq->id,
"redirectUrl" => route('paymentgateway::payment.number.mollie.success'),
"webhookUrl" => route('paymentgateway::payment.number.changenumber.mollie.webhook', ['id' => $numberReq->id]),
]);
return $payment;
}
public function processMollieSuccess()
{
return redirect()->route('customer.numbers.purchase')->with('success', trans('Congratulations! Your number successfully purchase'));
}
public function processMollieWebhook($number_request, Request $request)
{
if (!$number_request) {
Log::info("user number not found");
exit;
};
$numberRequest = NumberRequest::find($number_request);
if (!$numberRequest) {
Log::info("Number Request not found -" . $numberRequest);
exit;
};
$customer=Customer::find($numberRequest->customer_id);
$number=Number::find($numberRequest->number_id);
$numberRequest->status = 'accepted';
$numberRequest->save();
if (isset($number) && isset($customer)) {
$time = Carbon::now()->addMonths(1);
$customer->numbers()->create(['number_id' => $number->id, 'number' => $number->number, 'expire_date' => $time, 'cost' => $number->sell_price]);
}
$credentials = json_decode(get_settings('payment_gateway'));
if (!isset($credentials->mollie_status) || !$credentials->mollie_api_key || $credentials->mollie_status != 'active') {
Log::info(trans('Invalid Payment'));
exit();
}
$mollie = new \Mollie\Api\MollieApiClient();
$mollie->setApiKey($credentials->mollie_api_key);
$payment = $mollie->payments->get($request->id);
}
}
|