简体   繁体   English

如何从 Stripe 对象 PHP 获取关联数组

[英]How to get associative array from Stripe objects PHP

I am trying to retrieve the metadata and payment amount from an object retrieved from an endpoint using Stripe's PHP library.我正在尝试从使用 Stripe 的 PHP 库从端点检索到的 object 中检索元数据和付款金额。

I am using a very slightly modified version of their example code:我正在使用他们的示例代码的一个稍微修改过的版本:

$payload = @file_get_contents('php://input');
$event = null;

try {
    $event = \Stripe\Event::constructFrom(
        json_decode($payload, true)
    );
} catch(\UnexpectedValueException $e) {
    // Invalid payload
    http_response_code(400);
    exit();
}

// Handle the event
switch ($event->type) {
    case 'payment_intent.succeeded':
        $paymentIntent = $event->data->object; // contains a \Stripe\PaymentIntent
        // Read the result.
        $paymentIntentValues = $paymentIntent->values(); // Returns standard array??
        break;
    case 'payment_method.attached':
        $paymentMethod = $event->data->object; // contains a \Stripe\PaymentMethod
        // Read the result.
        $paymentMethodValues = $paymentMethod->values(); // Returns standard array??
        break;
    // ... handle other event types
    default:
        // Unexpected event type
        http_response_code(400);
        exit();
}

http_response_code(200);

The problem is when I dump any of the objects, eg $paymentIntent, the dump is just of the Charge object and when I try get the values using values();问题是当我转储任何对象时,例如 $paymentIntent,转储只是 Charge object 并且当我尝试使用values() 获取值时; it gives me an ambiguous standard array.它给了我一个模棱两可的标准数组。

eg例如

array (45) [
    0 => string (12) "pi_secretkey"
    1 => string (12) "paymentIntent"
    2 => integer 247
    3 => integer 0
    4 => null
    5 => null
    6 => null
    7 => string (13) "anothersecret"
    8 => Stripe\StripeObject (7) (
        protected '_lastResponse' -> null
        protected '_opts' -> Stripe\Util\RequestOptions (3) (
            public 'apiBase' -> null
            public 'apiKey' -> null
            public 'headers' -> array (0) []
        )

I want to be able to read the values of that $paymentIntent object and use the values consistently either through associative array or object.我希望能够读取 $paymentIntent object 的值,并通过关联数组或 object 一致地使用这些值。

In order to retrieve an associative array listing the values of Stripe objects, eg the PaymentIntent object, you must use the toArray() function为了检索列出 Stripe 对象值的关联数组,例如 PaymentIntent object,您必须使用toArray() function

eg例如

// Handle the event
switch ($event->type) {
    case 'payment_intent.succeeded':
        $paymentIntent = $event->data->object; // contains a \Stripe\PaymentIntent
        // Read the result.
        $paymentIntentValues = $paymentIntent->toArray(); // Returns associative array of values.
        break;
    case 'payment_method.attached':
        $paymentMethod = $event->data->object; // contains a \Stripe\PaymentMethod
        // Read the result.
        $paymentMethodValues = $paymentMethod->toArray(); // Returns associative array of values.
        break;
    // ... handle other event types
    default:
        // Unexpected event type
        http_response_code(400);
        exit();
}

result:结果:

array (45) [
    'id' => string (12) "pi_secretkey"
    'object' => string (12) "paymentIntent"
    'amount' => integer 247
    'amount_refunded' => integer 0
    'application' => null
    'application_fee' => null
    'application_fee_amount' => null
    'balance_transaction' => string (13) "anothersecret"
    etc... etc...

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM