你好我有一個與貝寶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)
我做了什麼錯?
**有關詳細信息,請參閱其他錯誤消息**哪些錯誤? –
'L_ERRORCODE0'=>字符串'10400'(長度= 5) 'L_SHORTMESSAGE0'=>字符串'由於無效參數導致事務被拒絕。有關詳情,請參閱其他錯誤消息。' (長度= 94) 'L_LONGMESSAGE0'=>字符串'訂單總計缺失。' (長度= 23) – newQuery