【问题标题】:Storing a JSON value with PHP使用 PHP 存储 JSON 值
【发布时间】:2015-07-02 08:27:47
【问题描述】:

我正在使用条带支付系统,基本上发生的情况是,在收费后,我输出 json 值,以及我想在哪里存储 id 以捕获费用。

下面是充电的方式

try {
 $charge = \Stripe\Charge::create(array(
      'customer' => $customer->id,
      'amount'   => $amount,
      'currency' => 'cad',
            'capture' => 'false',

      'description'=>  $courseTitle

  ));

 echo $charge;
} catch(\Stripe\Error\Card $e) {
  // The card has been declined
  $stripChargeValid = false;
  echo "failed";

}

下面是什么是回声

Stripe\Charge JSON: { "id": "ch_15usNKIOMQSe8X844GzjEpyM", "object": "charge", "created": 1429826450, "livemode": false, "paid": true, "status": "succeeded", "amount": 41000, "currency": "cad", "refunded": false, "source": { "id": "card_15usMsIOMQSe8X84foA2Qb69", "object": "card", "last4": "4242", "brand": "Visa", "funding": "credit", "exp_month": 1, "exp_year": 2016, "fingerprint": "GLlDGRtbDBjmZDdb", "country": "US", "name": null, "address_line1": null, "address_line2": null, "address_city": null, "address_state": null, "address_zip": null, "address_country": null, "cvc_check": "pass", "address_line1_check": null, "address_zip_check": null, "dynamic_last4": null, "metadata": [], "customer": "cus_676avKg8aDycIL" }, "captured": false, "balance_transaction": null, "failure_message": null, "failure_code": null, "amount_refunded": 0, "customer": "cus_676avKg8aDycIL", "invoice": null, "description": "Microsoft Office 2013: Transition from Office 2007\/2010", "dispute": null, "metadata": [], "statement_descriptor": null, "fraud_details": [], "receipt_email": "jonathanetienne@live.com", "receipt_number": null, "shipping": null, "application_fee": null, "refunds": { "object": "list", "total_count": 0, "has_more": false, "url": "\/v1\/charges\/ch_15usNKIOMQSe8X844GzjEpyM\/refunds", "data": [] } }

我想获取 id 值,以便将其发布到 mysqli 查询中

更新:

object(Stripe\Charge)#25 (5) {
  ["_opts":protected]=>
  object(Stripe\Util\RequestOptions)#22 (2) {
    ["headers"]=>
    array(0) {
    }
    ["apiKey"]=>
    string(32) ""
  }
  ["_values":protected]=>
  array(27) {
    ["id"]=>
    string(27) "ch_15uu0dIOMQSe8X84gJIVis9y"
    ["object"]=>
    string(6) "charge"
    ["created"]=>
    int(1429832731)
    ["livemode"]=>
    bool(false)
    ["paid"]=>
    bool(true)
    ["status"]=>
    string(9) "succeeded"
    ["amount"]=>
    int(338400)
    ["currency"]=>
    string(3) "cad"
    ["refunded"]=>
    bool(false)
    ["source"]=>
    object(Stripe\Card)#26 (5) {
      ["_opts":protected]=>
      object(Stripe\Util\RequestOptions)#22 (2) {
        ["headers"]=>
        array(0) {
        }
        ["apiKey"]=>
        string(32) ""
      }
      ["_values":protected]=>
      array(22) {
        ["id"]=>
        string(29) "card_15utkNIOMQSe8X845N5xbl7y"
        ["object"]=>
        string(4) "card"
        ["last4"]=>
        string(4) "4242"
        ["brand"]=>
        string(4) "Visa"
        ["funding"]=>
        string(6) "credit"
        ["exp_month"]=>
        int(1)
        ["exp_year"]=>
        int(2016)
        ["fingerprint"]=>
        string(16) "GLlDGRtbDBjmZDdb"
        ["country"]=>
        string(2) "US"
        ["name"]=>
        NULL
        ["address_line1"]=>
        NULL
        ["address_line2"]=>
        NULL
        ["address_city"]=>
        NULL
        ["address_state"]=>
        NULL
        ["address_zip"]=>
        NULL
        ["address_country"]=>
        NULL
        ["cvc_check"]=>
        NULL
        ["address_line1_check"]=>
        NULL
        ["address_zip_check"]=>
        NULL
        ["dynamic_last4"]=>
        NULL
        ["metadata"]=>
        object(Stripe\AttachedObject)#29 (5) {
          ["_opts":protected]=>
          object(Stripe\Util\RequestOptions)#22 (2) {
            ["headers"]=>
            array(0) {
            }
            ["apiKey"]=>
            string(32) ""
          }
          ["_values":protected]=>
          array(0) {
          }
          ["_unsavedValues":protected]=>
          object(Stripe\Util\Set)#33 (1) {
            ["_elts":"Stripe\Util\Set":private]=>
            array(0) {
            }
          }
          ["_transientValues":protected]=>
          object(Stripe\Util\Set)#34 (1) {
            ["_elts":"Stripe\Util\Set":private]=>
            array(0) {
            }
          }
          ["_retrieveOptions":protected]=>
          array(0) {
          }
        }
        ["customer"]=>
        string(18) "cus_678HJKOahVnt6v"
      }
      ["_unsavedValues":protected]=>
      object(Stripe\Util\Set)#30 (1) {
        ["_elts":"Stripe\Util\Set":private]=>
        array(0) {
        }
      }
      ["_transientValues":protected]=>
      object(Stripe\Util\Set)#31 (1) {
        ["_elts":"Stripe\Util\Set":private]=>
        array(0) {
        }
      }
      ["_retrieveOptions":protected]=>
      array(0) {
      }
    }
    ["captured"]=>
    bool(false)
    ["balance_transaction"]=>
    NULL
    ["failure_message"]=>
    NULL
    ["failure_code"]=>
    NULL
    ["amount_refunded"]=>
    int(0)
    ["customer"]=>
    string(18) "cus_678HJKOahVnt6v"
    ["invoice"]=>
    NULL
    ["description"]=>
    string(39) "PMP Exam Prep Training (PMBOK Guide V5)"
    ["dispute"]=>
    NULL
    ["metadata"]=>
    object(Stripe\AttachedObject)#32 (5) {
      ["_opts":protected]=>
      object(Stripe\Util\RequestOptions)#22 (2) {
        ["headers"]=>
        array(0) {
        }
        ["apiKey"]=>
        string(32) ""
      }
      ["_values":protected]=>
      array(0) {
      }
      ["_unsavedValues":protected]=>
      object(Stripe\Util\Set)#36 (1) {
        ["_elts":"Stripe\Util\Set":private]=>
        array(0) {
        }
      }
      ["_transientValues":protected]=>
      object(Stripe\Util\Set)#37 (1) {
        ["_elts":"Stripe\Util\Set":private]=>
        array(0) {
        }
      }
      ["_retrieveOptions":protected]=>
      array(0) {
      }
    }
    ["statement_descriptor"]=>
    NULL
    ["fraud_details"]=>
    array(0) {
    }
    ["receipt_email"]=>
    string(24) ""
    ["receipt_number"]=>
    NULL
    ["shipping"]=>
    NULL
    ["application_fee"]=>
    NULL
    ["refunds"]=>
    object(Stripe\Collection)#35 (5) {
      ["_opts":protected]=>
      object(Stripe\Util\RequestOptions)#22 (2) {
        ["headers"]=>
        array(0) {
        }
        ["apiKey"]=>
        string(32) ""
      }
      ["_values":protected]=>
      array(5) {
        ["object"]=>
        string(4) "list"
        ["total_count"]=>
        int(0)
        ["has_more"]=>
        bool(false)
        ["url"]=>
        string(47) "/v1/charges/ch_15uu0dIOMQSe8X84gJIVis9y/refunds"
        ["data"]=>
        array(0) {
        }
      }
      ["_unsavedValues":protected]=>
      object(Stripe\Util\Set)#39 (1) {
        ["_elts":"Stripe\Util\Set":private]=>
        array(0) {
        }
      }
      ["_transientValues":protected]=>
      object(Stripe\Util\Set)#40 (1) {
        ["_elts":"Stripe\Util\Set":private]=>
        array(0) {
        }
      }
      ["_retrieveOptions":protected]=>
      array(0) {
      }
    }
  }
  ["_unsavedValues":protected]=>
  object(Stripe\Util\Set)#27 (1) {
    ["_elts":"Stripe\Util\Set":private]=>
    array(0) {
    }
  }
  ["_transientValues":protected]=>
  object(Stripe\Util\Set)#28 (1) {
    ["_elts":"Stripe\Util\Set":private]=>
    array(0) {
    }
  }
  ["_retrieveOptions":protected]=>
  array(0) {
  }
}

更新:

以下是输出:

$charge_json = $charge->__toJSON(); 
echo "<pre>";
 var_dump($charge_json); 
 echo "</pre>";

string(1677) "{
    "id": "ch_15vDxQIOMQSe8X84NBckjjil",
    "object": "charge",
    "created": 1429909412,
    "livemode": false,
    "paid": true,
    "status": "succeeded",
    "amount": 41000,
    "currency": "cad",
    "refunded": false,
    "source": {
        "id": "card_15vDwlIOMQSe8X843FPN4gAt",
        "object": "card",
        "last4": "4242",
        "brand": "Visa",
        "funding": "credit",
        "exp_month": 1,
        "exp_year": 2016,
        "fingerprint": "GLlDGRtbDBjmZDdb",
        "country": "US",
        "name": "john",
        "address_line1": "",
        "address_line2": null,
        "address_city": "",
        "address_state": "",
        "address_zip": "",
        "address_country": null,
        "cvc_check": "pass",
        "address_line1_check": "pass",
        "address_zip_check": "pass",
        "dynamic_last4": null,
        "metadata": [],
        "customer": "cus_67StWh5kSlXJWN"
    },
    "captured": false,
    "balance_transaction": null,
    "failure_message": null,
    "failure_code": null,
    "amount_refunded": 0,
    "customer": "cus_67StWh5kSlXJWN",
    "invoice": null,
    "description": "",
    "dispute": null,
    "metadata": [],
    "statement_descriptor": null,
    "fraud_details": [],
    "receipt_email": "",
    "receipt_number": null,
    "shipping": null,
    "application_fee": null,
    "refunds": {
        "object": "list",
        "total_count": 0,
        "has_more": false,
        "url": "\/v1\/charges\/ch_15vDxQIOMQSe8X84NBckjjil\/refunds",
        "data": []
    }
}"

【问题讨论】:

    标签: php mysql json mysqli


    【解决方案1】:

    您的 echo 指令正在从 Object 调用 __toString 方法。但是,您的费用变量是 PHPStripeObject。

    话虽如此,我想您可以执行以下操作以确保最后得到一个包含您的数据的数组:

    try {
      $charge = \Stripe\Charge::create(array(
          'customer' => $customer->id,
          'amount'   => $amount,
          'currency' => 'cad',
          'capture' => 'false',
          'description'=>  $courseTitle
       ));
       $chargeArray = \Stripe\Util\Util::convertStripeObjectToArray($charge);
       $id = $chargeArray['id'];
       ...
    } catch(\Stripe\Error\Card $e) {
      // The card has been declined
      $stripChargeValid = false;
      echo "failed";
    }
    

    【讨论】:

    • 感谢您的详细解释。我收到以下错误致命错误:找不到类'Util\Util'
    • 我已经编辑了我的答案以使用所需的类作为使用语句(检查第一行)。这样就可以使用 Util::convertStripeObjectToArray 静态方法
    • 感谢它不幸给出了这个结果致命错误:类 'Util' 也没有找到
    • 检查这个:$chargeArray = \Stripe\Util\Util::convertStripeObjectToArray($charge);
    • 感谢您的帮助。那行运行了,但是在下面我收到以下错误注意:未定义索引:此行中的 id $id = $chargeArray['id']; stripe.com/docs/api/java#capture_charge
    【解决方案2】:

    您只需将$charge 作为 JSON 对象处理即可。:

    $charge-&gt;id;

    要了解其属性和值,请使用:

    echo "<pre>";
    var_dump($charge);
    echo "</pre>";
    

    【讨论】:

    • 我收到以下错误 Parse error: syntax error, unexpected 'echo' (T_ECHO) for echo "";
    • @user3907211 查找echo "&lt;pre&gt;"; 之前的行,它应该缺少半列;
    • 谢谢。我对我的帖子进行了更新,以显示 var_dump 的输出。我如何只选择 id 并将其用作变量,如 $id = ....
    • 它似乎是受保护的属性,因此例如$charge-&gt;_values['id'] 不会返回id。所以尝试this answer 将此受保护对象转换为 JSON
    • 好的,所以我将它转换为 JSON $charge_json = $charge->__toJSON();回声“
      ”; var_dump($charge_json);回声“
      ”;并将其打印出来 string(1624) "{ "id": "ch_15uvBOIOMQSe8X84sTna1w78", "object": "charge", "created": 1429837242, "livemode": false, "paid": true, 我将如何退出那个id
    猜你喜欢
    • 2023-03-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多