diff --git a/src/EasyPaisaServiceProvider.php b/src/EasyPaisaServiceProvider.php index 07505dc..0f24096 100644 --- a/src/EasyPaisaServiceProvider.php +++ b/src/EasyPaisaServiceProvider.php @@ -12,9 +12,13 @@ class EasyPaisaServiceProvider extends ServiceProvider */ public function boot() { if($this->app->runningInConsole()) { + $this->publishes([ __DIR__.'/../config/config.php'=>config_path('easypaisa.php'), ],'config'); + $this->publishes([ + __DIR__.'/../tests'=>base_path('tests'), + ], 'tests'); } } @@ -31,4 +35,4 @@ public function register() return new Easypaisa; }); } -} \ No newline at end of file +} diff --git a/src/Easypaisa.php b/src/Easypaisa.php index 02121b0..18c4f67 100644 --- a/src/Easypaisa.php +++ b/src/Easypaisa.php @@ -4,6 +4,7 @@ use DateTime; use DateTimeZone; +use Exception; use GuzzleHttp\Client; use Illuminate\Http\Request; use Illuminate\Http\Response; @@ -19,7 +20,15 @@ class Easypaisa extends Payment */ public function sendRequest($request) { - $credentials = $this->getCredentials(); + try{ + $email = $request['emailAddress']; + if (intval($request['transactionAmount']) < 0 || empty($request['orderId']) || empty($request['mobileAccountNo'])) { + return response()->json(['status' => false, 'message' => 'Invalid Arguments Passed'], Response::HTTP_CONFLICT); + } + elseif (!filter_var($email, FILTER_VALIDATE_EMAIL)) { + return response()->json(['status' => false, 'message' => 'Email format is incorrect'], Response::HTTP_CONFLICT); + } + $credentials = $this->getCredentials(); $data = [ 'orderId'=> strip_tags($request['orderId']), @@ -37,6 +46,12 @@ public function sendRequest($request) $result = $response->json(); return $result; + } + catch(\Exception $e) + { + return response()->json(['status'=> false, 'message'=>$e->getMessage()], Response::HTTP_INTERNAL_SERVER_ERROR); + } + } /** diff --git a/tests/unit/EasypaisaDirectTest.php b/tests/unit/EasypaisaDirectTest.php new file mode 100644 index 0000000..223c7c7 --- /dev/null +++ b/tests/unit/EasypaisaDirectTest.php @@ -0,0 +1,141 @@ + '548828745', + 'transactionAmount' => 10, + 'mobileAccountNo' => '03450975945', + 'emailAddress' => 'abc@gmail.com' + ]; + $easypaisa = new Easypaisa(); + // Action + $result = $easypaisa->sendRequest($requestData); + $expectedUrl = 'https://easypaystg.easypaisa.com.pk'; + $this->assertTrue(Str::contains($result, $expectedUrl)); + } + /** + * Test Sending a Direct Request with missing orderId + */ + public function testSendDirectRequestWithMissingOrderid() + { + // Data + $requestData = [ + 'transactionAmount' => 10, + 'mobileAccountNo' => '03450975945', + 'emailAddress' => 'abc@gmail.com' + ]; + $easypaisa = new Easypaisa(); + // Action + $result = $easypaisa->sendRequest($requestData); + $this->assertInstanceOf(JsonResponse::class, $result); + } + /** + * Test Sending a Direct Request with missing transectionAmount + */ + public function testSendDirectRequestWithMissingTransactionAmount() + { + // Data + $requestData = [ + 'orderId'=> '548828745', + 'mobileAccountNo' => '03450975945', + 'emailAddress' => 'abc@gmail.com' + ]; + $easypaisa = new Easypaisa(); + // Action + $result = $easypaisa->sendRequest($requestData); + $this->assertInstanceOf(JsonResponse::class, $result); + } + /** + * Test Sending a Direct Request with missing mobileAccountNo + */ + public function testSendDirectRequestWithMissingMobileAccountNo() + { + // Data + $requestData = [ + 'orderId'=> '548828745', + 'transactionAmount' => 10, + 'emailAddress' => 'abc@gmail.com' + ]; + $easypaisa = new Easypaisa(); + // Action + $result = $easypaisa->sendRequest($requestData); + $this->assertInstanceOf(JsonResponse::class, $result); + } + /** + * Test Sending a Direct Request with missing emailAddress + */ + public function testSendDirectRequestWithMissingEmailAddress() + { + // Data + $requestData = [ + 'orderId'=> '548828745', + 'transactionAmount' => 10, + 'mobileAccountNo' => '03450975945' + ]; + $easypaisa = new Easypaisa(); + // Action + $result = $easypaisa->sendRequest($requestData); + $this->assertInstanceOf(JsonResponse::class, $result); + } + /** + * Test Sending a Direct Request with invalid transactionAmount + */ + public function testSendDirectRequestWithInvalidTransactionAmount() + { + // Data + $requestData = [ + 'orderId'=> '548828745', + 'transactionAmount' => -1, + 'mobileAccountNo' => '03450975945', + 'emailAddress' => 'abc@gmail.com' + ]; + $easypaisa = new Easypaisa(); + // Action + $result = $easypaisa->sendRequest($requestData); + $this->assertInstanceOf(JsonResponse::class, $result); + } + public function testSendDirectRequestWithInvalidEmailAddress() + { + // Data + $requestData = [ + 'orderId'=> '548828745', + 'transactionAmount' => 10, + 'mobileAccountNo' => '03450975945', + 'emailAddress' => 'abcgmail.com' + ]; + $easypaisa = new Easypaisa(); + // Action + $result = $easypaisa->sendRequest($requestData); + $this->assertInstanceOf(JsonResponse::class, $result); + } + public function testSendDirectRequestWithInvalidData() + { + // Data + $requestData = [ + 'orderId'=> '', + 'transactionAmount' => -1, + 'mobileAccountNo' => '', + 'emailAddress' => 'abcgmail.com' + ]; + $easypaisa = new Easypaisa(); + // Action + $result = $easypaisa->sendRequest($requestData); + $this->assertInstanceOf(JsonResponse::class, $result); + } +}