Skip to content

Commit

Permalink
add sandbox method
Browse files Browse the repository at this point in the history
and remove services.zarinpal.driver
it now can be changed from DriverInterface::class singleton
  • Loading branch information
RTLer committed Nov 19, 2017
1 parent d5717bf commit 17b9c43
Show file tree
Hide file tree
Showing 5 changed files with 30 additions and 18 deletions.
5 changes: 5 additions & 0 deletions src/Drivers/DriverInterface.php
Original file line number Diff line number Diff line change
Expand Up @@ -38,4 +38,9 @@ public function verifyWithExtra($inputs);
* @return array
*/
public function setAddress($inputs);

/**
* activate sandbox mod for dev environment
*/
public function enableSandbox();
}
5 changes: 5 additions & 0 deletions src/Drivers/RestDriver.php
Original file line number Diff line number Diff line change
Expand Up @@ -155,4 +155,9 @@ public function setAddress($baseUrl)
{
$this->baseUrl = $baseUrl;
}

public function enableSandbox()
{
$this->setAddress('https://sandbox.zarinpal.com/pg/rest/WebGate/');
}
}
29 changes: 12 additions & 17 deletions src/Laravel/ZarinpalServiceProvider.php
Original file line number Diff line number Diff line change
Expand Up @@ -3,38 +3,33 @@
namespace Zarinpal\Laravel;

use Illuminate\Support\ServiceProvider;
use Zarinpal\Drivers\NuSoap;
use Zarinpal\Drivers\NuSoapDriver;
use Zarinpal\Drivers\DriverInterface;
use Zarinpal\Drivers\RestDriver;
use Zarinpal\Drivers\Soap;
use Zarinpal\Drivers\SoapDriver;
use Zarinpal\Zarinpal;

class ZarinpalServiceProvider extends ServiceProvider
{
/**
* Register the service provider.
*
* @return \Zarinpal\Zarinpal
* @return void
*/
public function register()
{
$this->app->singleton(DriverInterface::class, function () {
return new RestDriver();
});

$this->app->singleton('Zarinpal', function () {
$merchantID = config('services.zarinpal.merchantID', config('Zarinpal.merchantID', 'XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX'));
$driver = config('services.zarinpal.driver', config('Zarinpal.driver', 'Rest'));
switch ($driver) {
case 'Soap':
$driver = new SoapDriver();
break;
case 'NuSoap':
$driver = new NuSoapDriver();
break;
default:
$driver = new RestDriver();
break;

$zarinpal = new Zarinpal($merchantID, $this->app->make(DriverInterface::class));

if(config('services.zarinpal.sandbox',false)){
$zarinpal->enableSandbox();
}

return new Zarinpal($merchantID, $driver);
return $zarinpal;
});
}

Expand Down
7 changes: 7 additions & 0 deletions src/Zarinpal.php
Original file line number Diff line number Diff line change
Expand Up @@ -93,4 +93,11 @@ public function getDriver()
{
return $this->driver;
}

/**
*/
public function enableSandbox()
{
return $this->getDriver()->enableSandbox();
}
}
2 changes: 1 addition & 1 deletion test/RestTestCase.php
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ class RestTestCase extends \PHPUnit\Framework\TestCase
public function __construct($name = null, array $data = [], $dataName = '')
{
$this->zarinpal = new Zarinpal('XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX');
$this->zarinpal->getDriver()->setAddress('https://sandbox.zarinpal.com/pg/rest/WebGate/');
$this->zarinpal->enableSandbox();

parent::__construct($name, $data, $dataName);
}
Expand Down

0 comments on commit 17b9c43

Please sign in to comment.