【问题标题】:pay pal express checkout php贝宝快递结帐php
【发布时间】:2014-08-02 17:23:30
【问题描述】:

我一直在使用 paypal api 进行快速结账。 问题:我不能调用 L_PAYMENTREQUEST_n_ 方法。 PAYMENTREQUEST_0_ 有效。但我只能将其用于价格或商品价格。 对于描述和数量,我需要使用 L_PAYMENTREQUEST_n_ 方法。

感谢任何帮助

<?php
// EXpress Checkout Paypal
$paketdata = array(
    array(

"name" => "Premium",
"desc" => "Mein Beschreibung",
"preis" => '9.96',
"count" => '2'
        )
);


$endpreis = "18.97";
$desc = 'meine beschreibung name';
$paypal ="#";
$user = "paypalap@email.com";
$password = "passwd1234";
$signature ="fhhasHDJKHSAHJAL74327327dbsasahbsdcsadb7434";
$version = "93";
$currency = "EUR";

$params = array(
    'METHOD' => 'SetExpressCheckout',
    'USER' => $user,
    'SIGNATURE' => $signature,
    'PWD' => $password,
    'RETURNURL' => 'https://localhost/env/paypal/geschafft.php',
    'CANCELURL' => 'https://localhost/env/paypal/cancel.php',
    'VERSION' => $version,

    'PAYMENTREQUEST_0_AMT' => $endpreis,
    'PAYMENTREQUEST_0_CURRENCYCODE' => $currency,
   );

    foreach ($paketdata as $k => $paket){
    $params['L_PAYMENTREQUEST_0_NAME$k'] = $paket['name'];
    $params['L_PAYMENTREQUEST_0_DESC$k'] = '';
    $params['L_PAYMENTREQUEST_0_ITEMAMT$k'] = $paket['preis'];
  }

    $params = http_build_query($params);
    $endpoint = 'https://api-3t.sandbox.paypal.com/nvp';
    $curl = curl_init();
    curl_setopt_array($curl, array(
        CURLOPT_URL => $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)) {
    var_dump(curl_errno($curl));
    curl_close($curl);
    die();
    }else{
        if ($responseArray['ACK'] == 'Success') {

    }else{      
        curl_close($curl);
        }
}
    curl_close($curl);
    $paypal = 'https://www.sandbox.paypal.com/webscr?cmd=_express-checkout&useraction=commit&token=' . $responseArray['TOKEN']; 
    echo '<pre>';
    print_r($paket);
    echo '</pre>';
    print_r($paypal)
?>


<a href="<?php echo urldecode($paypal) ?>">PAyPal</a>

【问题讨论】:

    标签: php paypal


    【解决方案1】:

    你的请求是这样出来的......

    Array
    (
        [METHOD] => SetExpressCheckout
        [USER] => paypalap@email.com
        [SIGNATURE] => fhhasHDJKHSAHJAL74327327dbsasahbsdcsadb7434
        [PWD] => passwd1234
        [RETURNURL] => https://localhost/env/paypal/geschafft.php
        [CANCELURL] => https://localhost/env/paypal/cancel.php
        [VERSION] => 93
        [PAYMENTREQUEST_0_AMT] => 18.97
        [PAYMENTREQUEST_0_CURRENCYCODE] => EUR
        [L_PAYMENTREQUEST_0_NAME$k] => Premium
        [L_PAYMENTREQUEST_0_DESC$k] => 
        [L_PAYMENTREQUEST_0_ITEMAMT$k] => 9.96
    )
    

    您需要在参数名称周围使用双引号,以便像这样直接在内部使用 $k,所以您需要这个...

    foreach ($paketdata as $k => $paket){
        $params["L_PAYMENTREQUEST_0_NAME$k"] = $paket['name'];
        $params["L_PAYMENTREQUEST_0_DESC$k"] = '';
        $params["L_PAYMENTREQUEST_0_ITEMAMT$k"] = $paket['preis'];
    }
    

    然后那个改变给了我这个,应该可以通过。

    Array
    (
        [METHOD] => SetExpressCheckout
        [USER] => paypalap@email.com
        [SIGNATURE] => fhhasHDJKHSAHJAL74327327dbsasahbsdcsadb7434
        [PWD] => passwd1234
        [RETURNURL] => https://localhost/env/paypal/geschafft.php
        [CANCELURL] => https://localhost/env/paypal/cancel.php
        [VERSION] => 93
        [PAYMENTREQUEST_0_AMT] => 18.97
        [PAYMENTREQUEST_0_CURRENCYCODE] => EUR
        [L_PAYMENTREQUEST_0_NAME0] => Premium
        [L_PAYMENTREQUEST_0_DESC0] => 
        [L_PAYMENTREQUEST_0_ITEMAMT0] => 9.96
    )
    

    不过,另一方面,您不想在返回时使用 localhost 并取消 URL。 PayPal 的服务器是重定向到该 URL 的服务器,因此当时的 localhost 是他们自己的服务器,当然,它不会做你想做的事。

    您需要使用您的公共 IP 地址或设置一个解析为您可以使用的 IP 的域。

    事实上,这很有趣,我只是在这里尝试在 localhost 的前面使用 http://,而 Stack 不会因为这个原因让我发布与它的链接......他们会链接到自己.

    【讨论】:

    • 感谢您的快速回答。是的,这真的很有趣。现在将解决此问题并尝试您的答案
    猜你喜欢
    • 2017-03-26
    • 2014-09-06
    • 2021-12-29
    • 2014-03-06
    • 2017-09-26
    • 2015-11-18
    • 2017-07-15
    • 2011-10-05
    • 2019-01-11
    相关资源
    最近更新 更多