Skip to content

Commit cf59bb0

Browse files
committed
Merge branch 'master' of github.com:iamtartan/laravel-iranian-sms
2 parents f6d7554 + 3804119 commit cf59bb0

File tree

10 files changed

+173
-111
lines changed

10 files changed

+173
-111
lines changed

README.md

Lines changed: 17 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
# Laravel SMS Component
2-
Laravel Package for dealing with Iranian SMS prodivers working with Laravel 5 & 6
2+
Laravel Package for dealing with Iranian SMS prodivers working with Laravel 5 & 6
33

44
## Installation
55

@@ -18,7 +18,7 @@ composer require tartan/laravel-iranian-sms
1818
'IranianSms' => Tartan\IranianSms\Facades\IranianSms::class
1919
```
2020

21-
4.Publish the config file
21+
4.Publish the config file
2222
```bash
2323
php artisan vendor:publish --provider="Tartan\IranianSms\SmsServiceProvider" --tag=config
2424
```
@@ -42,7 +42,7 @@ php artisan vendor:publish --provider="Tartan\IranianSms\SmsServiceProvider" --t
4242
### available adapters
4343
* log (no charge adapter for development purposes)
4444
* slack (no charge adapter for development and staging environment)
45-
* mehrafzar مهر افزار
45+
* mehrafraz مهر افراز
4646
* kavenegar کاوه نگار
4747
* smsir اسمس آی آر
4848
* ghasedak قاصدک
@@ -56,26 +56,26 @@ php artisan vendor:publish --provider="Tartan\IranianSms\SmsServiceProvider" --t
5656

5757
return [
5858
//Default SMS gateway
59-
'default' => env('IRANIANSMS_DEFAULT','mehrafzar'),
60-
'mehrafzar' => [
61-
'gateway' => env('IRANIANSMS_MEHRAFZAR_GATEWAY','http://mehrafraz.com/webservice/Service.asmx?WSDL'),
62-
'username' => env('IRANIANSMS_MEHRAFZAR_USERNAME','test'),
63-
'password' => env('IRANIANSMS_MEHRAFZAR_PASSWORD','test'),
59+
'default' => env('IRANIANSMS_DEFAULT','log'),
60+
'mehrafraz' => [
61+
'gateway' => env('IRANIANSMS_MEHRAFRAZ_GATEWAY','http://mehrafraz.com/webservice/Service.asmx?WSDL'),
62+
'username' => env('IRANIANSMS_MEHRAFRAZ_USERNAME','test'),
63+
'password' => env('IRANIANSMS_MEHRAFRAZ_PASSWORD','test'),
6464
],
6565
'kavenegar' => [
6666
'gateway' => env('IRANIANSMS_KAVENEGAR_GATEWAY','http://api.kavenegar.com/v1/%s/%s/%s.json/'),
6767
'api_key' => env('IRANIANSMS_KAVENEGAR_APIKEY','test'),
6868
'sender' => env('IRANIANSMS_KAVENEGAR_SENDER','test'),
6969
],
7070
'smsir' => [
71-
'gateway' => env('IRANIANSMS_SMSIR_GATEWAY', 'http://ip.sms.ir/SendMessage.ashx'),
72-
'user' => env('IRANIANSMS_SMSIR_USER', 'test'),
73-
'pass' => env('IRANIANSMS_SMSIR_PASS', 'test'),
74-
'line_no' => env('IRANIANSMS_SMSIR_LINENO', 'test'),
75-
],
76-
'ghasedak'=> [
77-
'api_key' => env('IRANIANSMS_GHASEDAK_APIKEY', 'test'),
78-
'sender' => env('IRANIANSMS_GHASEDAK_SENDER', 'test'),
79-
],
71+
'gateway' => env('IRANIANSMS_SMSIR_GATEWAY', 'http://ip.sms.ir/SendMessage.ashx'),
72+
'user' => env('IRANIANSMS_SMSIR_USER', 'test'),
73+
'pass' => env('IRANIANSMS_SMSIR_PASS', 'test'),
74+
'line_no' => env('IRANIANSMS_SMSIR_LINENO', 'test'),
75+
],
76+
'ghasedak'=> [
77+
'api_key' => env('IRANIANSMS_GHASEDAK_APIKEY', 'test'),
78+
'sender' => env('IRANIANSMS_GHASEDAK_SENDER', 'test'),
79+
],
8080
];
8181
```

composer.json

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
{
22
"name": "tartan/laravel-iranian-sms",
33
"description": "Laravel 5.x sms handler for working with most iranian sms operators",
4-
"keywords": ["laravel", "sms", "iran-sm", "iranian-sms", "magfa", "adp", "kave-negar", "mehr-afraz", "ghasedak"],
4+
"keywords": ["laravel", "sms", "iran-sm", "iranian-sms", "magfa", "adp", "kave-negar", "mehr-afraz"],
55
"type": "laravel-component",
66
"license": "MIT",
77
"authors": [
@@ -17,10 +17,11 @@
1717
},
1818
"require": {
1919
"php": ">=5.4",
20+
"illuminate/support": ">=5.0.0",
2021
"ext-soap": "*",
2122
"ext-curl": "*",
22-
"ext-json": "*",
23-
"illuminate/support": ">=5.0.0",
24-
"ghasedak/php":"dev-master"
23+
"ext-json": "*",
24+
"ghasedak/php":"dev-master",
25+
"kavenegar/php": "*"
2526
}
2627
}

config/iranian_sms.php

Lines changed: 16 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -3,27 +3,38 @@
33
return [
44
//Default SMS gateway
55
'default' => env('IRANIANSMS_DEFAULT', 'log'), // laravel built in log
6-
'mehrafzar' => [
7-
'gateway' => env('IRANIANSMS_MEHRAFZAR_GATEWAY', 'http://mehrafraz.com/webservice/Service.asmx?WSDL'),
8-
'username' => env('IRANIANSMS_MEHRAFZAR_USERNAME', 'test'),
9-
'password' => env('IRANIANSMS_MEHRAFZAR_PASSWORD', 'test'),
6+
7+
'mehrafraz' => [
8+
'gateway' => env('IRANIANSMS_MEHRAFRAZ_GATEWAY', 'http://mehrafraz.com/webservice/Service.asmx?WSDL'),
9+
'username' => env('IRANIANSMS_MEHRAFRAZ_USERNAME', 'test'),
10+
'password' => env('IRANIANSMS_MEHRAFRAZ_PASSWORD', 'test'),
1011
],
12+
1113
'kavenegar' => [
1214
'gateway' => env('IRANIANSMS_KAVENEGAR_GATEWAY', 'http://api.kavenegar.com/v1/%s/%s/%s.json/'),
1315
'api_key' => env('IRANIANSMS_KAVENEGAR_APIKEY', 'test'),
1416
'sender' => env('IRANIANSMS_KAVENEGAR_SENDER', 'test'),
1517
],
18+
1619
'smsir' => [
1720
'gateway' => env('IRANIANSMS_SMSIR_GATEWAY', 'http://ip.sms.ir/SendMessage.ashx'),
1821
'user' => env('IRANIANSMS_SMSIR_USER', 'test'),
1922
'pass' => env('IRANIANSMS_SMSIR_PASS', 'test'),
2023
'line_no' => env('IRANIANSMS_SMSIR_LINENO', 'test'),
2124
],
25+
2226
'ghasedak'=> [
2327
'api_key' => env('IRANIANSMS_GHASEDAK_APIKEY', 'test'),
2428
'sender' => env('IRANIANSMS_GHASEDAK_SENDER', 'test'),
2529
],
30+
2631
'slack' => [
2732
'url' => env('IRANIANSMS_SLACK_URL')
33+
],
34+
35+
'parsasms' => [
36+
'gateway' => env('IRANIANSMS_PARSASMS_GATEWAY','http://api.parsasms.com/v2/sms/send/simple'),
37+
'api_key' => env('IRANIANSMS_PARSASMS_APIKEY','test'),
38+
'sender' => env('IRANIANSMS_PARSASMS_SENDER','test')
2839
]
29-
];
40+
];

src/Adapter/Ghasedak.php

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,6 @@
66

77
class Ghasedak extends AdapterAbstract implements AdapterInterface
88
{
9-
109
private $credential = [
1110
'api_key' => '',
1211
'sender' => ''
@@ -20,7 +19,6 @@ public function __construct()
2019

2120
public function send(string $number, string $message)
2221
{
23-
2422
$number = $this->filterNumber($number);
2523

2624
$api = new GhasedakApi($this->credential['api_key']);
@@ -30,6 +28,5 @@ public function send(string $number, string $message)
3028
$message,
3129
$this->credential['sender']
3230
);
33-
3431
}
3532
}

src/Adapter/MehrAfraz.php

Lines changed: 76 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,76 @@
1+
<?php
2+
3+
namespace Tartan\IranianSms\Adapter;
4+
5+
class MehrAfraz extends AdapterAbstract implements AdapterInterface {
6+
7+
public $gateway_url;
8+
9+
private $credential = [
10+
'username' => '',
11+
'password' => '',
12+
];
13+
14+
public static $status_real = [
15+
0 => 'SENDING',
16+
1 => 'SERVICE_DELIVERED',
17+
2 => 'DELIVERED',
18+
3 => 'FAILED',
19+
4 => 'BLACKLIST',
20+
5 => 'NOT_EXPERT',
21+
6 => 'CANCELED',
22+
7 => 'UNKNOWN_DESTINATION',
23+
8 => 'BTS_SENT',
24+
12 => 'NOT_SENT_OPERATOR',
25+
16 => 'BTS_ERROR',
26+
];
27+
28+
public function __construct() {
29+
$this->gateway_url = config('iranian_sms.mehrafraz.gateway');
30+
$this->credential['username'] = config('iranian_sms.mehrafraz.username');
31+
$this->credential['password'] = config('iranian_sms.mehrafraz.password');
32+
}
33+
34+
public function send(String $number,String $message) {
35+
36+
$number = $this->filterNumber($number);
37+
38+
$parameters = [
39+
'cUserName' => $this->credential['username'],
40+
'cPassword' => $this->credential['password'],
41+
'cBody' => $message,
42+
'cSmsnumber' => $number,
43+
'cGetid' => time(),
44+
'nCMessage' => '1',
45+
'nTypeSent' => '1',
46+
'm_SchedulDate' => '',
47+
'cDomainname' => $this->credential['username'],
48+
'nSpeedsms' => '0',
49+
'nPeriodmin' => '0',
50+
'cstarttime' => '',
51+
'cEndTime' => '',
52+
];
53+
54+
try {
55+
$soapParams = [];
56+
$soapParams['xml_encoding'] = "UTF-8";
57+
$soapParams['soap_defencoding'] = "UTF-8";
58+
$soapParams['decode_utf8'] = false;
59+
$soapParams['exceptions'] = 1;
60+
$soapClient = @new \SoapClient($this->gateway_url, $soapParams);
61+
$result = $soapClient->SendSms($parameters);
62+
} catch (SoapFault $client) {
63+
//
64+
} catch (Exception $e) {
65+
//
66+
}
67+
68+
69+
if (($result->SendSmsResult && $result->SendSmsResult > 1000)) {
70+
return $result->SendSmsResult;
71+
}
72+
73+
throw new \Exception("SMS cannot be send!");
74+
}
75+
76+
}

src/Adapter/MehrAfzar.php

Lines changed: 0 additions & 73 deletions
This file was deleted.

src/Adapter/ParsaSms.php

Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,53 @@
1+
<?php
2+
3+
namespace Tartan\IranianSms\Adapter;
4+
5+
use Ghasedak\GhasedakApi;
6+
use Exception;
7+
8+
class ParsaSms extends AdapterAbstract implements AdapterInterface
9+
{
10+
private $credential = [
11+
'gateway' => '',
12+
'api_key' => '',
13+
'sender' => ''
14+
];
15+
16+
public function __construct()
17+
{
18+
$this->credential['gateway'] = config('iranian_sms.parsasms.gateway');
19+
$this->credential['api_key'] = config('iranian_sms.parsasms.api_key');
20+
$this->credential['sender'] = config('iranian_sms.parsasms.sender');
21+
}
22+
23+
public function send(String $number, String $message)
24+
{
25+
$number = $this->filterNumber($number);
26+
$sender = $this->credential['sender'];
27+
$api_key = $this->credential['api_key'];
28+
29+
$curl = curl_init();
30+
curl_setopt_array($curl, array(
31+
CURLOPT_URL => $this->credential['gateway'],
32+
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
33+
CURLOPT_CUSTOMREQUEST => "POST",
34+
CURLOPT_POSTFIELDS => "message=$message &sender=$sender &Receptor=$number",
35+
CURLOPT_CONNECTTIMEOUT => 5,
36+
CURLOPT_TIMEOUT => 5,
37+
CURLOPT_HTTPHEADER => array(
38+
"apikey: $api_key"),
39+
CURLOPT_RETURNTRANSFER => true,
40+
));
41+
42+
$response = curl_exec($curl);
43+
curl_close($curl);
44+
45+
$response_array = json_decode($response,TRUE);
46+
47+
if (!(isset($response_array['result']) && $response_array['result'] == 'success')){
48+
throw new Exception("Error: ".$response);
49+
}
50+
51+
return $response;
52+
}
53+
}

src/Adapter/SmsIr.php

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4,15 +4,14 @@
44

55
class SmsIr extends AdapterAbstract implements AdapterInterface
66
{
7-
87
public $gateway_url;
8+
99
private $credential = [
1010
'user' => '',
1111
'pass' => '',
1212
'lineNo' => '',
1313
];
1414

15-
1615
public function __construct()
1716
{
1817
$this->gateway_url = config('iranian_sms.smsir.gateway');
@@ -23,7 +22,6 @@ public function __construct()
2322

2423
public function send(string $number, string $message)
2524
{
26-
2725
$number = $this->filterNumber($number);
2826

2927
$propertiesObject = [
@@ -34,7 +32,7 @@ public function send(string $number, string $message)
3432
'text' => $message,
3533
];
3634

37-
$ch = curl_init($this->gateway_url . '?' . http_build_query($propertiesObject)); // such as http://example.com/example.xml
35+
$ch = curl_init($this->gateway_url . '?' . http_build_query($propertiesObject)); // e.g. http://example.com/example.xml
3836
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
3937
curl_setopt($ch, CURLOPT_HEADER, 0);
4038
$data = curl_exec($ch);

0 commit comments

Comments
 (0)