Avatar billede htx98i17 Professor
22. juli 2017 - 07:42 Der er 3 kommentarer og
1 løsning

Simpelt SOAP eksempel

Hej

Jeg søger et enkelt eksempel af brug af SoapClient i php i håb om at det kan inspirere mig til at arbejde videre med det. Jeg har svært ved at gennemskue hvor omfattende det er.

Jeg skal eksempelvis hente nogle informationer om en transaktion og epay siger at der skal bruges 2 input for at gøre det (merchantnumber og transactionid)
http://tech.epay.dk/en/payment-web-service#559

Kan nogen lave et enkelt eksempel på et kald og en udskrift af svaret eller er det som frygtet en større omgang?
Avatar billede TRoXa Novice
22. juli 2017 - 22:35 #1
Er bestemt ikke ekspert i SOAP, men igennem mit arbejde er jeg begyndt selv at skulle rode med det og er kommet frem til noget der virker ihvertfald :)

I dit tilfælde har du et MERCHANT ID som du har fået oplyst hos ePay. Og så har du via epay admin panelet mulighed for at få betalings idét på den enkelte transaktion. Og alternativet er at kalde en liste over sidste transaktioner med dit merchantid via deres "gettransactionlist".

Men sådan generelt, så kan du da prøve med følgende, som jeg bruger til en anden side og som virker fint for mig :)

  $wsdl = 'https://ssl.ditonlinebetalingssystem.dk/remote/payment.asmx?WSDL';
  $options = array(
        'uri'=>'http://www.w3.org/2001/XMLSchema',
        'style'=>SOAP_RPC,
        'soap_version'=>SOAP_1_1,
        'cache_wsdl'=>WSDL_CACHE_NONE,
        'connection_timeout'=>15,
        'trace'=>true,
        'encoding'=>'UTF-8',
        'exceptions'=>true,
        'cache_wsdl' => WSDL_CACHE_NONE,
    );
  try
  {
    $soap = new SoapClient($wsdl, $options);
    $data = $soap->gettransactionlist(array(
        "merchantnumber" => "dit nummer",
//        "transactionid" => "det nummer du kan aflæse via gettransactionlist"
    ));
    echo "<pre>";
    print_r($data);
    echo "</pre>";
  }
  catch (Exception $e) 
  {
    var_dump($e->getMessage());
    var_dump($soap->__getLastRequest());
    var_dump($soap->__getLastResponse());
  } 

Så burde du kunne komme videre. Kan ikke afprøve det, da det jo netop kræver, at man er kunde hos dem og har et merchantnumber, men håber det hjælper dig lidt på vej :)
Avatar billede htx98i17 Professor
23. juli 2017 - 07:50 #2
Tusind tak, det var lige hvad jeg mente! Skønt.

Der var lige et par rettelser som jeg selv kunne gennemskue, nemlig at jeg kalder gettransaction i stedet for gettransactionlist og så fjernede jeg // ud for værdien transactionid i arrayet.


men nu kommer der denne fejl:
string(59) "SOAP-ERROR: Encoding: object hasn't 'epayresponse' property" NULL NULL

som jeg ikke kan hitte ud af, da der ifølge epay kun skal være 2 input, nemlig de to som er defineret. 'epayresponse' er en værdi som returneres ifølge epay?
Avatar billede htx98i17 Professor
23. juli 2017 - 08:20 #3
Jeg tilføjede
"epayresponse" => "",
"pbsresponse" => ""

og så kom jeg lidt videre. tak for hjælpen.
Avatar billede TRoXa Novice
23. juli 2017 - 23:27 #4
Det var så lidt :) Ja fik ikke nævnt, at jeg udkommenterede transactionid da den jo ikke bruges i gettransactionlist men kun i gettransaction. Gettransactionlist er jo bare en funktion du kan bruge til at søge efter alle transactions imellem 2 datoer og så bagefter bruge gettransaction til at hente den enkelte transaktion ud :) Men super at jeg kunne hjælpe dig lidt på vej :)
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

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