Avatar billede fhansen Praktikant
12. januar 2011 - 13:44 Der er 11 kommentarer og
1 løsning

Problemmer med at logge på e-conomics via SOAP

Hej Alle sammen.

Jeg sidder og leger lidt med e-conomics, som jeg gerne vil connecte til fra vores hjemmeside.

Jeg har startet ud med et testscript fra e-conomics, men jeg får nogle fejl fra det.

Den første fejl er

try
{

det giver denne fejl kode Parse error: syntax error, unexpected '{' ...

jeg synes ikke jeg kan finde nogen doc. på try.

Her er lige scriptet

<html>
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
    <style type="text/css">
        body { font-family: Verdana; }
        h1 { font-size: 15px; }
        td { font-size: 12px; padding: 5px; }
        .header_row { background-color: FFCABD; }
        .even_row { background-color: #FFFEAB; }
        .odd_row { background-color: #FFFD82; }
        .white_field { background-color: #FFFFFF;}
    </style>
</head>

<body>
<?


    // Helper function to check query parameters.
    function checkParameter($param)
    {
        if (!$_REQUEST[$param])
        {
            echo "Missing <code>" . $param . "</code> parameter in query string.";
            exit(0);
        }       
    }
   
    //checkParameter("agreementNumber");
    //checkParameter("username");
    //checkParameter("password");   
   

    $me = $_SERVER['PHP_SELF'];
   
    $wsdlUrl = 'https://www.e-conomic.com/secure/api1/EconomicWebservice.asmx?WSDL';
       
    $client = new SoapClient($wsdlUrl, array("trace" => 1, "exceptions" => 1));           
   
    $client->Connect(array(
        'agreementNumber' => 279755,
        'userName'        => 'bruger_id',
        'password'        => 'password'));
   


    if ($_SERVER['REQUEST_METHOD'] == 'POST' && $_POST['action'] == 'create_debtor')
    {                   
        try
        {   
            $debtorGroupHandles = $client->debtorGroup_GetAll()->DebtorGroup_GetAllResult->DebtorGroupHandle;
            $firstDebtorGroup = $debtorGroupHandles[0];       
       
            $newDebtorHandle = $client->Debtor_Create(array(
                'number'            => $_POST['debtor_number'],
                'debtorGroupHandle' => $firstDebtorGroup,
                'name'              => $_POST['debtor_name'],
                'vatZone'          => 'EU'))->Debtor_CreateResult;   
               
            $client->Debtor_SetAddress(array(
                'debtorHandle' => $newDebtorHandle,
                'value'        => $_POST['debtor_address']));
       
            print("<p>A new debtor has be created.</p>");
        }
        catch(Exception $exception)
        {
            print("<p><b>Could not create debtor.</b></p>");
            print("<p><i>" . $exception->getMessage() . "</i></p>");
        }
    }
                   
                   
      // Fetch list of all debtors.
      $debtorHandles = $client->Debtor_GetAll()->Debtor_GetAllResult->DebtorHandle;
      $debtorDataObjects =$client->Debtor_GetDataArray(array('entityHandles' => $debtorHandles))->Debtor_GetDataArrayResult->DebtorData;
?>

    <h1>Debtors</h1>
    <table width="864px" border="0">
        <tr class="header_row">
            <td><b>Number</b></td>
            <td><b>Name</b></td>
            <td><b>Address</b></td>
            <td><b>PostalCode</b></td>
            <td><b>City</b></td>
            <td><b>Country</b></td>
            <td class="white_field"></td>
        </tr>
<?

    foreach ($debtorDataObjects as $i => $debtorData) {       
?>
        <tr class="<? if($i % 2 == 0) echo 'even_row'; else echo 'odd_row' ?>">
        <form action="<?php echo $me . "?agreementNumber=" . $_REQUEST['agreementNumber'] . "&username=" . $_REQUEST['username'] . "&password=" . $_REQUEST['password'];?>" method="post">
                <td><?= $debtorData->Number ?> </td>
                    <td><?= $debtorData->Name ?> </td>
                <td><?= $debtorData->Address ?> </td>
                <td><?= $debtorData->PostalCode ?> </td>
                <td><?= $debtorData->City ?> </td>
                <td><?= $debtorData->Country ?> </td>
                <td class="white_field">
                    <input type="hidden" name="action" value="show_orders">
                    <input type="hidden" name="debtor_number" value="<?= $debtorData->Number ?>">
                    <input type="submit" value="Show orders">
                </td>
        </form>   
    </tr>       
<?   
    }

?>
    </table>

<?php    //Delete an order
    if ($_SERVER['REQUEST_METHOD'] == 'POST' && $_POST['action'] == 'delete_order')
    {                   
        try
        {
        $orderHandle = $client->Order_FindByNumber(array('number' => $_POST['order_number']))->Order_FindByNumberResult;
        $client->Order_Delete(array('orderHandle' => $orderHandle));
        echo "Order deleted.";
        }
        catch(Exception $exception)
        {
            print("<p><b>Error delting order with order number: ". $_POST['order_number']. "</b></p>");
            print("<p><i>" . $exception->getMessage() . "</i></p>");
        }
    }
?>

<?php    //Show a debtor's orders
    if ($_SERVER['REQUEST_METHOD'] == 'POST' && $_POST['action'] == 'show_orders')
    {                   
        try
        {   
            $debtorHandle = $client->Debtor_FindByNumber(array('number' => $_POST['debtor_number']))->Debtor_FindByNumberResult;
            $orderHandles = $client->Debtor_GetOrders(array('debtorHandle' => $debtorHandle))->Debtor_GetOrdersResult->OrderHandle;
           
            $num_orders = count($orderHandles);
   
            if($num_orders > 0)
            {   
                if($num_orders > 1)
                {
                    $orderDataObjects = $client->Order_GetDataArray(array('entityHandles' => $orderHandles))->Order_GetDataArrayResult->OrderData;
                }
                else
                {
                    $orderDataObjects[] = $client->Order_GetData(array('entityHandle' => $orderHandles))->Order_GetDataResult;
                }
                ?>       
                <h1>Orders</h1>
                <table border="0">
                    <tr class="header_row">
                        <td><b>Order date</b></td>
                        <td><b>Debtor name</b></td>
                        <td><b>Delivery addr.</b></td>
                        <td><b>Order total</b></td>
                        <td class="white_field"></td>
                    </tr>       
                <?
                foreach ($orderDataObjects as $i => $orderData)
                {       
                    ?>
                    <tr class="<? if($i % 2 == 0) echo 'even_row'; else echo 'odd_row' ?>">
                    <form action="<?php echo $me . "?agreementNumber=" . $_REQUEST['agreementNumber'] . "&username=" . $_REQUEST['username'] . "&password=" . $_REQUEST['password'];?>" method="post">
                    <td ><?= substr($orderData->Date, 0,10); ?> </td>
                        <td ><?= $orderData->DebtorName ?> </td>
                    <td ><?= $orderData->DeliveryAddress ?> </td>
                    <td ><?= $orderData->NetAmount ?> </td>
                    <td  class="white_field">
                    <input type="hidden" name="action" value="delete_order">
                    <input type="hidden" name="order_number" value="<?= $orderData->Number ?>">
                    <input type="submit" value="Delete order">
                    </td>
                    </form>   
                </tr> 
                    <?
                }
                echo "</table>";
            }
            else
            {
                echo "This debtor has no orders";
            }
        }
        catch(Exception $exception)
        {
            print("<p><b>Error fetching orders for the selected debtor.</b></p>");
            print("<p><i>" . $exception->getMessage() . "</i></p>");
        }   
    }
?>


<h1>Create debtor</h1>
<form action="<?php echo $me . "?agreementNumber=" . $_REQUEST['agreementNumber'] . "&username=" . $_REQUEST['username'] . "&password=" . $_REQUEST['password'];?>" method="post">
          <table border="0">
        <tr>
            <td>Number</td><td><input type="text" name="debtor_number"></td>
        </tr>
       
        <tr>
            <td>Name</td><td><input type="text" name="debtor_name"></td>
        </tr>
       
        <tr>
            <td>Address</td><td><input type="text" name="debtor_address"></td>
        </tr>
       
        <tr>
            <td></td>
            <td>
                <input type="hidden" name="action" value="create_debtor">
                <input type="submit" value="Create">
            </td>
        </tr>
    </table>       
</form>       

<?
$client->Disconnect();
}


?>


</body>
</html>
Avatar billede fhansen Praktikant
12. januar 2011 - 15:50 #1
Forviringen har bredt sig, nu giver den pluslig denne fejl kode

Fatal error: Class 'SoapClient' not found in C:\Apache\htdocs\Havnen.....

KAn det skyldes at min udbyder ikke understøtter SOAP
Avatar billede repox Seniormester
13. januar 2011 - 10:29 #2
Din 'udbyder'?
'C:\Apache\htdocs\Havnen...' virker temmelig lokalt - jeg håber bestemt ikke det er et live setup du kører på.

Men ellers ja, det kan nemt skyldes at din udbyder/du ikke selv har installeret libxml på serveren og compilet PHP med --enable-soap
Avatar billede fhansen Praktikant
13. januar 2011 - 10:39 #3
Hej

Ja den var meget difusssss.
function try { .....] Catch{...} virker lokalt, men ikke på mit webhotel jeg bruger PHP 5.2 og webhotellet PHP 4.7.

Fejl med class SOAPclient får jeg begge steder, jeg er ikke i tvivl om at det er min opsætning der er problemmer med, så jeg har installeret PEAR på ny, og ser ud til virke, nu forsøger jeg at installere en package med SOAP også fra Pear.net
Men kan ikke få go-pear til at finde SOAPpakken.

Jeg er snart der hvor jeg er parat til at betale en for at fixe det irl, for mig.
Jeg er endda begyndt at råbe af konen...*smiler*
Avatar billede repox Seniormester
13. januar 2011 - 10:43 #4
PHP 4.7?

Du ved godt PHP6 er lige om hjørnet, ikke? ;)
Jeg vil helt klart anbefale dig at kræve en serveropdatering eller flytte til en opdateret server... PEAR pakkerne er også opdaterede jo, så du er - softwaremæssigt - håbløst bagud på din live server...
Avatar billede fhansen Praktikant
13. januar 2011 - 11:55 #5
Jeg har bragt det op over for Siminn, som er vores udbyder.
Avatar billede fhansen Praktikant
13. januar 2011 - 12:16 #6
Jeg har igen talt med Siminn, og de har ingen planer om at opdatere, så jeg vil nu finde en anden udbyder, men hvem ?
Avatar billede repox Seniormester
13. januar 2011 - 18:42 #7
Du kan bruge surftown - det kan måske opfylde dine krav...
Avatar billede fhansen Praktikant
13. januar 2011 - 20:35 #8
Har kigget lidt på surftown, men deres hjemmeside tiltalte mig ikke, jeg har kig på Azero.
Avatar billede fhansen Praktikant
13. januar 2011 - 20:36 #9
ups det skulle ikke have været et svar
Avatar billede repox Seniormester
13. januar 2011 - 21:05 #10
Jamen, jeg har aldrig selv arbejdet med Surftown - jeg har opgivet danske udbydere - men jeg har en kunde som er hosted hos Azero; min personlige holdning til deres måde at drive deres hosting på er at det er alt andet end professionelt og d er enormt ufleksible.

Men derfra at sige at deres løsning ikke kan passe dine behov er jeg naturligvis ikke den rette til at sige. Men find en som har det du skal bruge for at få det opsæt din løsning kræver...
Avatar billede fhansen Praktikant
13. januar 2011 - 21:13 #11
Det er da bestemt et input jeg vil tage med. Jeg har været meget glad for Webpartner som nu hedder Siminn, men det irrettere mig at de er bagud.
Avatar billede fhansen Praktikant
08. februar 2011 - 00:07 #12
Jeg lukker her, da det var udbyderen der ikke understøttede
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester