Package

Artisaninweb Laravel Soap

A SoapClient wrapper integration for Laravel

Package

artisaninweb/laravel-soap

View on GitHub →

Laravel SoapClient Wrapper

A SoapClient wrapper integration for Laravel.
Makes it easy to use Soap in a Laravel application.

Please report any bugs or features here:
https://github.com/artisaninweb/laravel-soap/issues/

Installation

Laravel

####Installation for Laravel 5.2 and above:

Run composer require artisaninweb/laravel-soap

Add the service provider in app/config/app.php.

Artisaninweb\SoapWrapper\ServiceProvider::class,

To use the alias, add this to the aliases in app/config/app.php.

'SoapWrapper' => Artisaninweb\SoapWrapper\Facade\SoapWrapper::class,

####Installation for Laravel 5.1 and below :

Add artisaninweb/laravel-soap as requirement to composer.json

{
"require": {
"artisaninweb/laravel-soap": "0.3.*"
}
}

If you're using Laravel 5.5 or higher you can skip the two config setups below.

Add the service provider in app/config/app.php.

'Artisaninweb\SoapWrapper\ServiceProvider'

To use the facade add this to the facades in app/config/app.php.

'SoapWrapper' => 'Artisaninweb\SoapWrapper\Facade'

Lumen

Open bootstrap/app.php and register the required service provider:

$app->register(Artisaninweb\SoapWrapper\ServiceProvider::class);

register class alias:

class_alias('Artisaninweb\SoapWrapper\Facade', 'SoapWrapper');

Facades must be enabled.

Usage

How to add a service to the wrapper and use it.

<?php
 
namespace App\Http\Controllers;
 
use Artisaninweb\SoapWrapper\SoapWrapper;
use App\Soap\Request\GetConversionAmount;
use App\Soap\Response\GetConversionAmountResponse;
 
class SoapController
{
/**
* @var SoapWrapper
*/
protected $soapWrapper;
 
/**
* SoapController constructor.
*
* @param SoapWrapper $soapWrapper
*/
public function __construct(SoapWrapper $soapWrapper)
{
$this->soapWrapper = $soapWrapper;
}
 
/**
* Use the SoapWrapper
*/
public function show()
{
$this->soapWrapper->add('Currency', function ($service) {
$service
->wsdl('http://currencyconverter.kowabunga.net/converter.asmx?WSDL')
->trace(true)
->classmap([
GetConversionAmount::class,
GetConversionAmountResponse::class,
]);
});
 
// Without classmap
$response = $this->soapWrapper->call('Currency.GetConversionAmount', [
'CurrencyFrom' => 'USD',
'CurrencyTo' => 'EUR',
'RateDate' => '2014-06-05',
'Amount' => '1000',
]);
 
var_dump($response);
 
// With classmap
$response = $this->soapWrapper->call('Currency.GetConversionAmount', [
new GetConversionAmount('USD', 'EUR', '2014-06-05', '1000')
]);
 
var_dump($response);
exit;
}
}

Service functions

$this->soapWrapper->add('Currency', function ($service) {
$service
->wsdl() // The WSDL url
->trace(true) // Optional: (parameter: true/false)
->header() // Optional: (parameters: $namespace,$name,$data,$mustunderstand,$actor)
->customHeader() // Optional: (parameters: $customerHeader) Use this to add a custom SoapHeader or extended class
->cookie() // Optional: (parameters: $name,$value)
->location() // Optional: (parameter: $location)
->certificate() // Optional: (parameter: $certLocation)
->cache(WSDL_CACHE_NONE) // Optional: Set the WSDL cache
 
// Optional: Set some extra options
->options([
'login' => 'username',
'password' => 'password'
])
 
// Optional: Classmap
->classmap([
GetConversionAmount::class,
GetConversionAmountResponse::class,
]);
});

Classmap

If you are using classmap you can add folders like for example:

  • App\Soap
  • App\Soap\Request
  • App\Soap\Response

Request: App\Soap\Request\GetConversionAmount

<?php
 
namespace App\Soap\Request;
 
class GetConversionAmount
{
/**
* @var string
*/
protected $CurrencyFrom;
 
/**
* @var string
*/
protected $CurrencyTo;
 
/**
* @var string
*/
protected $RateDate;
 
/**
* @var string
*/
protected $Amount;
 
/**
* GetConversionAmount constructor.
*
* @param string $CurrencyFrom
* @param string $CurrencyTo
* @param string $RateDate
* @param string $Amount
*/
public function __construct($CurrencyFrom, $CurrencyTo, $RateDate, $Amount)
{
$this->CurrencyFrom = $CurrencyFrom;
$this->CurrencyTo = $CurrencyTo;
$this->RateDate = $RateDate;
$this->Amount = $Amount;
}
 
/**
* @return string
*/
public function getCurrencyFrom()
{
return $this->CurrencyFrom;
}
 
/**
* @return string
*/
public function getCurrencyTo()
{
return $this->CurrencyTo;
}
 
/**
* @return string
*/
public function getRateDate()
{
return $this->RateDate;
}
 
/**
* @return string
*/
public function getAmount()
{
return $this->Amount;
}
}

Response: App\Soap\Response\GetConversionAmountResponse

<?php
 
namespace App\Soap\Response;
 
class GetConversionAmountResponse
{
/**
* @var string
*/
protected $GetConversionAmountResult;
 
/**
* GetConversionAmountResponse constructor.
*
* @param string
*/
public function __construct($GetConversionAmountResult)
{
$this->GetConversionAmountResult = $GetConversionAmountResult;
}
 
/**
* @return string
*/
public function getGetConversionAmountResult()
{
return $this->GetConversionAmountResult;
}
}

Artisaninweb Laravel Soap Related Articles

Soap - A Laravel SOAP client that provides a clean interface for handling requests and responses image

Soap - A Laravel SOAP client that provides a clean interface for handling requests and responses

Read article
Laravel Herd image

Laravel Herd

Read article
Set up GitHub Actions for Laravel applications image

Set up GitHub Actions for Laravel applications

Read article
Send Email With Exchange Web Services in Laravel image

Send Email With Exchange Web Services in Laravel

Read article
Whoops is coming back in Laravel 5.5 image

Whoops is coming back in Laravel 5.5

Read article
Install Microsoft SQL Drivers for PHP 7 in Docker image

Install Microsoft SQL Drivers for PHP 7 in Docker

Read article

Acquaint Softtech

Acquaint Softtech offers AI-ready Laravel developers who onboard in 48 hours at $3000/Month with no lengthy sales process and a 100 percent money-back guarantee.

Acquaint Softtech

Pushsilver

Pushsilver is simple invoicing for freelancers and small studios — send polished invoices, automate reminders, and get paid on time without the bloat.

Pushsilver

PhpStorm

The go-to PHP IDE with extensive out-of-the-box support for Laravel and its ecosystem.

PhpStorm

No Compromises

Joel and Aaron, the two seasoned devs from the No Compromises podcast, are now available to hire for your Laravel project. ⬧ Flat rate of $9500/mo. ⬧ No lengthy sales process. ⬧ No contracts. ⬧ 100% money back guarantee.

No Compromises

Harpoon: Next generation time tracking and invoicing

The next generation time-tracking and billing software that helps your agency plan and forecast a profitable future.

Harpoon: Next generation time tracking and invoicing

Shift

Running an old Laravel version? Instant, automated Laravel upgrades and code modernization to keep your applications fresh.

Shift