Json数据如何获取PHP的内容

Posted

技术标签:

【中文标题】Json数据如何获取PHP的内容【英文标题】:Json data how to get the contents PHP 【发布时间】:2015-11-26 13:33:17 【问题描述】:

我第一次尝试使用 paypal developer SDK for php。我已经按照 youtube 上的教程一切顺利,直到我尝试执行它并且我收到的响应是 malformed_request JSON 请求未映射到 API 请求。如何获取 JSON 对象的结构和内容以便进一步调查?请参阅下面的代码尝试时发生错误。我在 netbeans 7.4 中开发

<?PHP
//this is copied from this tutorial here on youtube https://www.youtube.com/watch?v=BD1dOWIABe0
use PayPal\Api\Payer;
use PayPal\Api\Item;
use PayPal\Api\ItemList;
use PayPal\Api\Details;
use PayPal\Api\Amount;
use PayPal\Api\Transaction;
use PayPal\Api\RedirectUrls;
use PayPal\Api\Payment;
require '/../app/start.php';
$pTotal = 20.00;
$shipping = 1.00;
$Total = $pTotal + $shipping ;
$payer = new Payer();
$payer->setPaymentMethod('paypal');
$item = new Item();
$item->setName("tieThisToSomething")
->setCurrency('GBP')
->setQuantity(1)
->setPrice($pTotal);
$itemList = new ItemList();
$itemList->setItems($item); //I have removed square brackets from here []
$details = new Details();
$details->setShipping($shipping)
    ->setSubtotal($pTotal);
$amount = new Amount();
$amount->setCurrency('GBP')
    ->setTotal($Total)
    ->setDetails($details);
$transaction = new Transaction();
$transaction->setAmount($amount)
    ->setItemList($itemList)
    ->setDescription('Pay for all your santa fun')
    ->setInvoiceNumber(uniqid());//perhaps tie this to order number?

$redirectUrls = new RedirectUrls();
$redirectUrls->setCancelUrl(SITE_URL . '/pay.php?success=false')
         ->setReturnUrl(SITE_URL . '/pay.php?success=true'); 

$payment = new Payment();
$payment->setPayer($payer)
    ->setTransactions($transaction)
    ->setIntent('sale')
    ->setRedirectUrls($redirectUrls)   ; //should [] be needed here?

//try 
//    $payment->create($paypal);
// catch (Exception $e) 
//    die($e);
//

try 
   $payment->create($paypal);  //Error happens here!
 catch (PayPal\Exception\PayPalConnectionException $ex) 
  echo $ex->getCode(); // Prints the Error Code
  echo $ex->getData(); // Prints the detailed error message 
 die($ex);
 catch (Exception $ex) 
 die($ex);


$approvalUrl = $payment->getApprovalLink();
header("Location: $approvalUrl");

【问题讨论】:

你传入了$paypal,但这似乎不是一个使用的变量?另外,从外观上看,setItems 调用应该传递一个数组。 我确实使用 [] 将 Items 设置为一个数组,但是我收到一个错误,提示 found '[' expected ) 那么听起来您使用的是 PHP 5.3 或更低版本?假设是这样,将项目包装在一个数组中,例如array($item) 代替。 我是 5.3.8 谢谢我试试看。 setTransactions($transaction) 应该是 setTransactions(array($transaction)) 【参考方案1】:

添加日志记录肯定会帮助您调查消息的原始细节。这是添加配置以启用日志记录的链接:

https://github.com/paypal/PayPal-PHP-SDK/wiki/Adding-Configurations

此外,还有很多 sample codes 可以帮助您设置代码。这是显示创建"Payment with PayPal" 的那个。您实际上可以通过关注 instructions here 在本地运行它们。

【讨论】:

以上是关于Json数据如何获取PHP的内容的主要内容,如果未能解决你的问题,请参考以下文章

请问PHP如何解析这样的json值?如何获取其中某个值内容呢? 代码如下:

php获得api返回的json数据后,如何解析?

请教php大神,如何提取一个json数据里的某值?

php如何返回json对象呢

如何从 php 获取数据表 jquery 插件的 json 数据

如何从 php 页面(没有 json)获取数据?