Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/72.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php PayPal发货总额错误&;即时更新API_Php_Html_Api_Paypal_Express Checkout - Fatal编程技术网

Php PayPal发货总额错误&;即时更新API

Php PayPal发货总额错误&;即时更新API,php,html,api,paypal,express-checkout,Php,Html,Api,Paypal,Express Checkout,我试图调用ExpressCheckout并执行即时更新API,但无论我做什么,它似乎都会返回一个无效的shipping total错误。我知道当在live上运行时,您需要使用SSL,但是我正在尝试针对沙箱进行测试,仍然会遇到这些错误 我的简单HTML测试页面: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.

我试图调用ExpressCheckout并执行即时更新API,但无论我做什么,它似乎都会返回一个无效的shipping total错误。我知道当在live上运行时,您需要使用SSL,但是我正在尝试针对沙箱进行测试,仍然会遇到这些错误

我的简单HTML测试页面:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Express Checkout with Callback API - PayPal</title>
</head>
<body>
<h1 align="center"> Express Checkout with Callback API </h1>
<h3 align="center"> PayPal </h3>
     <form method=post action=https://api-3t.sandbox.paypal.com/nvp> 
        <input type=hidden name=USER value=xxxxxxxxxxx> 
        <input type=hidden name=PWD value=xxxxxxxx> 
        <input type=hidden name=SIGNATURE value=xxxxxxxxxxxxxxxxxxxxxxx> 
        <input type=hidden name=VERSION value=63.0> 
        <input type=hidden name=PAYMENTREQUEST_0_PAYMENTACTION value=Sale> 
        <input name=PAYMENTREQUEST_0_AMT value=19.95> 
        <input type=hidden name=RETURNURL value=https://www.YourReturnURL.com> 
        <input type=hidden name=CANCELURL value=https://www.YourCancelURL.com>
        <input type=hidden name=MAXAMT value=100.00>
        <input type=hidden name=callback value=....../callback.php>
        <input type=hidden name= callbacktimeout value=5>
        <input type=hidden name= l_shippingoptionisdefault0 value=true> 
        <input type=hidden name= l_shippingoptionname0 value=Ground>
        <input type=hidden name= l_shippingoptionlabel0 value=5 Days>
        <input type=hidden name= l_shippingoptionamount0 value=10.00>
        <input type=hidden name= shippingamt value=10.00>
        <input type=submit name=METHOD value=SetExpressCheckout> 
    </form>
</body>
</html>

使用回调API快速结账-贝宝
使用回调API进行快速签出
贝宝
托管在我的服务器上的My callback.php脚本:

<?php
foreach ($_POST as $key => $value) {
$value = urlencode(stripslashes($value));
$req = "&$key=$value";
}

//Build string
$method = $_POST['METHOD'];
$version = $_POST['CALLBACKVERSION'];
$token = $_POST['TOKEN'];
$currencycode = $_POST['CURRENCYCODE'];
$localecode = $_POST['LOCALECODE'];
$street = $_POST['SHIPTOSTREET'];
$street2 = $_POST['SHIPTOSTREET2'];
$city = $_POST['SHIPTOCITY'];
$state = $_POST['SHIPTOSTATE'];
$country = $_POST['SHIPTOCOUNTRY'];
$zip = $_POST['SHIPTOZIP'];

//If PayPal acocunt has US address
if ($country=="US") {
    echo "METHOD=CallbackResponse&L_SHIPPINGOPTIONNAME0=Ground&L_SHIPPINGOPTIONLABEL0=5 to 7 Days&L_SHIPPINGOPTIONAMOUNT0=10.00&L_SHIPPINGOPTIONISDEFAULT0=true";
    }   

//If PayPal account has a non-US address    
else {
    echo "METHOD=CallbackResponse&L_SHIPPINGOPTIONNAME0=Next Day Air&L_SHIPPINGOPTIONLABEL0=7 to 14 Days&L_SHIPPINGOPTIONAMOUNT0=20.00&L_SHIPPINGOPTIONISDEFAULT0=true";
    }
?>

我已经删除了一些敏感信息的代码,并改变了所有的航运价值100倍,所以请原谅,如果有一些愚蠢的错误。任何帮助都将不胜感激,谢谢

根据(第58页)的要求,
CURRENCYCODE
是必需的。尽管在我的测试中,情况似乎并非如此。但是值得一试

此外,url编码您的值也可以做到这一点。。。所以把你的空格变成+s

我将此用作工作测试响应:
L_保险金额1=1.35&L_托运选项标签2=false&L_托运选项名称0=1%3A+&L_托运选项名称1=2%3A+&L_托运选项标签0=asdf&L_托运选项标签1=UPS+Express+2+天和OFFERINSURANCEOPTION=true&CURRENCYCODE=USD&L_保险金额2.28&L_税款0=2.20&L_托运选项标签1=10.00&L_托运选项标签1=20.00OUNT2=9.99&L_ShippingOptionsDefault1=true&L_ShippingOptionsDefault0=false&L_SHIPPINGOPTIONNAME2=3%3A+&L_SHIPPINGOPTIONLABEL2=UPS+Ground+2+to+7+Days&L_TAXAMT1=2.00&METHOD=CallbackResponse&L_INSURANCEAMOUNT0=1.35&L_TAXAMT2=1.99

使用不同的回调脚本(来自PayPal)返回相同的错误,所以我猜我的问题在HTML中。要么是申报有误,要么根本就没有申报。你们的发货总额是无效的,严重的。我要做的第一件事是修复你的HTML,你的引号在哪里?第二,搜索“PayPal express checkout API reference”