2014-09-22 3 views
2

이것은 sagepay를 알고 있거나 내가 할 수없는 것을 알 수있는 사람이라면 누구나 쉽게 알 수 있습니다.SagePay XML 바구니

<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> 

이것은로 돌아 오면 :

이 작동 :

나는 Sagepay를 위해 전송받을 두 바구니가 "상태 세부 사항 : 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

답변

1

.

SagePay의 서버 통합 메소드를 구현하려고 할 때, Nathan이 의심했던 것처럼 PHP 데모 소스 코드로 시작하는 것이 가장 좋습니다. 안에는 바구니를 만들고 API를 통해 SagePay에 연락하기위한 여러 가지 수업이 있습니다. 불행히도 BastketXML이 내 보낸 방식에 근본적인 결함이있어 Nathan이 위에 설명하는 결과를 얻은 것으로 보입니다. 당신이 라인 (615)에서 확인할 수 /lib/classes/item.php 내

:

이 올바르게 될 것 Sagepay를에서 요구하는 무슨 반면 숫자의 형식을 지역의 환경 변수에 의존
if (is_float($value)) 
{ 
    $node = $basket->createElement($name, number_format($value, 2)); 
} 

:

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