贝宝中的订单摘要不显示项目

Posted

技术标签:

【中文标题】贝宝中的订单摘要不显示项目【英文标题】:Order summary in paypal does not show the items 【发布时间】:2015-08-19 20:38:04 【问题描述】:

我在我的网站上使用了 Express Checkout 贝宝,但是当我进入支付页面贝宝时,我在订单摘要中看到的总价是这样的: http://i.stack.imgur.com/vPtkM.png

这是我的代码:

   <?php
   require('connexion2.php');
   require 'paypal.php';
   $total=0;  
   $product='';
   $paypal = new Paypal();

$params = array(
                'RETURNURL' => 'http://localhost/SFE/pages/process.php',
                'CANCELURL' => 'http://localhost/SFE/pages/cancel.php',
                //'PAYMENTREQUEST_0_AMT' => $total,
                'PAYMENTREQUEST_0_CURRENCYCODE' => 'USD',
                );
foreach($_POST["cle"] as $k => $value)
        //$valeur est la Num de la facture croche 
        $sql="SELECT * from facture WHERE NumFacture = '$value'";
        $res = $conn->query($sql) or die(print_r($connexion->errorInfo()));
        $i=0;
        $k=0;
        while ( $data=$res->fetch_assoc())

            $NumFact=$data['NumFacture'];
            $Montant=$data['Montant'];

            //Capture les items :
            $params["L_PAYEMENTREQUEST_0_NAME$k"] = $NumFact;

            //Capture le montant :
            $params["L_PAYEMENTREQUEST_0_ITEMAMT"] = $Montant;

            //Capture la quantity :
            $params["L_PAYEMENTREQUEST_0_QTY$k"] = $NumFact;
            //Valorisation du total general :
            $total+= $Montant;
            $i=$i+1;
            $k=$k+1;
        //fin while
    //fin foreach
    $params["PAYMENTREQUEST_0_AMT"] = $total;
    //ferme la connextion
    $conn->close();

$response = $paypal->request('SetExpressCheckout', $params);
if($response)
    $paypal = 'https://www.sandbox.paypal.com/webscr?cmd=_express-checkout&useraction=commit&token=' . $response['TOKEN'];

else 
    var_dump($paypal->errors);
    die('ERREUR ');

?>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Untitled Document</title>
</head>

<body>
<form action="<?php echo $paypal; ?>" method="post" target="_blank" >  
    <br /><br />  
    <input type="submit" value="Pay with PayPal!"> 
</body>
</html>

这是我班贝宝的代码:

  <?php
  class Paypal
      private $user = "";
      private $pwd = "";
      private $signature = "";
      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->user = $pwd;
          
          if($signature)
              $this->user = $signature;
          
          if($prod)
              $this->endpoint = str_replace('sandbox.','', $this->endpoint);
          
      
      public function request($method, $params)
          $params = array_merge($params, array(
                  'METHOD' => $method,
                  'VERSION' => '74.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_errno($curl);
      curl_close($curl);
      return false;
  
  else 
      if($responseArray['ACK'] == 'Success')
          return $responseArray;
      
      else 
          $this->errors = $responseArray;
          curl_close($curl);
          return false;
      

      
  

  ?>

我希望用户看到所有项目的名称、数量和描述

【问题讨论】:

您在请求中发送的 API 版本是什么?您能否提供原始 NVP 请求的副本而不是生成它的代码?需要确切了解实际发送到 PayPal 的内容。 @AndrewAngell 我添加了你现在可以看到的代码! 任何人有任何想法 【参考方案1】:

我找到了解决方案: 我有 2 个错误: - 第一个是关于我输入“L_PAYEMENTREQUEST”的参数的语法,但正确的是“L_PAYMENTREQUEST”。 - 第二个错误是我在这里腾出空间: L_PAYMENTREQUEST_0_NAME0= 在 并且 paypal 无法使用,所以我确实删除了空间并且它可以工作

谢谢

【讨论】:

以上是关于贝宝中的订单摘要不显示项目的主要内容,如果未能解决你的问题,请参考以下文章

DPRP 被禁用。对于沙盒贝宝中的此商家

收到警告 订单描述元素的值已被截断。在贝宝

为啥在贝宝中禁用创建应用程序按钮? [关闭]

在贝宝中设置高级定期付款

贝宝中的 INVALID_RESOURCE_ID

如何使用贝宝中以前的支付卡详细信息向客户收费?