如何在django视图中的变量中使用xml?

时间:2013-02-12 07:22:54

标签: python django

我在PHP中有以下内容,但需要在django视图中使用它。基本上这是针对USAepay xml。我需要通过HTTP post发送它:

$result=$this->httpPost($url, array('xml'=>$data));

我正试图在django的视图中获得以下的替代。

$data = '<?xml version="1.0" encoding="UTF-8"?>' .
            '<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="urn:usaepay" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">' . 
            '<SOAP-ENV:Body>' .
            '<ns1:runCustomerTransaction>'.
            '<Token xsi:type="ns1:ueSecurityToken">' .
            '<ClientIP xsi:type="xsd:string">' . $_SERVER['REMOTE_ADDR'] . '</ClientIP>' .
            '<PinHash xsi:type="ns1:ueHash">' .
            '<HashValue xsi:type="xsd:string">' . $hash . '</HashValue>' .
            '<Seed xsi:type="xsd:string">' . $seed . '</Seed>' . 
            '<Type xsi:type="xsd:string">sha1</Type>' .
            '</PinHash>' .
            '<SourceKey xsi:type="xsd:string">' . $this->key . '</SourceKey>' .
            '</Token>' .
            '<CustNum xsi:type="xsd:integer">' . $CustNum . '</CustNum>'.
            '<PaymentMethodID xsi:type="xsd:integer">0</PaymentMethodID>'.
            '<Parameters xsi:type="ns1:CustomerTransactionRequest">'.
            '<Command xsi:type="xsd:string">Sale</Command>'.
            '<Details xsi:type="ns1:TransactionDetail">' . 
            '<Amount xsi:type="xsd:double">' . $this->xmlentities($this->amount) . '</Amount>' . 
            '<Description xsi:type="xsd:string">' . $this->xmlentities($this->description) . '</Description>'.
            '<Invoice xsi:type="xsd:string">' . $this->xmlentities($this->invoice) . '</Invoice>' .
            '<Currency xsi:type="xsd:string">484</Currency>'.
            '</Details>' .
            '</Parameters>'.
            '</ns1:runCustomerTransaction>'.
            '</SOAP-ENV:Body>' .
            '</SOAP-ENV:Envelope>';

1 个答案:

答案 0 :(得分:0)

我是通过

来做到的
dataquick = '<?xml version="10" encoding="UTF-8"?>'+
    '<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemasxmlsoaporg/soap/envelope/" xmlns:ns1="urn:usaepay" xmlns:xsd="http://wwww3org/2001/XMLSchema" xmlns:xsi="http://wwww3org/2001/XMLSchema-instance" xmlns:SOAP-ENC="http://schemasxmlsoaporg/soap/encoding/" SOAP-ENV:encodingStyle="http://schemasxmlsoaporg/soap/encoding/">' +
    '<SOAP-ENV:Body>' +
    '<ns1:runCustomerTransaction>' +
    '<Token xsi:type="ns1:ueSecurityToken">' +
    '<ClientIP xsi:type="xsd:string">'+str(os.environ.get('REMOTE_ADDR'))+'</ClientIP>' +
    '<PinHash xsi:type="ns1:ueHash">' +
    '<HashValue xsi:type="xsd:string">'+str(UMhash)+'</HashValue>' + 
    '<Seed xsi:type="xsd:string">'+str(umSend)+'</Seed>' +
    '<Type xsi:type="xsd:string">sha1</Type>' +
    '</PinHash>' +
    '<SourceKey xsi:type="xsd:string">*******************</SourceKey>' +
    '</Token>' +
    '<CustNum xsi:type="xsd:integer">'+str(request.user.id)+'</CustNum>' +
    '<PaymentMethodID xsi:type="xsd:integer">0</PaymentMethodID>' +
    '<Parameters xsi:type="ns1:CustomerTransactionRequest">' +
    '<Command xsi:type="xsd:string">Sale</Command>' +
    '<Details xsi:type="ns1:TransactionDetail">'  +
    '<Amount xsi:type="xsd:double">499</Amount>'  +
    '<Description xsi:type="xsd:string"></Description>' +
    '<Invoice xsi:type="xsd:string"></Invoice>' +
    '<Currency xsi:type="xsd:string">484</Currency>' +
    '</Details>' +
    '</Parameters>' +
    '</ns1:runCustomerTransaction>' +
    '</SOAP-ENV:Body>' +
    '</SOAP-ENV:Envelope>'  
    #cursor.execute("INSERT INTO payments(customerNbr,transactionID,transactionType,authorizationID,cardHolderID,methodID,accountNumber,exchangeRate,transactionStatus,transactionResult,paymentDate,orderNumber,orderAmount,isRefunded,refundDate,refundStatus,RefundAmount,kountID,paymentGateway) VALUES (%s,%s,'Recurring',%s,%s,'0',%s,'',%s,%s,'','','',0,'','',0,0,'USAepay')",[request.user.id,parsed_results['UMrefNum'],parsed_results['UMauthCode'],parsed_results['UMcustnum'],UMcardinsert,parsed_results['UMstatus'],parsed_results['UMstatus']])
    headers = { 
    "xml": dataquick
    }