<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Ariful Islam</title>
    <description>The latest articles on DEV Community by Ariful Islam (@arif98741).</description>
    <link>https://dev.to/arif98741</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F93358%2Fa904c3cf-3ff5-4f28-bb7d-3c3beb51e457.jpg</url>
      <title>DEV Community: Ariful Islam</title>
      <link>https://dev.to/arif98741</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/arif98741"/>
    <language>en</language>
    <item>
      <title>Use Nagad API PHP SDK to PHP Application for Taking Payment</title>
      <dc:creator>Ariful Islam</dc:creator>
      <pubDate>Mon, 27 Jun 2022 19:37:03 +0000</pubDate>
      <link>https://dev.to/arif98741/use-nagad-api-php-sdk-to-php-application-for-taking-payment-4pl1</link>
      <guid>https://dev.to/arif98741/use-nagad-api-php-sdk-to-php-application-for-taking-payment-4pl1</guid>
      <description>&lt;p&gt;Nagad is a popular mobile banking service in Bangladesh. A large number of people around the country are using nagad. For paying payment using nagad wallet you need to have nagad account and website/app owner need to have merchant account. Merchant can take payment easily by implementing api provided by nagad. Here is the github link for this package &lt;a href="https://github.com/arif98741/nagadApi" rel="noopener noreferrer"&gt;https://github.com/arif98741/nagadApi&lt;/a&gt; &lt;/p&gt;

&lt;p&gt;PHP is a popular programming language. To use nagad in php based application its needed to implement API. Here I've made a php sdk library called &lt;code&gt;xenon/nagad-api&lt;/code&gt; that will reduce your headache regarding nagad api. Here I am guiding you how to use nagad php sdk library in your php application.&lt;/p&gt;

&lt;p&gt;Step 1:&lt;br&gt;
&lt;code&gt;composer require xenon/nagad-api&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Step 2: &lt;/p&gt;

&lt;h1&gt;
  
  
  Example Code
&lt;/h1&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight php"&gt;&lt;code&gt;
&lt;span class="cp"&gt;&amp;lt;?php&lt;/span&gt;

&lt;span class="kn"&gt;use&lt;/span&gt; &lt;span class="nc"&gt;Xenon\NagadApi\Helper&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="kn"&gt;use&lt;/span&gt; &lt;span class="nc"&gt;Xenon\NagadApi\Base&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="k"&gt;require&lt;/span&gt; &lt;span class="s1"&gt;'vendor/autoload.php'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="c1"&gt;//all configuration are used here for demo purpose.&lt;/span&gt;
&lt;span class="c1"&gt;//for use in dev mode use 'development'&lt;/span&gt;
&lt;span class="c1"&gt;//for use in production mode use 'production'&lt;/span&gt;
&lt;span class="nv"&gt;$config&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;
    &lt;span class="s1"&gt;'NAGAD_APP_ENV'&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="s1"&gt;'development'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="c1"&gt;//development|production&lt;/span&gt;
    &lt;span class="s1"&gt;'NAGAD_APP_LOG'&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="s1"&gt;'1'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="s1"&gt;'NAGAD_APP_ACCOUNT'&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="s1"&gt;'016XXXXXXXX'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="c1"&gt;//demo&lt;/span&gt;
    &lt;span class="s1"&gt;'NAGAD_APP_MERCHANTID'&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="s1"&gt;'6800000025'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="c1"&gt;//demo&lt;/span&gt;
    &lt;span class="s1"&gt;'NAGAD_APP_MERCHANT_PRIVATE_KEY'&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="s1"&gt;'MIIEvFAAxN1qfKiRiCL720FtrI7QL7fvQ=='&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="s1"&gt;'NAGAD_APP_MERCHANT_PG_PUBLIC_KEY'&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="s1"&gt;'MIIBIjANBc54jjMJoP2toR9fGmQV7y9fzj6TIz9SFfsTQOugHkhyRzzhvZisiKzOAAWNX8RMpG+iqQi4p9W9VrmmiCfFDmLFnMrwhncnMsvlXB8QSJCq2irrx3HG0SJJCbS5+atz+E1iqO8QaPJ05snxv82Mf4NlZ4gZK0Pq/VvJ20lSkR+0nk+s/v3BgIyle78wjZP1vWLU4wIDAQAB'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="s1"&gt;'NAGAD_APP_TIMEZONE'&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="s1"&gt;'Asia/Dhaka'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="p"&gt;];&lt;/span&gt;

&lt;span class="nv"&gt;$nagad&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;Base&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;$config&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;
    &lt;span class="s1"&gt;'amount'&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="mi"&gt;100&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="s1"&gt;'invoice'&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="nc"&gt;Helper&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="nf"&gt;generateFakeInvoice&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;15&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;
    &lt;span class="s1"&gt;'merchantCallback'&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="s1"&gt;'https://example.com/payment/success/id=4'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="p"&gt;]);&lt;/span&gt;
&lt;span class="c1"&gt;//way 1 - use for website&lt;/span&gt;
&lt;span class="nv"&gt;$status&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nv"&gt;$nagad&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="nf"&gt;payNow&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;$nagad&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt; &lt;span class="c1"&gt;//will redirect to payment url of Nagad&lt;/span&gt;

&lt;span class="c1"&gt;//way 2 - useful for rest api or graphQL &lt;/span&gt;
&lt;span class="nv"&gt;$paymentUrl&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nv"&gt;$nagad&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="nf"&gt;payNowWithoutRedirection&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;$nagad&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt; &lt;span class="c1"&gt;//will return payment url like below. You can use that url and do whatever u want to get payment from clients. &lt;/span&gt;
&lt;span class="c1"&gt;//&lt;/span&gt;
&lt;span class="sb"&gt;`http://sandbox.mynagad.com:10060/check-out/MDYyODAwNTcyNTYxNi42ODMwMDIwMDcxMDQyMjUuOU5PTEFVNkVaWkdUWVRBLmJiZGMyNTE3MTVmZTNiNjIzN2Zk`&lt;/span&gt;

&lt;span class="c1"&gt;//after that use below method for extracting payment response that will return an array&lt;/span&gt;
&lt;span class="nv"&gt;$response&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nc"&gt;Helper&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="nf"&gt;successResponse&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'https://example.com/payment/success/id=4/?merchant=683XXXX225&amp;amp;order_id=CKH060JXXXXXFRA2&amp;amp;payment_ref_id=MXXXXXXXXtIMDYwSjFRSlBRMUZSQTIuMTg0NTE2Yzc3ZmEzNmEwZTJlZjk=&amp;amp;status=Success&amp;amp;status_code=00_0000_000&amp;amp;message=Successful%20Transaction&amp;amp;payment_dt=20211123235008&amp;amp;issuer_payment_ref=MTEyMzIzNDg1NzUwOS42ODMwMDIwMDcxMDQyMjUuQ0tIMDYwSjFRSlBRMUZSQTIuMTg0NTE2Yzc3ZmEzNmEwZTJlZjk='&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="k"&gt;Array&lt;/span&gt;
&lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;merchant&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="mi"&gt;683&lt;/span&gt;&lt;span class="no"&gt;XXXX225&lt;/span&gt;
    &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;order_id&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="no"&gt;CKH060JXXXXXFRA2&lt;/span&gt;
    &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;payment_ref_id&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="nc"&gt;MXXXXXXXXtIMDYwSjFRSlBRMUZSQTIuMTg0NTE2Yzc3ZmEzNmEwZTJlZjk&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;
    &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;status&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="nc"&gt;Success&lt;/span&gt;
    &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;status_code&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="mo"&gt;00_0000_000&lt;/span&gt;
    &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;message&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="nc"&gt;Successful&lt;/span&gt; &lt;span class="nc"&gt;Transaction&lt;/span&gt;
    &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;payment_dt&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="mi"&gt;20211123235008&lt;/span&gt;
    &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;issuer_payment_ref&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="nc"&gt;MTEyMzIzNDg1NzUwOXXXXXtIMDYwSjFRSlBRMUZSQTIuMTg0NTE2Yzc3ZmEzNmEwZTJlZjk&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;
&lt;span class="p"&gt;)&lt;/span&gt;


&lt;span class="c1"&gt;//For payment verification use below method. You will then get below json as response. &lt;/span&gt;
&lt;span class="k"&gt;echo&lt;/span&gt; &lt;span class="nv"&gt;$config&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="nf"&gt;verifyPayment&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;$response&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s1"&gt;'payment_ref_id'&lt;/span&gt;&lt;span class="p"&gt;]);&lt;/span&gt;
&lt;span class="c1"&gt;## Payment verification Response&lt;/span&gt;
&lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="n"&gt;merchantId&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"683XXXX225"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;orderId&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"CKH060JXXXXXFRA2"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;paymentRefId&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"MXXXXXXXXtIMDYwSjFRSlBRMUZSQTIuMTg0NTE2Yzc3ZmEzNmEwZTJlZjk="&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;amount&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"16"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;clientMobileNo&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"016****5428"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;merchantMobileNo&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"01XXXXXXX10"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;orderDateTime&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"2021-11-23 23:48:22.0"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;issuerPaymentDateTime&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"2021-11-23 23:50:08.0"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;issuerPaymentRefNo&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"000XXXW"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;additionalMerchantInfo&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;null&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;status&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"Success"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;statusCode&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"000"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;cancelIssuerDateTime&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;null&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;cancelIssuerRefNo&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;null&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h1&gt;
  
  
  Information:
&lt;/h1&gt;

&lt;h3&gt;
  
  
  Sandbox
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;Need sandbox details for sandbox testing. Check your email that you have got from nagad authority&lt;/li&gt;
&lt;li&gt;Use sandbox details such as pgpublickey, privatekey, merchant-id for sandbox testing&lt;/li&gt;
&lt;li&gt;You need to register a mobile number for sandbox testing. Contact with your account manager for doing this&lt;/li&gt;
&lt;li&gt;You should test environment before going to live&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  Live
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;Need production details for production final. You will get through email&lt;/li&gt;
&lt;li&gt;Your server ip/domain should be whitelisted before running in production&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Login to your nagad merchant panel&lt;/p&gt;

&lt;p&gt;&lt;code&gt;https://auth.mynagad.com:10900/authentication-service-provider-1.0/login&lt;br&gt;
&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 1:&lt;/strong&gt;&lt;br&gt;
In the Merchant Portal, Go to Merchant Integration Details under Merchant Management Menu.&lt;br&gt;
You will get the Merchant ID which is your Merchant ID for Integration.&lt;/p&gt;

&lt;p&gt;Then, Click on “Key Generate” and &lt;br&gt;
Download the Merchant Private Key and Merchant Public Key.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 2:&lt;/strong&gt;&lt;br&gt;
Go to Merchant Integration under Merchant Management Menu.&lt;br&gt;
Put your Call Back URL and Upload the Merchant Public Key which you have downloaded in Step 1. Add and Submit!&lt;/p&gt;

&lt;p&gt;For more tech blog visit &lt;a href="https://programmingmindset.com" rel="noopener noreferrer"&gt;https://programmingmindset.com&lt;/a&gt;&lt;/p&gt;

</description>
      <category>nagad</category>
      <category>nagadapi</category>
      <category>nagadphp</category>
    </item>
    <item>
      <title>Bangladeshi Courier Company Api Integration in Laravel Using Xenon Multicourier Package</title>
      <dc:creator>Ariful Islam</dc:creator>
      <pubDate>Tue, 14 Jun 2022 20:44:13 +0000</pubDate>
      <link>https://dev.to/arif98741/bangladeshi-courier-company-api-integration-in-laravel-using-xenon-multicourier-package-4m12</link>
      <guid>https://dev.to/arif98741/bangladeshi-courier-company-api-integration-in-laravel-using-xenon-multicourier-package-4m12</guid>
      <description>&lt;p&gt;We are developers and we have to work on several projects. For several projects we have to integrate different company’s api for courier parcel booking, shipping and also tracking. I aslo faced that. After faching that awkward problem for a long time I motivated my mind to make a common library/package that will solve this issues like my previously released package Xenon/Laravelbdsms&lt;/p&gt;

&lt;p&gt;Here I developed Xenon/MultiCourier for solving this hassel that will fixed coding structure for all providers though their api are different. Your duty is to change api credentials provided by your courier company such E-courier, Pathao, Steadfast, Paperfly, Redx; Follow the below steps for integrating this package in your project easily&lt;/p&gt;

&lt;p&gt;Step 1:&lt;/p&gt;

&lt;pre&gt;composer require xenon/multicourier&lt;/pre&gt;

&lt;p&gt;Step 2:&lt;br&gt;
Then, publish the package&lt;/p&gt;

&lt;pre&gt;php artisan vendor:publish --provider=Xenon\MultiCourier\MultiCourierServiceProvider&lt;/pre&gt;

&lt;p&gt;Step 3:&lt;br&gt;
Set .env configuration for individual couriers . Here E-courier and Pathao for example&lt;/p&gt;

&lt;pre&gt;
PATHAO_CLIENT_SECRET="XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"
PATHAO_USERNAME="xxxx@example.com"
PATHAO_PASSWORD="xxxxxx"
PATHAO_GRANT_TYPE="password"
ECOURIER_API_KEY='xxx'
ECOURIER_API_SECRET='xxx'
ECOURIER_USER_ID='xxxx'
ECOURIER_ENVIRONMENT='xxxx'
&lt;/pre&gt;

&lt;p&gt;Otherwise, if you want more control, you can use the underlying sender object. This will not touch any laravel facade or service provider.&lt;/p&gt;

&lt;p&gt;Here below are sample code for interacting with provider’s api&lt;/p&gt;

&lt;p&gt;Get Location&lt;/p&gt;

&lt;pre&gt;
use Xenon\MultiCourier\Provider\ECourier;
use Xenon\MultiCourier\Courier;


$courier = Courier::getInstance();
$courier-&amp;gt;setProvider(ECourier::class, 'local'); /* local/production */
$courier-&amp;gt;setConfig([
    'API-KEY' =&amp;gt; 'xxx',
    'API-SECRET' =&amp;gt; 'xxxx',
    'USER-ID' =&amp;gt; 'xxxx',
]);
$courier-&amp;gt;setParams(['city'=&amp;gt;'Dhaka']);
$thanas = $courier-&amp;gt;getThanas(); //get thana
$cities = $courier-&amp;gt;getCities(); //get city
&lt;/pre&gt;

&lt;pre&gt; 
Place Order
//place order
use Xenon\MultiCourier\Provider\ECourier;
use Xenon\MultiCourier\Courier;


$courier = Courier::getInstance();
$courier-&amp;gt;setProvider(ECourier::class, 'local'); /* local/production */
$courier-&amp;gt;setConfig([
    'API-KEY' =&amp;gt; 'xxx',
    'API-SECRET' =&amp;gt; 'xxx',
    'USER-ID' =&amp;gt; 'xxx',
]);
$orderData = array(
    'recipient_name' =&amp;gt; 'XXXXX',
    'recipient_mobile' =&amp;gt; '017XXXXX',
    'recipient_city' =&amp;gt; 'Dhaka',
    'recipient_area' =&amp;gt; 'Badda',
    'recipient_thana' =&amp;gt; 'Badda',
    'recipient_address' =&amp;gt; 'Full Address',
    'package_code' =&amp;gt; '#XXXX',
    'product_price' =&amp;gt; '1500',
    'payment_method' =&amp;gt; 'COD',
    'recipient_landmark' =&amp;gt; 'DBBL ATM',
    'parcel_type' =&amp;gt; 'BOX',
    'requested_delivery_time' =&amp;gt; '2019-07-05',
    'delivery_hour' =&amp;gt; 'any',
    'recipient_zip' =&amp;gt; '1212',
    'pick_hub' =&amp;gt; '18490',
    'product_id' =&amp;gt; 'DAFS',
    'pick_address' =&amp;gt; 'Gudaraghat new mobile',
    'comments' =&amp;gt; 'Please handle carefully',
    'number_of_item' =&amp;gt; '3',
    'actual_product_price' =&amp;gt; '1200',
    'pgwid' =&amp;gt; 'XXX',
    'pgwtxn_id' =&amp;gt; 'XXXXXX'
);

$courier-&amp;gt;setParams($orderData);
$response = $courier-&amp;gt;placeOrder();
&lt;/pre&gt;

&lt;p&gt;For accesing to repo and all method list visit github link from here &lt;a href="https://github.com/arif98741/multicourier" rel="noopener noreferrer"&gt;https://github.com/arif98741/multicourier&lt;/a&gt;&lt;/p&gt;

</description>
      <category>ecourier</category>
      <category>laravel</category>
      <category>multicourier</category>
      <category>laravelbdsms</category>
    </item>
    <item>
      <title>Send Message to Bangladeshi Mobile Using Laravel</title>
      <dc:creator>Ariful Islam</dc:creator>
      <pubDate>Fri, 02 Jul 2021 16:41:53 +0000</pubDate>
      <link>https://dev.to/arif98741/send-message-to-bangladeshi-mobile-using-laravel-2ogm</link>
      <guid>https://dev.to/arif98741/send-message-to-bangladeshi-mobile-using-laravel-2ogm</guid>
      <description>&lt;p&gt;LaravelBDSms is a package for sending sms/otp to Bangladeshi mobile number. This package is built specially for laravel. You view github repo from here &lt;a href="https://github.com/arif98741/laravelbdsms" rel="noopener noreferrer"&gt;https://github.com/arif98741/laravelbdsms&lt;/a&gt; ; Using this package it is possible to send message using several Bangladeshi SMS Gateways such as....&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;BDBulkSMS&lt;br&gt;
BulkSMSBD&lt;br&gt;
Dianahost&lt;br&gt;
MDLSMS&lt;br&gt;
Metronet&lt;br&gt;
OnnoRokomSMS&lt;br&gt;
SSLSms&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;em&gt;Installation&lt;/em&gt;&lt;/p&gt;

&lt;pre&gt;composer require xenon/laravelbdsms&lt;/pre&gt;

&lt;p&gt;Currently this package supports laravel 5.4*, 5.6*, 6.&lt;em&gt;, 7.&lt;/em&gt; and 8.* also.&lt;/p&gt;

&lt;p&gt;As you have installed &lt;strong&gt;laravelbdsms&lt;/strong&gt;, you are now able to use this package anywhere in your project. See the below example for sending sms DianaHost Sms Gateway&lt;/p&gt;

&lt;h3&gt;
  
  
  Send SMS Using Dianahost
&lt;/h3&gt;

&lt;pre&gt;
use Xenon\LaravelBDSms\Provider\DianaHost;
use Xenon\LaravelBDSms\Sender;


$sender = Sender::getInstance();
$sender-&amp;gt;setProvider(DianaHost::class);
$sender-&amp;gt;setMobile('017XXYYZZAA');
$sender-&amp;gt;setMessage('This is test message');
$sender-&amp;gt;setQueue(true); //if you want to sent sms from queue
$sender-&amp;gt;setConfig(
   [
       'api_key' =&amp;gt; 'api_key_goes_here',
       'type' =&amp;gt; 'text',
       'senderid' =&amp;gt; 'approved_send_id',
   ]
);

$status = $sender-&amp;gt;send();

&lt;/pre&gt;

&lt;h3&gt;
  
  
  Send SMS Using SSL SMS
&lt;/h3&gt;

&lt;pre&gt;
use Xenon\LaravelBDSms\Provider\Ssl;
use Xenon\LaravelBDSms\Sender;

$sender = Sender::getInstance();
$sender-&amp;gt;setProvider(Ssl::class); 
$sender-&amp;gt;setMobile('017XXYYZZAA');
//$sender-&amp;gt;setMobile(['017XXYYZZAA','018XXYYZZAA']);
$sender-&amp;gt;setMessage('helloooooooo boss!');
$sender-&amp;gt;setQueue(true); //if you want to sent sms from queue
$sender-&amp;gt;setConfig(
   [
       'api_token' =&amp;gt; 'api token goes here',
       'sid' =&amp;gt; 'text',
       'csms_id' =&amp;gt; 'sender_id'
   ]
);
$status = $sender-&amp;gt;send();
&lt;/pre&gt;

&lt;h3&gt;
  
  
  Simply use the facade
&lt;/h3&gt;

&lt;pre&gt;
use Xenon\LaravelBDSms\Facades\SMS;

SMS::shoot('017XXYYZZAA', 'helloooooooo boss!');

SMS::shoot(['017XXYYZZAA','018XXYYZZAA'], 'helloooooooo boss!');` //for Ssl Sms Gateway Only
&lt;/pre&gt;

&lt;pre&gt;
use Xenon\LaravelBDSms\Facades\SMS;
use Xenon\LaravelBDSms\Provider\Ssl;

SMS::shootWithQueue("01XXXXXXXXX",'test sms');
SMS::via(Ssl::class)-&amp;gt;shootWithQueue("01XXXXXXXXX",'test sms');
&lt;/pre&gt;

&lt;h3&gt;
  
  
  Or, if you want to send message with queue. This queue will be added in your jobs table. Message will be sent as soon as job is run.
&lt;/h3&gt;

&lt;pre&gt;
use Xenon\LaravelBDSms\Facades\SMS;
use Xenon\LaravelBDSms\Provider\Ssl;

SMS::shootWithQueue("01XXXXXXXXX",'test sms');
SMS::via(Ssl::class)-&amp;gt;shootWithQueue("01XXXXXXXXX",'test sms'); //you can change provider using via method

&lt;/pre&gt;

&lt;h1&gt;
  
  
  Log Generate
&lt;/h1&gt;

&lt;pre&gt;
You can generate log in database for every sms api request and save in database. For doing this. Follow below points
1. Be confirm you have completed **step-2** and **step-3**
2. Run command ``php artisan migrate``. This will create ``lbs_log`` table in your database
3. Go to your project directory  and locate ``config/sms.php``
4. Find and make true 'sms_log' =&amp;gt; true

&lt;/pre&gt;

&lt;p&gt;Note: Setting configuration for sending sms is very necessary . If you don't configure instance before calling &lt;strong&gt;send()&lt;/strong&gt; method , you will get exception for passing using &lt;strong&gt;setConfig()&lt;/strong&gt; method.&lt;/p&gt;

&lt;h1&gt;
  
  
  Currently Supported SMS Gateways
&lt;/h1&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Provider&lt;/th&gt;
&lt;th&gt;Credentials  Required &lt;br&gt;    For Sending SMS&lt;/th&gt;
&lt;th&gt;Status&lt;/th&gt;
&lt;th&gt;Comment&lt;/th&gt;
&lt;th&gt;Contact&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;AjuraTech&lt;/td&gt;
&lt;td&gt;apikey, secretkey , callerID&lt;/td&gt;
&lt;td&gt;Done&lt;/td&gt;
&lt;td&gt;-&lt;/td&gt;
&lt;td&gt;-&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Adn&lt;/td&gt;
&lt;td&gt;api_key, type, senderid&lt;/td&gt;
&lt;td&gt;Done&lt;/td&gt;
&lt;td&gt;-&lt;/td&gt;
&lt;td&gt;-&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Banglalink&lt;/td&gt;
&lt;td&gt;userID, passwd , sender&lt;/td&gt;
&lt;td&gt;Done&lt;/td&gt;
&lt;td&gt;-&lt;/td&gt;
&lt;td&gt;-&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;BDBulkSMS&lt;/td&gt;
&lt;td&gt;token&lt;/td&gt;
&lt;td&gt;Done&lt;/td&gt;
&lt;td&gt;-&lt;/td&gt;
&lt;td&gt;-&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;BoomCast&lt;/td&gt;
&lt;td&gt;masking  , userName ,   password&lt;/td&gt;
&lt;td&gt;Done&lt;/td&gt;
&lt;td&gt;-&lt;/td&gt;
&lt;td&gt;-&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;BulksmsBD&lt;/td&gt;
&lt;td&gt;api_key,senderid&lt;/td&gt;
&lt;td&gt;Done&lt;/td&gt;
&lt;td&gt;-&lt;/td&gt;
&lt;td&gt;-&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;DianaHost&lt;/td&gt;
&lt;td&gt;api_key, type, senderid&lt;/td&gt;
&lt;td&gt;Done&lt;/td&gt;
&lt;td&gt;-&lt;/td&gt;
&lt;td&gt;-&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;DianaSMS&lt;/td&gt;
&lt;td&gt;ApiKey, ClientId, SenderId&lt;/td&gt;
&lt;td&gt;Done&lt;/td&gt;
&lt;td&gt;-&lt;/td&gt;
&lt;td&gt;-&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Esms&lt;/td&gt;
&lt;td&gt;api_token, sender_id&lt;/td&gt;
&lt;td&gt;Done&lt;/td&gt;
&lt;td&gt;-&lt;/td&gt;
&lt;td&gt;-&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;ElitBuzz&lt;/td&gt;
&lt;td&gt;api_key, type, senderid&lt;/td&gt;
&lt;td&gt;Done&lt;/td&gt;
&lt;td&gt;not tested yet in live&lt;/td&gt;
&lt;td&gt;-&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Infobip&lt;/td&gt;
&lt;td&gt;user, password&lt;/td&gt;
&lt;td&gt;Done&lt;/td&gt;
&lt;td&gt;not tested yet in live&lt;/td&gt;
&lt;td&gt;-&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;MDL&lt;/td&gt;
&lt;td&gt;api_key, type, senderid&lt;/td&gt;
&lt;td&gt;Done&lt;/td&gt;
&lt;td&gt;not tested yet in live&lt;/td&gt;
&lt;td&gt;-&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Metronet&lt;/td&gt;
&lt;td&gt;api_key, mask&lt;/td&gt;
&lt;td&gt;Done&lt;/td&gt;
&lt;td&gt;-&lt;/td&gt;
&lt;td&gt;-&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;MimSms&lt;/td&gt;
&lt;td&gt;api_key, type, senderid&lt;/td&gt;
&lt;td&gt;Done&lt;/td&gt;
&lt;td&gt;-&lt;/td&gt;
&lt;td&gt;-&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Mobireach&lt;/td&gt;
&lt;td&gt;Username,Password, From&lt;/td&gt;
&lt;td&gt;Done&lt;/td&gt;
&lt;td&gt;-&lt;/td&gt;
&lt;td&gt;-&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;NovocomBD&lt;/td&gt;
&lt;td&gt;ApiKey , ClientId   , SenderId&lt;/td&gt;
&lt;td&gt;Done&lt;/td&gt;
&lt;td&gt;-&lt;/td&gt;
&lt;td&gt;-&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;OnnoRokomSMS&lt;/td&gt;
&lt;td&gt;userName, userPassword, type, maskName, campaignName&lt;/td&gt;
&lt;td&gt;Done&lt;/td&gt;
&lt;td&gt;not tested yet in live&lt;/td&gt;
&lt;td&gt;-&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;RedmoITSms&lt;/td&gt;
&lt;td&gt;api_token, sender_id&lt;/td&gt;
&lt;td&gt;Support closed&lt;/td&gt;
&lt;td&gt;-&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;SmartLabSMS&lt;/td&gt;
&lt;td&gt;user, password, sender&lt;/td&gt;
&lt;td&gt;Done&lt;/td&gt;
&lt;td&gt;-&lt;/td&gt;
&lt;td&gt;-&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;SmsinBD&lt;/td&gt;
&lt;td&gt;api_token, senderid&lt;/td&gt;
&lt;td&gt;Done&lt;/td&gt;
&lt;td&gt;01777-333677&lt;/td&gt;
&lt;td&gt;-&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;SmsQ&lt;/td&gt;
&lt;td&gt;sender_id, client_id, api_key&lt;/td&gt;
&lt;td&gt;Done&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;-&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;SMSNet24&lt;/td&gt;
&lt;td&gt;user_id, user_password, route_id(optional), sms_type_id(optional)&lt;/td&gt;
&lt;td&gt;Done&lt;/td&gt;
&lt;td&gt;-&lt;/td&gt;
&lt;td&gt;
&lt;a href="mailto:admin2@digitallabbd.com"&gt;admin2@digitallabbd.com&lt;/a&gt;, +880 1705 691269, +880 1733393 712&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;SmsNoc&lt;/td&gt;
&lt;td&gt;sender_id, bearer_token&lt;/td&gt;
&lt;td&gt;Done&lt;/td&gt;
&lt;td&gt;-&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Sslsms&lt;/td&gt;
&lt;td&gt;api_token, sid, csms_id&lt;/td&gt;
&lt;td&gt;Done&lt;/td&gt;
&lt;td&gt;-&lt;/td&gt;
&lt;td&gt;-&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Tense&lt;/td&gt;
&lt;td&gt;user, password, campaign, masking&lt;/td&gt;
&lt;td&gt;Done&lt;/td&gt;
&lt;td&gt;-&lt;/td&gt;
&lt;td&gt;-&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;TwentyFourSmsBD&lt;/td&gt;
&lt;td&gt;apiKey, sender_id&lt;/td&gt;
&lt;td&gt;Done&lt;/td&gt;
&lt;td&gt;-&lt;/td&gt;
&lt;td&gt;-&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Trubosms&lt;/td&gt;
&lt;td&gt;api_token, sender_id&lt;/td&gt;
&lt;td&gt;Done&lt;/td&gt;
&lt;td&gt;-&lt;/td&gt;
&lt;td&gt;-&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Viatech&lt;/td&gt;
&lt;td&gt;api_key, mask&lt;/td&gt;
&lt;td&gt;Done&lt;/td&gt;
&lt;td&gt;-&lt;/td&gt;
&lt;td&gt;-&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;If you feel bore to read documentation then you can watch youtube &lt;a href="https://www.youtube.com/watch?v=i2wjLNoIvIo" rel="noopener noreferrer"&gt;video as well&lt;/a&gt;. If you benefitted using this package you are highly requested to follow me at &lt;a href="https://github.com/arif98741" rel="noopener noreferrer"&gt;Github&lt;/a&gt;&lt;/p&gt;

</description>
      <category>laravelsmsgateway</category>
      <category>phpsmsgateway</category>
      <category>laravelbdsms</category>
      <category>laravel</category>
    </item>
  </channel>
</rss>
