我需要将 json STRIPE API 数据转换成 php

Posted

技术标签:

【中文标题】我需要将 json STRIPE API 数据转换成 php【英文标题】:I need to get the json STRIPE API data converted into php 【发布时间】:2021-03-22 10:28:04 【问题描述】:

我需要帮助将一些 json 数据转换为 php 数组。我正在使用 STRIPE API。它首先被输入到一个javascript数组中

// The items the customer wants to buy
var purchase = 
  
  items: [ id: 2235 ]
;

然后像这样 ajaxed

fetch("create.php", 
  method: "POST",
  headers: 
    "Content-Type": "application/json"
  ,
  body: JSON.stringify(purchase)
)

在服务器端 (php)

header('Content-Type: application/json');

try 
  // retrieve JSON from POST body
  $json_str = file_get_contents('php://input');
  $json_obj = json_decode($json_str);
    //echo $json_obj;


  $paymentIntent = \Stripe\PaymentIntent::create([
    'amount' => calculateOrderAmount($json_obj->items),
    'currency' => 'usd',
  ]);

  $output = [
    'clientSecret' => $paymentIntent->client_secret,
  ];

  echo json_encode($output);
 catch (Error $e) 
  http_response_code(500);
  echo json_encode(['error' => $e->getMessage()]);

我遇到麻烦的是 calculateOrderAmount 函数。该函数看起来像这样(返回只是硬编码,但我将替换为一个数量)

function calculateOrderAmount(array $items): int 
  // I need to loop through the array and break out the 
  // product ids
    
    
    
  return 1400;

对于我的一生,我无法弄清楚如何遍历数组并获取 id 值。我打算循环遍历数组 id,从我的 mysql 数据库中获取值并返回它。 谁能告诉我该怎么做?

【问题讨论】:

【参考方案1】:

我建议更改您的 json_decode() 调用以包含第二个参数,该参数指定 JSON 将被解码为 PHP 对象 (false) 还是关联数组 (true),如下所示:

$json_obj = json_decode($json_str, false);

这样,您在解码 JSON 时无需依赖 JSON_OBJECT_AS_ARRAY 标志设置来确定获取对象还是数组。

接下来,在calculateOrderAmount() 中,您可以执行以下操作:

foreach($items as $item) 
  // Do something with $item->id

【讨论】:

工作就像一个魅力.. 谢谢 :) 我知道我需要研究 json_decode() 有点大声笑。

以上是关于我需要将 json STRIPE API 数据转换成 php的主要内容,如果未能解决你的问题,请参考以下文章

Stripe PHP API 方法响应的结构是啥? [关闭]

如果我正在创建一个在线商店并(第一次)使用 stripe api,我应该将信用卡信息保存在我的数据库中吗?

我是不是需要自己的服务器才能使用 Stripe API?

将 JSON 纪元时间转换为本地人类可读日期

Stripe API - 基于元数据的搜索

在 Laravel 或 iOS 应用程序中转换 JSON API 数据