Australian Government ABN Lookup – Webservice – PHP Example

The PHP example code supplied by http://abr.business.gov.au/Webservices.aspx relied on the nuSoap class. I rewrote it to fit our companies needs, based on what I’ve learned from developing the PPSR Soap class I posted earlier. I hope someone finds this useful.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
<?php
include(dirname(__FILE__)."/config.inc.php"); // $abn_guid is set here.
 
/**
 * @author Justin Swan - 16 August 2012
 * extends php soap client to utilize the Australian Government ABN Lookup web service 
 * requires php 5 or greater with lib-xml enabled/compiled in Apache, see the PHP manual for further requirements info
 * 
 * @link    http://www.php.net/manual/en/book.soap.php
 * @link    http://abr.business.gov.au/Webservices.aspx
 * 
 * @param string $guid - get a guid id by registering @ http://abr.business.gov.au/Webservices.aspx
 * 
 */
 
class abnlookup extends SoapClient{
 
    private $guid = ""; 
 
    public function __construct($guid)
    {
        $this->guid = $guid;
        $params = array(
            'soap_version' => SOAP_1_1,
            'exceptions' => true,
            'trace' => 1,
            'cache_wsdl' => WSDL_CACHE_NONE
        ); 
 
        parent::__construct('http://abr.business.gov.au/abrxmlsearch/ABRXMLSearch.asmx?WSDL', $params);
    }
 
    public function searchByAbn($abn, $historical = 'N'){
        $params = new stdClass();
        $params->searchString                = $abn;
        $params->includeHistoricalDetails    = $historical;
        $params->authenticationGuid            = $this->guid;
        return $this->ABRSearchByABN($params);
    }
 
    public function searchByName($company_name){
        $params = new stdClass();
        $params->externalNameSearch = $company_name;
        $params->authenticationGuid            = $this->guid;
        return $this->ABRSearchByName($params);
    }
 }
 
$abn_search_string = "11111111111"; // you can assign your post/get var or abn string here
$name_search_string = "some company name"; // replace with the company name you are trying to search
 
try{
    $abnlookup = new abnlookup($abn_guid);
    try{
        $result = $abnlookup->searchByAbn($abn_search_string); 
        // $result = $abnlookup->searchByName($name_search_string); 
 
        // display all results
        echo "<pre>";
        print_r($result);
        echo "</pre>";
 
        // also display by variables using object notation.
        echo "<pre>";
        $result->ABRPayloadSearchResults->response;
        echo "</pre>";
 
    } catch    (Exception $e){
        throw $e;
    }
 
} catch(Exception $e){
    echo $e->getMessage();
}

Now on GitHub: https://github.com/Kwozzie/australian-government-abn-lookup

PPSR Australia – PHP Example

Having trouble finding a good PHP example to use to start registering your vehicles at http://www.ppsr.gov.au/? Then here you go. A few hours of frustration and looking up other peoples code led me to this basic solution to get started.

Big thanks to https://dwuysan.wordpress.com/ for helping me with getting the TargetEnvironment to work.

If you’re having trouble with ‘Server Error’ responses when doing searches and registrations, check that you have sufficient funds in your PPSR account. You can use the dummy credit cards numbers as provided by PPSR (in an email you would have recieved when you were granted access to the Discovery environment) and make a payment via the PPSR discovery website (WebUI).

From PPSR: “Server error is generated whenever you try to perform a billable transaction, if the account is configured as PAYG or has insufficient funds.”

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
<?php
include("../config.inc.php"); // contains $username and $password
 
class WsseAuthHeader extends SoapHeader {
 
    private $wss_ns = "";
 
    public function __construct($user, $pass, $ns = null) {
        if ($ns) {
            $this->wss_ns = $ns;
        }
 
        $auth = new stdClass();
        $auth->Username = new SoapVar($user, XSD_STRING, NULL, $this->wss_ns, NULL, $this->wss_ns);
        $auth->Password = new SoapVar($pass, XSD_STRING, NULL, $this->wss_ns, NULL, $this->wss_ns);
 
        $username_token = new stdClass();
        $username_token->UsernameToken = new SoapVar($auth, SOAP_ENC_OBJECT, NULL, $this->wss_ns, 'UsernameToken', $this->wss_ns);
 
        $security_sv = new SoapVar(
                        new SoapVar($username_token, SOAP_ENC_OBJECT, NULL, $this->wss_ns, 'UsernameToken', $this->wss_ns),
                        SOAP_ENC_OBJECT, NULL, $this->wss_ns, 'Security', $this->wss_ns);
 
        parent::__construct($this->wss_ns, 'Security', $security_sv, true);
    }
}
 
class ppsrSoapClient extends SoapClient{
 
    private        $wsdl;
    private        $wss_ns;
    private        $ppsr_ns;
    private        $params;
    private        $environment;
    private        $username;
    private        $password;
 
    public function __construct($environment,$username,$password)
    {
        $this->wsdl            = "schemas.ppsr.gov.au.2011.04.services.wsdl";
        $this->wss_ns        = "http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd";
        $this->ppsr_ns        = "http://schemas.ppsr.gov.au/2011/04/services";
        $this->environment    = $environment;
        $this->username        = $username;
        $this->password        = $password;
        $this->params = array(
            'soap_version' => SOAP_1_1,
            'exceptions' => true,
            'trace' => 1,
            'cache_wsdl' => WSDL_CACHE_NONE,
            'targetenvironment' => $this->environment
        ); 
        parent::__construct($this->wsdl, $this->params);
 
        // save us manually calling this each time.
        $this->setSoapHeaders();
    } 
 
    private function setSoapHeaders(){
        $headers = array();
        $headers[1] = new WsseAuthHeader($this->username, $this->password, $this->wss_ns);
        $headers[2] = new SoapHeader($this->ppsr_ns,'TargetEnvironment',$this->environment,true);    
        $this->__setSoapHeaders($headers);
    }
 
    public function getUsername(){
        return $this->username;
    }
}
 
//Put the service parameters here
try{
    $client = new ppsrSoapClient('Discovery',$username,$password);
    try {
        $result = $client->Ping(array("PingRequest"=>array("CustomersRequestMessageId"=>date("Ymdhisu").__LINE__)));
 
        /*
        $vars = array(
            "CustomersRequestMessageId"=>date("Ymdhisu").__LINE__,
            "Username"=>$client->getUsername(),
            "NewPassword"=>"Newpassword1!" // no spaces, 7-15 characters, 1 x uppercase, 1 x number, 1 x special char, different from last 8 passwords
        );
        $result = $client->ChangeB2GPassword(array("ChangeB2GPasswordRequest"=>$vars));        
        */
 
        echo "<pre>";
        print_r($result);
        echo "</pre>";
 
    } catch (Exception $e) {
        echo "<h1>Exception</h1>";
        echo $e->getMessage();
 
        echo "<h1>Debugging Info</h1>";
        echo "<p>REQUEST HEADERS:\n<pre>" .$client->__getLastRequestHeaders() . "</pre>\n</p>";
        echo "<p>REQUEST:\n<pre>" .$client->__getLastRequest(). "</pre>\n</p>";
 
        echo "<p>RESPONSE HEADERS:\n<pre>" .$client->__getLastResponseHeaders() . "</pre>\n</p>"; 
        echo "<p>RESPONSE:\n<pre>" . $client->__getLastResponse() . "</pre>\n</p>";    
    }
} catch (Exception $e) {
    echo $e->getMessage();
}

Please note, as I am the developer for Auto Lawyers – Vehicle History Search and Car Registration check, I may not be able to answer further questions regarding searches on PPSR.