Avatar billede askovdk Nybegynder
18. januar 2011 - 11:22 Der er 5 kommentarer og
1 løsning

Quickpay API

Jeg kan ikke helt gennemskue hvordan jeg skal udfører dette via deres API med PHP

Eksempel på Cancel, Example 1. HTTP POST request for cancel:

POST /api HTTP/1.1
Host: secure.quickpay.dk
User-Agent: Mozilla/4.0
Content-Length: 107
Content-Type: application/x-www-form-urlencoded

protocol=3
&msgtype=cancel
&merchant=11111111
&transaction=22222222
&md5check=9625ae14fab6adf160cdd3be434dc071

------------Example 2. XML response for cancel:-------------

<?xml version="1.0" encoding="UTF-8"?>
<response>
    <msgtype>cancel</msgtype>
    <ordernumber>RTEST-119756038112</ordernumber>
    <amount>234</amount>
    <currency>DKK</currency>
    <time>071213163941</time>
    <state>5</state>
    <chstat>000</chstat>
    <qpstat>000</qpstat>
    <qpstatmsg>OK</qpstatmsg>
    <merchantemail>test@quickpay.dk</merchantemail>
    <merchant>QuickPay test account</merchant>
    <transaction>5366754</transaction>
    <cardtype>Dankort</cardtype>
    <md5check>a429f70032e131bed9364a3578953f47</md5check>
</response>
Avatar billede repox Seniormester
18. januar 2011 - 11:39 #1
Ved at tage selve XML'en og poste den som rå data til API'et.

Eksempel:
$url = "https://secure.quickpay.net/api";
$xml = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>
<response>
    <msgtype>cancel</msgtype>
    <ordernumber>RTEST-119756038112</ordernumber>
    <amount>234</amount>
    <currency>DKK</currency>
    <time>071213163941</time>
    <state>5</state>
    <chstat>000</chstat>
    <qpstat>000</qpstat>
    <qpstatmsg>OK</qpstatmsg>
    <merchantemail>test@quickpay.dk</merchantemail>
    <merchant>QuickPay test account</merchant>
    <transaction>5366754</transaction>
    <cardtype>Dankort</cardtype>
    <md5check>a429f70032e131bed9364a3578953f47</md5check>
</response>";


$ch = curl_init();    // initialize curl handle
curl_setopt($ch, CURLOPT_URL,$url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
curl_setopt($ch, CURLOPT_POSTFIELDS, $xml);
$result = curl_exec($ch);
var_dump($result);
Avatar billede askovdk Nybegynder
18. januar 2011 - 11:47 #2
Hvordan får jeg så fat i fx. <qpstatmsg> igen ?
Avatar billede askovdk Nybegynder
18. januar 2011 - 11:54 #3
Og er det ikke det forkerte der bliver postet til Quickpay, da det er <response> XML man sender til dem ? det skal vel være request ?
Avatar billede repox Seniormester
18. januar 2011 - 11:57 #4
Ifølge deres API dokumentation, skal du sende POST data - ikke XML, så den rigtige måde at gøre det på er ved at gøre således:
$url = "https://secure.quickpay.net/api";
$postdata = "protocol=3&msgtype=cancel&merchant=11111111&transaction=22222222&md5check=9625ae14fab6adf160cdd3be434dc071";


$ch = curl_init();    // initialize curl handle
curl_setopt($ch, CURLOPT_URL,$url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
curl_setopt($ch, CURLOPT_POSTFIELDS, $postdata);
$result = curl_exec($ch);

$xml = new SimpleXMLElement($result);
echo $xml->qpstatmsg;


Så bruger jeg SimpleXML til at hente qpstatmsg...
Avatar billede askovdk Nybegynder
19. januar 2011 - 11:08 #5
TAK nu virker det smid svar :-)
Avatar billede repox Seniormester
19. januar 2011 - 11:11 #6
Værsgo'
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