2012-04-17 40 views
15

tôi đang làm việc với paypal nhanh API thanh toán và đang gặp vấn đề với thiết lập số lượng. Dưới đây là các thông số URI của tôi:Paypal API: tổng số tiền giỏ hàng không phù hợp để số tiền

$params = array(
    'METHOD' => 'SetExpressCheckout', 
    'PAYMENTREQUEST_0_SHIPPINGAMT' => '0', 
    'PAYMENTREQUEST_0_TAXAMT' => '0', 
    'PAYMENTREQUEST_0_HANDLINGAMT' => '0', 
    'PAYMENTREQUEST_0_AMT' => "50.00", 
    'RETURNURL' => $this->_returnUri, 
    'CANCELURL' => $this->_cancelUri, 
    'HDRIMG' => $this->_logoUri, 
    'PAYMENTREQUEST_0_CURRENCYCODE' => 'GBP', 
    'L_PAYMENTREQUEST_0_DESC0' => 'Product description', 
    'L_PAYMENTREQUEST_0_NAME0' => 'Product name', 
    'L_PAYMENTREQUEST_0_AMT0' => "50.00", 
    'L_PAYMENTREQUEST_0_QTY0' => "2" 
); 

Nếu L_PAYMENTREQUEST_0_QTY0 được đặt thành 1 quá trình là tốt. Tuy nhiên, thay đổi nó để 2 và thêm 'PAYMENTREQUEST_0_ITEMAMT' => "100.00" để mảng mang lại cho tôi những lỗi sau:

TIMESTAMP: 2012-04-17T12:11:16Z 
CORRELATIONID: da43f6c91254 
ACK: Failure 
VERSION: 88.0 
BUILD: 2808426 
L_ERRORCODE0: 10413 
L_SHORTMESSAGE0: Transaction refused because of an invalid argument. See additional error messages for details. 
L_LONGMESSAGE0: The totals of the cart item amounts do not match order amounts. 
L_SEVERITYCODE0: Error 

Tôi đã cố gắng cho ngày giờ kết thúc để sửa chữa nó và đã từ bỏ. Ai đó có thể làm nổi bật tôi muốn làm để làm cho nó hoạt động?

+0

Các bạn đã thử làm 'L_PAYMENTREQUEST_0_QTY0 = 2' và '' L_PAYMENTREQUEST_0_AMT0 '=> "100.00" 'khi'' PAYMENTREQUEST_0_AMT'=> "100.00" '? Có lẽ paypal không tính toán 2x50.00 nhưng chỉ tìm TOTAL cho mỗi LINE. Tôi chỉ đưa ra giả định ở đây. – Jakub

+0

Than ôi, điều đó không hiệu quả. – Rijndael

+0

Tôi không biết điều đó có hữu ích hay không, nhưng có lẽ tất cả các giá trị đô la của bạn phải được định dạng đúng '0.00' – thescientist

Trả lời

24

Bạn đang thiếu một ITEMAMT. Xem thêm câu trả lời của tôi trong Paypal Express checkout with shipping cost and error chứa một ví dụ làm việc với số lượng nhiều.

&L_PAYMENTREQUEST_0_NAME0=10% Decaf Kona Blend Coffee 
&L_PAYMENTREQUEST_0_NUMBER0=623083 
&L_PAYMENTREQUEST_0_DESC0=Size: 8.8-oz 
&L_PAYMENTREQUEST_0_AMT0=9.95 
&L_PAYMENTREQUEST_0_QTY0=2 
&L_PAYMENTREQUEST_0_NAME1=Coffee Filter bags 
&L_PAYMENTREQUEST_0_NUMBER1=623084 
&L_PAYMENTREQUEST_0_DESC1=Size: Two 24-piece boxes 
&L_PAYMENTREQUEST_0_AMT1=39.70 
&L_PAYMENTREQUEST_0_QTY1=2 
&PAYMENTREQUEST_0_ITEMAMT=99.30 
&PAYMENTREQUEST_0_TAXAMT=2.58 
&PAYMENTREQUEST_0_SHIPPINGAMT=3.00 
&PAYMENTREQUEST_0_HANDLINGAMT=2.99 
&PAYMENTREQUEST_0_SHIPDISCAMT=-3.00 
&PAYMENTREQUEST_0_INSURANCEAMT=1.00 
&PAYMENTREQUEST_0_AMT=105.87 
&PAYMENTREQUEST_0_CURRENCYCODE=USD 
+2

0 phiếu bầu Điều này đã sửa lỗi "Tôi đã thêm chi phí giao hàng, tại sao nó bị hỏng?" câu hỏi. Các tài liệu paypal nên thực sự chỉ là liên kết đến trang web này ... –

+0

Có ai biết làm thế nào tôi có thể thêm hai hoặc nhiều sản phẩm? ... liên quan đến ví dụ điển hình này? Cảm ơn. –

2

Không trực tiếp liên quan đến câu hỏi, nhưng vì đây đi lên đầu tiên trong Google khi tìm kiếm bằng cách thông báo lỗi này có thể có ích cho người khác, những người đang nhận lỗi này.

Bạn có thể nhận được lỗi này nếu một số các lĩnh vực không được thiết lập (null/trống).

Ví dụ trong trường hợp của tôi đó là (ngắt dòng thêm cho rõ ràng):

PAYMENTREQUEST_0_PAYMENTACTION=Sale 
    &REQCONFIRMSHIPPING=0 
    &RETURNURL=some_url 
    &CANCELURL=some_other_url 
    &BRANDNAME=Brand 
    &L_PAYMENTREQUEST_0_NAME0= 
    &L_PAYMENTREQUEST_0_AMT0=1.00 
    &L_PAYMENTREQUEST_0_QTY0=1 
    &PAYMENTREQUEST_0_AMT=1.00 
    &PAYMENTREQUEST_0_CURRENCYCODE=USD 

Và nó đã đem lại cho tôi những lỗi tương tự, mặc dù các số liệu được sử dụng tốt. Tôi nghĩ rằng đó là một vấn đề phân tích cú pháp, bởi vì nếu bạn chèn ngay cả một không gian sau khi L_PAYMENTREQUEST_0_NAME0 = trong

&L_PAYMENTREQUEST_0_NAME0=&L_PAYMENTREQUEST_0_AMT0=1.00 

Nó hoạt động tốt. Vì vậy, tôi đoán là ở cuối của PayPal nó chỉ gán "& L_PAYMENTREQUEST_0_AMT0 = 1.00" cho L_PAYMENTREQUEST_0_NAME0, do đó có hiệu quả loại bỏ nó khỏi thư và do đó kích hoạt lỗi này, vì không có dòng đó số tiền không thực sự tăng lên.

0

Tôi có những rắc rối tương tự và giải quyết nó bằng cách formating giá trong foreach bởi chức năng number_format cho tham số L_PAYMENTREQUEST_0_AMT $ k

Ví dụ:

$items_amount = 0; 
foreach ($products as $k => $product) { 
    $params["L_PAYMENTREQUEST_0_NAME$k"] = $product['name']; 
    $params["L_PAYMENTREQUEST_0_DESC$k"] = $product['desc']; 
    $params["L_PAYMENTREQUEST_0_AMT$k"] = number_format($product['priceIVA'], 2); 
    $params["L_PAYMENTREQUEST_0_QTY$k"] = $product['count']; 
    $items_amount += (floatval($product['priceIVA']) * $product['count']); 
} 

$params['PAYMENTREQUEST_0_AMT'] = $params['PAYMENTREQUEST_0_ITEMAMT'] = number_format($items_amount, 2); 
Các vấn đề liên quan