2014-01-07 57 views
-3

我一直在嘗試使用WorldPay爲我的客戶端使用PHP設置支付網關,但我無法從World Pay服務器獲得任何響應。從哪裏可以獲得XML密碼?它與登錄密碼相同嗎?使用PHP和直接XML方法的WorldPay支付集成

下面是我一直在使用以獲得從世界收費服務器

$xml='<?xml version="1.0" encoding="UTF-8"?> 
<!DOCTYPE paymentService PUBLIC "-//WorldPay/DTD 
WorldPay PaymentService v1//EN" 
"http://dtd.worldpay.com/paymentService_v1.dtd"> 
<paymentService version="1.4" merchantCode="MERCHANTCODE"> 
    <submit> 
     <order orderCode="T0211011" installationId="111111"> 
      <description>20 English Roses from MYMERCHANT Webshops</description> 
      <amount value="100" currencyCode="GBP" exponent="2"/> 
      <orderContent> 
       <![CDATA[ 
        <center> 
         <table> 
           <tr><td bgcolor="#ffff00">Your Internet Order:</td><td colspan="2" bgcolor="#ffff00" align="right">T0211010</td></tr> 
           <tr><td bgcolor="#ffff00" colspan="3">Your billing address:</td></tr> 
           <tr><td colspan="3">Mr. J. Shopper<br><br>27b ParkView Mansions<br>47 Queensbridge Road<br>Chesterton<br>Cambridge<br>CB9 4BQ<br>United Kingdom</td></tr> 
           <tr><td colspan="3">&nbsp;</td></tr> 
           <tr><td bgcolor="#ffff00" colspan="3">Your shipping address:</td></tr> 
           <tr><td colspan="3">Mr.J. Shopper<br>47A Queensbridge Road<br>Cambridge<br>CB9 4BQ<br>UK</td></tr> 
           <tr><td colspan="3">&nbsp;</td></tr> 
           <tr><td bgcolor="#ffff00" colspan="3">Our contact information:</td></tr> 
           <tr><td colspan="3">MYMERCHANT Webshops International<br>461 Merchant Street <br>Merchant Town<br>ZZ1 1ZZ<br>UK <br>[email protected]<br></td></tr> 
           <tr><td colspan="3">&nbsp;</td></tr> 
           <tr><td bgcolor="#c0c0c0" colspan="3">Billing notice:</td></tr> 
           <tr><td colspan="3">Your payment will be handled by WorldPay<br>This name may appear on your bank statement<br>http://www.worldpay.com</td></tr> 
         </table> 
        </center> 
]]> 
      </orderContent> 
      <paymentDetails> 
       <VISA-SSL> 
        <cardNumber>4444333322221111</cardNumber> 
        <expiryDate> 
         <date month="09" year="2019"/> 
        </expiryDate> 
        <cardHolderName>J. Shopper</cardHolderName> 
        <cvc>123</cvc> 
        <cardAddress> 
         <address> 
          <street>47A Queensbridge Rd</street> 
          <postalCode>CB94BQ</postalCode> 
          <countryCode>GB</countryCode> 
         </address> 
        </cardAddress> 
       </VISA-SSL> 
      <session shopperIPAddress="213.137.19.45" id="0215ui8ib1" /> 
      </paymentDetails> 
      <shopper> 
       <shopperEmailAddress>[email protected]</shopperEmailAddress> 
       <browser> 
        <acceptHeader>text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8</acceptHeader> 
        <userAgentHeader>Mozilla/5.0 (Windows; U; Windows NT 5.1; en-GB; rv:1.9.1.5) Gecko/20091102 Firefox/3.5.5 (.NET CLR 3.5.30729)</userAgentHeader> 
       </browser> 
      </shopper> 
      <shippingAddress> 
       <address> 
        <firstName>John</firstName> 
        <lastName>Shopper</lastName> 
        <address1>27b ParkView Mansions</address1> 
        <address2>47 Queensbridge Rd</address2> 
        <address3>Chesterton</address3> 
        <postalCode>CB94BQ</postalCode> 
        <countryCode>GB</countryCode> 
        <telephoneNumber></telephoneNumber> 
       </address> 
      </shippingAddress> 
     </order> 
    </submit> 
</paymentService>'; 

這是URL到WorldPay的服務器的響應XML規範。

$url ="https://MERCHANTCODE:[email protected]/jsp/merchant/xml/paymentService.jsp"; 

我已經使用PHP curl函數從服務器獲取響應。

$ch = curl_init ($url); 
    curl_setopt($ch, CURLOPT_POST,1); 
    curl_setopt($ch, CURLOPT_POSTFIELDS,$xml); 
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
    curl_setopt($ch, CURLOPT_NOPROGRESS, 0); 
    $result = curl_exec ($ch); 
    if ($result == false) 
    { 
    echo "fasle"; 
    } 
    else  
    { 
    print_r($result); 
    echo $result; 
    } 
+0

我想你需要花一些時間閱讀Worldpay文檔。如果您擁有正確的證書,您應該能夠從服務器獲得響應。無論你是否正在進行,正確的方法是另一回事。處理信用卡數據是一件非常重要的事情。如果您不確定自己在做什麼,最終可能會被支付卡公司罰款。如果有疑問,支付一個真正知道他們在做什麼的人。 – 2014-01-07 04:28:55

+0

謝謝。但是我花了相當多的時間閱讀關於XML直接方法的文檔。此外,我一直在使用WorldPay的測試環境來測試支付網關。 –

+0

在這裏我寫了非常簡單的表單集成通過WorldPay接收付款。 http://www.kvcodes.com/2016/08/worldpay-payment-gateway-integration-php/ – Kvvaradha

回答

0

只有Woldpay可以給你的XML密碼,直到它已被證明,該網站是pcidss符合你不能有一個XML密碼。有以下方法可以在不使用XML的情況下實現功能。我建議的技術已經證實,並已將其實施到我的網站中。

遠程捕獲

<html> 

<body> 

<h1>Post-authorise a pre-authorised transaction</h1> 

<br>This allows you to complete only those transactions you consider appropriate. 

<form action="https://secure.worldpay.com/wcc/itransaction"; method="post"> 

<input type="hidden" name="instId" value="XXXXX"> 

<input type="hidden" name="op" value="postAuth-full"> 

<input type="hidden" name="authPW" value="YYYYY"> 

<input type="hidden" name="authMode" value="O"> 

<br>Enter the transaction ID to complete: 

<input type="text" name="transId" value="" size="10"> 

<input type="submit" name="postAuth" value="Capture"> 

</form> 

</body> 

</html> 

遠程退款

<html> 

<body> 

<h1>Issuing a full or partial refund</h1> 

<p>This allows individual transactions to be refunded either fully or in part. Partial refunds must be issued in the currency the shopper originally used to pay. 

<form action="https://secure.worldpay.com/wcc/itransaction"; method="post"> 

<input type="hidden" name="authPW" value="YYYYY"> 

<input type="hidden" name="instId" value="XXXXX"> 

<input type="hidden" name="cartId" value="Refund"> 

<p>Refund type: 

<select name="op"> 

<option value="refund-full">Full</option> 

<option value="refund-partial">Partial</option> 

</select> 

<p>Enter the Transaction ID to refund: 

<input type="text" name="transId" value="" size="10"> 

<p>Enter the amount (partial refund only): 

<input type="text" name="amount" value="" size="10"> 

<p>Enter the currency (partial refund only): 

<input type="text" name="currency" value="" size="3"> 

<input type="submit" name="refund" value="Issue Refund"> 

</form> 

</body> 

</html> 

我希望這一直是一些幫助。