代码之家  ›  专栏  ›  技术社区  ›  Mikey1980

使用PHP通过SSL发布XML的问题

  •  0
  • Mikey1980  · 技术社区  · 15 年前

    网关(PSiGate)提供此沙盒url以将XML发布到: https://dev.psigate.com:8645/Messenger/AMMessenger

    if (isset($_POST) && $_GET['task'] == 'new') {
        $dealer = new Dealer($USER->getDealerId());
        $contact = $dealer->getContact();
        // new PSiGate Account
        $xml  = '<?XML version="1.0"?>';
        $xml .= "<Request>\n";
        $xml .= "   <CID>10000001</CID>\n";
        $xml .= "   <UsertID>teststore</UserID>\n";
        $xml .= "   <Password>testpass</Password>\n";  
        $xml .= "   <Action>AMA01</Action>\n";  
        $xml .= "   <Account>\n";
        $xml .= "       <AccountID>".$USER->getDealerId()."</AccountID>\n";
        $xml .= "       <Name>".$contact->getFirstname()." ".$contact->getFirstname()."</Name>\n";
        $xml .= "       <Company>".$contact->getCompany()."</Company>\n";
        $xml .= "       <Address1>".$contact->getAddressLine1()."</Address1>\n";
        $xml .= "       <Address2>".$contact->getAddressLine2()."</Address2>\n";
        $xml .= "       <City>".$contact->getCity()."</City>\n";
        $xml .= "       <Province>".$contact->getProvince()."</Province>\n";
        $xml .= "       <Postalcode>".$contact->getPostalCode(TRUE)."</Postalcode>\n";
        $xml .= "       <Country>".$contact->getCountry()."</Country>\n";
        $xml .= "       <Phone>".$contact->getWorkPhone(TRUE)." EXT. ".$contact->getWorkPhoneExt()."</Phone>\n";
        $xml .= "       <Fax>".$contact->getFaxPhone(TRUE)."</Fax>\n";
        $xml .= "       <Email>".$contact->getEmail()."</Email>\n";
        $xml .= "       <CardInfo>\n";
        $xml .= "           <CardHolder>".$_POST['Bname']."</CardHolder>\n";
        $xml .= "           <CardNumber>".$_POST['CardNumber']."</CardNumber>\n";
        $xml .= "           <CardExpMonth>".$_POST['CardExpMonth']."</CardExpMonth>\n";
        $xml .= "           <CardExpYear>".$_POST['CardExpYear']."</CardExpYear>\n";
        $xml .= "       </CardInfo>\n";
        $xml .= "   </Account>\n";
        $xml .= "</Request>\n";
        $fp = fsockopen("dev.psigate.com", 8645, $errno, $errstr, 30);
        if (!$fp)    {
            echo 'Failed to open connection.';
        } else {
            $contentlength = strlen($xml);
            $out  = "POST /Messenger/AMMessenger HTTP/1.0\r\n";
            $out .= "Host: ssl://dev.psigate.com\r\n";
            $out .= "Connection: Keep-Alive\r\n";
            $out .= "Content-type: application/x-www-form-urlencoded\r\n";
            $out .= "Content-length: $contentlength\r\n\r\n";
            $out .= "XML=$xml";
            fwrite($fp, $out);
            while (!feof($fp)) {
                $theOutput .= fgets($fp, 128);
            }
            fclose($fp);
            echo "there should be output";       
            echo $theOutput;
        } 
    }
    

    我没有得到任何输出只是消息:“应该有输出”,脚本运行了大约45秒左右,我相信它正在做一些事情..哈哈!

    1 回复  |  直到 15 年前
        1
  •  1
  •   nathan    15 年前

    尝试:

    <?php
    if (isset($_POST) && $_GET['task'] == 'new') {
        $dealer = new Dealer($USER->getDealerId());
        $contact = $dealer->getContact();
        // new PSiGate Account
        $xml  = '<?XML version="1.0"?>' . "\n";
        $xml .= "<Request>\n";
        $xml .= "   <CID>10000001</CID>\n";
        $xml .= "   <UsertID>teststore</UserID>\n";
        $xml .= "   <Password>testpass</Password>\n";  
        $xml .= "   <Action>AMA01</Action>\n";  
        $xml .= "   <Account>\n";
        $xml .= "       <AccountID>".$USER->getDealerId()."</AccountID>\n";
        $xml .= "       <Name>".$contact->getFirstname()." ".$contact->getFirstname()."</Name>\n";
        $xml .= "       <Company>".$contact->getCompany()."</Company>\n";
        $xml .= "       <Address1>".$contact->getAddressLine1()."</Address1>\n";
        $xml .= "       <Address2>".$contact->getAddressLine2()."</Address2>\n";
        $xml .= "       <City>".$contact->getCity()."</City>\n";
        $xml .= "       <Province>".$contact->getProvince()."</Province>\n";
        $xml .= "       <Postalcode>".$contact->getPostalCode(TRUE)."</Postalcode>\n";
        $xml .= "       <Country>".$contact->getCountry()."</Country>\n";
        $xml .= "       <Phone>".$contact->getWorkPhone(TRUE)." EXT. ".$contact->getWorkPhoneExt()."</Phone>\n";
        $xml .= "       <Fax>".$contact->getFaxPhone(TRUE)."</Fax>\n";
        $xml .= "       <Email>".$contact->getEmail()."</Email>\n";
        $xml .= "       <CardInfo>\n";
        $xml .= "           <CardHolder>".$_POST['Bname']."</CardHolder>\n";
        $xml .= "           <CardNumber>".$_POST['CardNumber']."</CardNumber>\n";
        $xml .= "           <CardExpMonth>".$_POST['CardExpMonth']."</CardExpMonth>\n";
        $xml .= "           <CardExpYear>".$_POST['CardExpYear']."</CardExpYear>\n";
        $xml .= "       </CardInfo>\n";
        $xml .= "   </Account>\n";
        $xml .= "</Request>\n";
        $fp = fsockopen("ssl://dev.psigate.com", 8645, $errno, $errstr, 30);
        if (!$fp)    {
            echo 'Failed to open connection.';
        } else {
            $contentlength = strlen($xml);
            $out  = "POST /Messenger/AMMessenger HTTP/1.1\r\n";
            $out .= "Host: dev.psigate.com\r\n";
            $out .= "Connection: close\r\n";
            $out .= "Content-type: application/x-www-form-urlencoded\r\n";
            $out .= "Content-length: $contentlength\r\n\r\n";
            $out .= "XML=$xml";
            fwrite($fp, $out);
            while (!feof($fp)) {
                $theOutput .= fgets($fp, 128);
            }
            fclose($fp);
            echo "there should be output";       
            echo $theOutput;
        } 
    }