2014-09-22 53 views
2

對於那些瞭解sagepay或能夠發現我不能的人來說,這是一個快速的選擇。SagePay XML購物籃

我有送送sagepay兩個筐:

這工作:

<basket> 
<agentId>vendor1</agentId> 
    <item> 
     <description>Selling premier package</description> 
     <quantity>1</quantity> 
     <unitNetAmount>595</unitNetAmount> 
     <unitTaxAmount>119.00</unitTaxAmount> 
     <unitGrossAmount>714.00</unitGrossAmount> 
     <totalGrossAmount>714.00</totalGrossAmount> 
    </item> 
</basket> 

這回來了「狀態詳細信息:3021:籃下格式是無效的。」錯誤?

<basket> 
<agentId>vendor1</agentId> 
    <item> 
     <description>Selling premier package</description> 
     <quantity>1</quantity> 
     <unitNetAmount>894</unitNetAmount> 
     <unitTaxAmount>178.80</unitTaxAmount> 
     <unitGrossAmount>1,072.80</unitGrossAmount> 
     <totalGrossAmount>1,072.80</totalGrossAmount> 
    </item> 
</basket> 

任何人都可以找到原因嗎? :S

感謝

+1

固定,對不起,這是逗號,我必須用這種方式編號格式:'number_format($ number,2,'。','');'。謝謝。 – Kal 2014-09-22 06:59:34

回答

1

我會嘗試,因爲我剛剛從同樣的問題遭受Nathan的問題/評論/回答擴大。

當試圖實施SagePay的服務器集成方法時,我認爲最好的開始是使用他們的PHP演示源代碼,因爲我懷疑Nathan做了什麼。其中包含一些用於構建購物籃並通過API與SagePay聯繫的類。不幸的是,看起來BastketXML的輸出方式存在根本缺陷,導致了Nathan在上面描述的內容。

在/lib/classes/item.php你會發現在管線615:

if (is_float($value)) 
{ 
    $node = $basket->createElement($name, number_format($value, 2)); 
} 

這依賴於當地的環境變量的格式正確,而所需條件由SagePay將是數量:

if (is_float($value)) 
{ 
    $node = $basket->createElement($name, number_format($value, 2, '.', '')); 
}