Versio

SOAP / XML - koppeling

Overzicht Reageren

Niek Berckmans

Niek Berckmans

07/07/2011 12:32:02
Quote Anchor link
Hoi,

Voor het voltooien van maandelijkse eenmalige machtigingen werk ik met Buckaroo. Buckaroo geeft de mogelijkheid om batches door te sturen met informatie over de transacties die voltooid moeten worden via een SOAP / XML - koppeling. Ik krijg echter geen connectie met de server van Buckaroo en vroeg me af of jullie me hiermee kunnen helpen.

Het volgende script (ik heb het even in 1 bestand gepropt) zou moeten zorgen voor de verzending:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
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
<?php
class Transaction {

    // Send GET/POST data through sockets
        function postToHost($data, $timeout = 30)
        {


            $fsp = fsockopen('payment.buckaroo.nl');
            $res = '';
            
            if($fsp)
            {

                // echo "\n\nSEND DATA: \n\n" . $data . "\n\n";

                fputs($fsp, 'POST /soap/soap.asmx HTTP/1.1' . $this->CRLF);
                fputs($fsp, 'Host: payment.buckaroo.nl' . $this->CRLF);
                fputs($fsp, 'Content-Type: text/xml; charset=utf-8' . $this->CRLF);
                fputs($fsp, 'Content-Length: ' . strlen($data) . $this->CRLF);
                fputs($fsp, 'SOAPAction: "https://payment.buckaroo.nl/EenmaligeMachtiging"' . $this->CRLF . $this->CRLF);
                fputs($fsp, $data, strlen($data));

                while(!feof($fsp))
                {

                    $res .= @fgets($fsp, 128);
                }


                fclose($fsp);

                // echo "\n\nRECIEVED DATA: \n\n" . $res . "\n\n";
            }
            else
            {
                $this->setError('Error while connecting to Buckaroo', false, __FILE__, __LINE__);
            }


            return $res;
        }

        
        protected function setError($sDesc, $sCode = false, $sFile = 0, $sLine = 0)
        {

            $this->aErrors[] = array('desc' => $sDesc, 'code' => $sCode, 'file' => $sFile, 'line' => $sLine);
        }


        public function getErrors()
        {

            return $this->aErrors;
        }


        public function hasErrors()
        {

            return (sizeof($this->aErrors) ? true : false);
        }


}

$data='<?xml version="1.0" encoding="utf-8"?>
    <soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
        <soap:Body>
            <EenmaligeMachtiging xmlns="https://payment.buckaroo.nl/">
                <XMLMessage>
                    <Payload VersionID="1.0" xmlns="">
                        <Control Test="1">
                            <Timestamp>2011-07-06 12:10:53</Timestamp>
                            <MerchantID>1</MerchantID>
                           </Control>
                        <Content>
                            <Transaction Id="1">
                                <Customer>
                                    <Gender>1</Gender>
                                    <Firstname>Test</Firstname>
                                    <Lastname>Test</Lastname>
                                    <Mail>test@test.com</Mail>
                                </Customer>
                                <AccountNumber>123456789</AccountNumber>
                                <AccountName>Test</AccountName>
                                <Amount Currency="EUR">1</Amount>
                                <CollectDate>2011-08-01</CollectDate>
                                <CollectType>recurring</CollectType>
                                <Invoice>11080000001</Invoice>
                                <Reference></Reference>
                                <Description>Abbonnement 08/11</Description>
                              </Transaction>
                        </Content>
                    </Payload>
                   </XMLMessage>
                <XMLSignature>
                    <Signature xmlns="">
                        <Fingerprint>1</Fingerprint>
                        <DigestMethod>MD5</DigestMethod>
                        <CalculateMethod>111</CalculateMethod>
                        <SignatureValue>1</SignatureValue>
                    </Signature>
                   </XMLSignature>
          </EenmaligeMachtiging>
       </soap:Body>
</soap:Envelope>'
;
$transaction = new Transaction;
echo $transaction->postToHost($data);
if($transaction->hasErrors()){
    print_r($transaction->getErrors());    
}

?>


Ik krijg de volgende error: Array ( [0] => Array ( [desc] => Error while connecting to Buckaroo
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
=> [file] => /var/www/vhosts/newsmail.nl/httpdocs/soap-xml.php [line] => 34 ) ).

Normaal gezien verzend ik de XML altijd op deze manier en geeft dit geen problemen. Weet iemand een oplossing hiervoor?

Bvd,
Niek
 
PHP hulp

PHP hulp

25/05/2012 18:10:11
Gesponsorde koppelingen:
BHosted Hosting al vanaf € 1,- per maand

Controleer nu gratis jouw domeinnaam:

  
 
Bas Kreleger
Beheerder

Bas Kreleger

07/07/2011 12:42:45
Quote Anchor link
Het gaat dus mis bij

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
$fsp
= fsockopen('payment.buckaroo.nl')
?>


Moet je niet op een speciale poort verbinden? Is dit script van Buckaroo zelf of heb jij dit geschreven?
 
Niek Berckmans

Niek Berckmans

07/07/2011 12:45:36
Quote Anchor link
Ik heb het geschreven, aangezien Buckaroo geen PHP hulp geeft. Het komt uit een script dat ik gebruik om iDEAL transacties te versturen.

Buckaroo zegt het volgende:

Elke request dat u via deze koppeling stuurt dient de volgende URL te gebruiken:
- https://payment.buckaroo.nl/soap/soap.asmx

Wanneer ik naar deze pagina ga krijg ik het volgende:

POST /soap/soap.asmx HTTP/1.1
Host: payment.buckaroo.nl
Content-Type: text/xml; charset=utf-8
Content-Length: length
SOAPAction: "https://payment.buckaroo.nl/EenmaligeMachtiging"

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<?xml version="1.0" encoding="utf-8"?>

<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<soap:Body>
<EenmaligeMachtiging xmlns="https://payment.buckaroo.nl/">
<XMLMessage />
<XMLSignature />
</EenmaligeMachtiging>
</soap:Body>
</soap:Envelope>

Toevoeging op 07/07/2011 18:22:23:

Het connectieprobleem lag inderdaad aan de port.
De volgende regel maakt in ieder geval de connectie met Buckaroo:

$fsp = fsockopen('payment.buckaroo.nl',443,$errno,$error,$timeout);

Daarna maak ik de request d.m.v.

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
<?php
fputs($fsp, 'POST /soap/soap.asmx HTTP/1.1\r\n');
fputs($fsp, 'Host: payment.buckaroo.nl\r\n');
fputs($fsp, 'Content-Type: application/soap+xml; charset=utf-8\r\n');
fputs($fsp, 'Content-Length: ' . strlen($data) . '\r\n\r\n');
fputs($fsp, $data, strlen($data));
?>


Ik krijg echter geen response. Weet iemand waar dit aan kan liggen?
 
Remco van Arkelen

Remco van Arkelen

09/11/2011 07:40:04
Quote Anchor link
Stom, zie nu pas hoe oud het bericht is :)
Gewijzigd op 09/11/2011 07:41:08 door Remco van Arkelen
 



Overzicht Reageren