2015-10-10 98 views
0

你好我有一個與貝寶API 問題,所以我設置了一切爲GetExpressCheckoutDetails,現在我試圖做DoExpressCheckoutPayment。PayPal API錯誤:10400

這是我得到的錯誤:

array (size=9) 
    'TIMESTAMP' => string '2015-10-10T18:56:25Z' (length=20) 
    'CORRELATIONID' => string '1ad7e8dba8063' (length=13) 
    'ACK' => string 'Failure' (length=7) 
    'VERSION' => string '98.0' (length=4) 
    'BUILD' => string '18308778' (length=8) 
    'L_ERRORCODE0' => string '10400' (length=5) 
    'L_SHORTMESSAGE0' => string 'Transaction refused because of an invalid argument. See additional error messages for details.' (length=94) 
    'L_LONGMESSAGE0' => string 'Order total is missing.' (length=23) 
    'L_SEVERITYCODE0' => string 'Error' (length=5) 

這裏是我的代碼:

我的PayPal類:

<?php 

class Paypal{ 

    private $user = 'xxxxxx'; 
    private $pwd = '5xxxxxx'; 
    private $signature = 'xxxxxx'; 
    private $endpoint = 'https://api-3t.sandbox.paypal.com/nvp'; 
    public $errors = array(); 


    public function __construct($user = false, $pwd = false, $signature = false, $prod = false){ 
     if($user){ 
      $this->user = $user; 
     } 
     if($pwd){ 
      $this->pwd = $pwd; 
     } 
     if($signature){ 
      $this->signature = $signature; 
     } 
     if($prod){ 
      $this->endpoint = str_replace('sandbox.','', $this->endpoint); 
     } 
    } 


    public function request($method, $params){ 
     $params = array_merge($params, array(
      'METHOD' => 'SetExpressCheckout', 
      'VERSION' => '98.0', 
      'USER' => $this->user, 
      'SIGNATURE' => $this->signature, 
      'PWD' => $this->pwd 
     )); 

     $params = http_build_query($params); 
     $curl = curl_init(); 

     curl_setopt_array($curl, array(
      CURLOPT_URL => $this->endpoint, 
      CURLOPT_POST => 1, 
      CURLOPT_POSTFIELDS => $params, 
      CURLOPT_RETURNTRANSFER => 1, 
      CURLOPT_SSL_VERIFYPEER => false, 
      CURLOPT_SSL_VERIFYHOST => false, 
      CURLOPT_VERBOSE => 1 
     )); 


     $response = curl_exec($curl); 
     $responseArray = array(); 
     parse_str($response, $responseArray); 
     if(curl_errno($curl)){ 
      $this->errors = curl_error($curl); 
      curl_close(); 
      return false; 
     }else{ 
      if($responseArray['ACK'] == 'Success'){ 
       return $responseArray; 
      }else{ 
       $this->errors = $responseArray; 
       curl_close($curl); 
       return false; 
      } 
     } 

    } 



} 

Process.php

<?php 
/******************* 
TO DO: 
SECURISER l'acces a la page 
$_GET['token'] doit etres defini 
$_GET['PayerID'] aussi 
*******************/ 
require 'paypal.php'; 

$paypal = new Paypal(); 
$response = $paypal->request('GetExpressCheckoutDetails', array(
    'TOKEN' => $_GET['token'] 
)); 

if($response){ 
}else{ 
    var_dump($paypal->errors); 
    die(); 
} 

$response = $paypal->request('DoExpressCheckoutPayment', array(
    'TOKEN' => $_GET['token'], 
    'PAYERID' => $_GET['PayerID'], 
    'PAYMENTREQUEST_0_PAYMENTACTION' => 'Sale', 
    'PAYMENTREQUEST_0_AMT' => $response['PAYMENTINFO_0_AMT'], 
    'PAYMENTREQUEST_0_ITEMAMT' => $response['PAYMENTINFO_0_AMT'], 
    'PAYMENTREQUEST_0_CURENCYCODE' => 'EUR', 
    'L_PAYMENTREQUEST_0_QTY0' => 1, 
    'L_PAYMENTREQUEST_0_AMT0' => 12.0, 
    'L_PAYMENTREQUEST_0_NAME0' => "Générateur d'énergie quatique", 
    'L_PAYMENTREQUEST_0_NUMBER0' => 0, 
    'L_PAYMENTREQUEST_0_QTY1' => 2, 
    'L_PAYMENTREQUEST_0_AMT0' => 30.50, 
    'L_PAYMENTREQUEST_0_NAME0' => "Hyperdrive T14", 
    'L_PAYMENTREQUEST_0_NUMBER0' => 1 

)); 

if($response){ 
    var_dump($response); 
}else{ 
    var_dump($paypal->errors); 
} 

每當我重定向到proc ess.php由支付寶後,我得到這樣的:

array (size=9) 
    'TIMESTAMP' => string '2015-10-10T18:56:25Z' (length=20) 
    'CORRELATIONID' => string '1ad7e8dba8063' (length=13) 
    'ACK' => string 'Failure' (length=7) 
    'VERSION' => string '98.0' (length=4) 
    'BUILD' => string '18308778' (length=8) 
    'L_ERRORCODE0' => string '10400' (length=5) 
    'L_SHORTMESSAGE0' => string 'Transaction refused because of an invalid argument. See additional error messages for details.' (length=94) 
    'L_LONGMESSAGE0' => string 'Order total is missing.' (length=23) 
    'L_SEVERITYCODE0' => string 'Error' (length=5) 

我做了什麼錯?

+0

**有關詳細信息,請參閱其他錯誤消息**哪些錯誤? –

+0

'L_ERRORCODE0'=>字符串'10400'(長度= 5) 'L_SHORTMESSAGE0'=>字符串'由於無效參數導致事務被拒絕。有關詳情,請參閱其他錯誤消息。' (長度= 94) 'L_LONGMESSAGE0'=>字符串'訂單總計缺失。' (長度= 23) – newQuery

回答

0

paypal api error codes

10400 

Transaction refused because of an invalid argument. See additional error messages for details.

OrderTotal is missing.

基本上,你錯過了OrderTotal

+0

你可以給我我需要使用的變量嗎? – newQuery

+0

看看這個答案http://stackoverflow.com/a/16300565/797495,檢查他使用的變量,特別是'PAYMENTREQUEST_0_AMT = 106.72' –

0

按照你的代碼,我認爲L_PAYMENTREQUEST_0_AMT0與不同的價格設置好的兩倍的參數,檢查只設置一次