【问题标题】:PayPal express checkout instant update callback not being called [Sandbox]未调用 PayPal 快速结账即时更新回调 [沙盒]
【发布时间】:2016-10-14 08:21:15
【问题描述】:

我在使用 PayPal 回调功能时遇到问题,我这辈子都无法使用它。我已经仔细检查了回调 URL 路径,它是正确的。当用户登录贝宝时,它总是只返回默认的运费。如果有人可以提供帮助,我真的不确定我在这里缺少什么。此外,我将回调超时设置为 6,尽管它似乎只需要大约 3 - 4 秒就失败并返回默认运费。

我已按照https://developer.paypal.com/docs/classic/express-checkout/integration-guide/ECInstantUpdateAPI/ 此处的文档进行操作,并将其应用于我的网站。我还确保我也登录到沙盒。

SetExpressCheckout 参数:

// SetExpressCheckout
$params = array (
    'METHOD' => 'SetExpressCheckout',
    'PAYMENTREQUEST_0_PAYMENTACTION' => 'Sale',
    'VERSION' => $version,                // 124.0
    'USER' => $paypal_user,
    'PWD' => $paypal_password,
    'SIGNATURE' => $signature,
    'L_SHIPPINGOPTIONNAME0' => 'Flat',
    'L_SHIPPINGOPTIONLABEL0' => 'N/A',
    'L_SHIPPINGOPTIONAMOUNT0' => '6.99',
    'L_SHIPPINGOPTIONISDEFAULT0' => 'true',
    'PAYMENTREQUEST_0_INSURANCEOPTIONSOFFERED' => 'false',
    'PAYMENTREQUEST_0_SHIPPINGAMT' => $shipping_default,    // 6.99
    'PAYMENTREQUEST_0_ITEMAMT' => $cart_total,
    'PAYMENTREQUEST_0_AMT' => $cart_total + $shipping_default,
    'MAXAMT' => $cart_total + 30, // 30 is the total possible shipping amount
    'PAYMENTREQUEST_0_CURRENCYCODE' => $paypal_currency,  // AUD
    'RETURNURL' => $paypal_return,
    'CANCELURL' => $paypal_cancel,
    'CALLBACK' => 'HTTP://localhost/moes/php/paypal_callback_php.php',
    'CALLBACKTIMEOUT' => 6,
    'CALLBACKVERSION' => '61.0',
    'ALLOWNOTE' => 1,
    'PAYMENTREQUEST_0_INVNUM' => '123' /*$invoice_number*/,
    'PAYMENTREQUEST_0_TAXAMT' => $tax,    // 0.00
);

// List each product and add to exress check-out array
foreach ($paypal_products as $k => $product){
    $params["L_PAYMENTREQUEST_0_NAME$k"] = $product['name'];
    $params["L_PAYMENTREQUEST_0_AMT$k"] = number_format($product['price'],2);
    $params["L_PAYMENTREQUEST_0_QTY$k"] = $product['qty'];
    $params["L_PAYMENTREQUEST_0_NUMBER$k"] = $product['code'];
    $params["L_PAYMENTREQUEST_0_DESC$k"] = '1';
    /* Optional shipping options to calculate shipping costs on callback
    Option weight (L_PAYMENTREQUEST_n_ITEMWEIGHTVALUEm, L_PAYMENTREQUEST_n_ITEMWEITHTUNITm)
    Option height (L_PAYMENTREQUEST_n_ITEMHEIGHTVALUEm, L_PAYMENTREQUEST_n_ITEMHEIGHTUNITm)
    Option length (L_PAYMENTREQUEST_n_ITEMLENGTHVALUEm, L_PAYMENTREQUEST_n_ITEMLENGTHUNITm)
    Option width (L_PAYMENTREQUEST_n_ITEMWIDTHVALUEm, L_PAYMENTREQUEST_n_ITEMWIDTHUNITm)*/
}

回调脚本:

<?php

// Populate variables into local variables
$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'];

// Setting shipping rate based on country [Test only]
if ($country == "US"){
    echo "METHOD=CallbackResponse&OFFERINSURANCEOPTION=false&L_SHIPPINGOPTIONNAME0=FLat&L_SHIPPINGOPTIONLABEL0=N/A&L_SHIPPINGOPTIONAMOUNT0=10.00&L_TAXAMT0=1.00&L_INSURANCEAMOUNT0=9.00&L_SHIPPINGOPTIONISDEFAULT0=true";
} else {
    echo "METHOD=CallbackResponse&OFFERINSURANCEOPTION=false&L_SHIPPINGOPTIONNAME0=FLat&L_SHIPPINGOPTIONLABEL0=N/A&L_SHIPPINGOPTIONAMOUNT0=30.00&L_TAXAMT0=1.00&L_INSURANCEAMOUNT0=9.00&L_SHIPPINGOPTIONISDEFAULT0=true";
}

?>

我猜我在这里遗漏了一些基本的东西,或者我完全走错了路。

【问题讨论】:

标签: paypal paypal-sandbox


【解决方案1】:

我的问题的解决方案是:

localhost/moes/php/paypal_callback_php.php

显然 PayPal 无法向“localhost”发送 HTTP 请求。我的 WAMP 服务器未配置为可通过 Internet 访问。

【讨论】:

    猜你喜欢
    • 2017-02-09
    • 1970-01-01
    • 2013-12-24
    • 2016-02-18
    • 2018-04-15
    • 2012-10-25
    • 2013-06-26
    • 2013-03-29
    • 2019-08-30
    相关资源
    最近更新 更多