2012-04-17 11 views
15

मैं पेपैल एक्सप्रेस चेकआउट एपीआई के साथ काम कर रहा हूं और मात्रा निर्धारित करने में समस्याएं हैं। नीचे मेरी यूआरआई मानकों हैं:पेपैल एपीआई: कार्ट आइटम की मात्रा का योग ऑर्डर राशियों से मेल नहीं खाता

$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" 
); 

L_PAYMENTREQUEST_0_QTY0 1 पर सेट है, तो प्रक्रिया ठीक है।

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 

मैं इसे ठीक करने के लिए लंबे समय तक की कोशिश की है और छोड़ दिया है: हालांकि, यह 2 के लिए बदल रहा है और 'PAYMENTREQUEST_0_ITEMAMT' => "100.00" सरणी में जोड़ने से मुझे निम्न त्रुटि देता है। क्या कोई मुझे हाइलाइट कर सकता है कि मुझे इसे काम करने के लिए क्या करना है?

+0

आप 'L_PAYMENTREQUEST_0_QTY0 = 2' और' 'L_PAYMENTREQUEST_0_AMT0 बनाने की कोशिश की है '=> "100.00" 'जबकि' PAYMENTREQUEST_0_AMT '=>" 100.00 "'? शायद पेपैल 2x50.00 की गणना नहीं करता है लेकिन केवल प्रति लाइन के लिए देखता है। मैं सिर्फ धारणाएं कर रहा हूं। – Jakub

+0

हां, यह काम नहीं किया। – Rijndael

+0

मैं अगर यह मदद मिलेगी पता नहीं है, लेकिन शायद सभी अपने डॉलर मूल्यों ठीक से '0.00' – thescientist

उत्तर

24

आप ITEMAMT खो रहे हैं। Paypal Express checkout with shipping cost and error में मेरा उत्तर भी देखें जिसमें कई मात्राओं के साथ एक कार्य उदाहरण शामिल है।

&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

0down वोट यह तय प्रारूप में होना चाहिए मेरी "मैं शिपिंग लागत को जोड़ दिया है, कारण है कि यह टूट गया है?" सवाल। पेपैल दस्तावेज़ वास्तव में सिर्फ इस साइट से लिंक होना चाहिए ... –

+0

क्या कोई जानता है कि मैं दो या दो से अधिक उत्पादों को कैसे जोड़ सकता हूं? ... इस अच्छे उदाहरण के बारे में? धन्यवाद। –

2

नहीं सीधे प्रश्न से संबंधित है, लेकिन यह पहली ऊपर आता है गूगल में जब त्रुटि संदेश से खोज इस वाले अन्य लोगों को यह संदेश मिल रहे हैं करने के लिए उपयोगी हो सकता है।

यदि कुछ फ़ील्ड सेट नहीं हैं (शून्य/खाली) आपको यह त्रुटि मिल रही है।

मेरे मामले में उदाहरण के लिए यह (लाइन स्पष्टता के लिए जोड़ा टूटता है) था:

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 

और यह मुझे एक ही त्रुटि दे रहा था, भले ही मात्रा में ठीक कर रहे हैं। मुझे लगता है कि यह एक पार्स मुद्दा है, यदि आप L_PAYMENTREQUEST_0_NAME0 के बाद भी खाली स्थान शामिल क्योंकि में

&L_PAYMENTREQUEST_0_NAME0=&L_PAYMENTREQUEST_0_AMT0=1.00 

यह ठीक काम करता है =।

तो मेरा अनुमान है कि पेपल के अंत में यह सिर्फ "& L_PAYMENTREQUEST_0_AMT0 = 1.00" निर्दिष्ट करता L_PAYMENTREQUEST_0_NAME0 है, इस प्रकार प्रभावी ढंग से संदेश से हटाने और फलस्वरूप इस त्रुटि से चलाता है, कि लाइन मात्रा में वास्तव में जोड़ नहीं है बिना के बाद से है।

0

मैं एक ही मुसीबत था और पैरामीटर L_PAYMENTREQUEST_0_AMT $ कश्मीर के लिए समारोह number_format द्वारा foreach में कीमतों formating द्वारा इसका समाधान नहीं होता

उदाहरण:

$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); 
संबंधित मुद्दे