Как получить данные о расходах клиентов - PullRequest
0 голосов
/ 25 января 2019

Я очень новичок в программировании.Это очень смущает меня.Я пытаюсь получить информацию о клиентах из Stripe.Я могу получить новый идентификатор клиента.Я также пытаюсь получить информацию о платеже.Я хочу убедиться, что это был успешный заряд, прежде чем мой код продолжит работу.Затем я попытаюсь запустить веб-зацепку, чтобы вызвать события и проверить подписи полос.(Я вернусь с другим вопросом или двумя, я очень уверен!)

Я нашел на этом сайте отличный пример, который привел меня к идентификатору клиента.Я поигрался с кодом, чтобы посмотреть, что из этого выйдет, чтобы я мог включить его в свое обновление базы данных ниже:

<?php

if ($_SERVER['REQUEST_METHOD'] == 'POST'){

// Retrieve the request's body and parse it as JSON:

require_once('stripe-php-6.28.0/init.php');

$input = @file_get_contents('php://input');
$event_json = json_decode($input);

// Do something with $event_json

http_response_code(200); // PHP 5.4 or greater

/*Do something with object, structure will be like:
 * $object->accountId
 * $object->details->items[0]['contactName']
 */

// dump to file so you can see
file_put_contents('callback.test.txt', print_r($object, true));

}
//----------------------------

//For stripe data 

$stripe = [
"secret_key"      => "sk_test_itsasecret",
"publishable_key" => "pk_test_notpublished",
];

\Stripe\Stripe::setApiKey($stripe['secret_key']);


$token  = $_POST['stripeToken'];
$email  = $_POST['stripeEmail'];
$stripecustid = $customer->id;

$customer = \Stripe\Customer::create([
'email' => $email,
  'source'  => $token,
  'id' => $stripecustid,
  'status' => $charge,   //want to get some type of charge status success here
 ]);

\Stripe\Subscription::create([
"customer" => $customer->id,
"items" => [
 [

  "plan" => $1plan,
],
[
  "plan" => $2plan,
],
[
  "plan" => $3plan,
],
[
  "plan" => $4plan,
],
[
  "plan" => $5plan,
 ],
],
]);


 $stripecustid = $customer->id;

 echo "This is the stripe customer id: " . $customer->id . "<br />";
 echo "customer:  " . $customer->id . "<br />";
 echo "stripe:  " . $stripecustid . "<br />";
 echo "charge:  " . $charge->id . "<br />"; //returns nothing
 echo "charge result:  " . $charge->paid . "<br />"; //returns nothing
 echo "object charge amount test result:  " . $object->charge->amount;  //returns nothing
 echo "object charge paid test result:  " . $object->charge->paid; // returns nothing

Похоже, это PDO?или ООП?Я не знаком с тем, как подойти к этому.Буду признателен за любую помощь, чтобы начать меня.Это довольно пугающе.Спасибо.

1 Ответ

0 голосов
/ 26 января 2019

В данный момент ваш код выполняет две функции: он создает Customer , а затем создает Subscription .Вторым шагом будет сопоставление 5 планов с вашим клиентом, чтобы он автоматически взимал плату каждую неделю или каждый месяц.Это приводит к немедленному созданию платежа для первого цикла выставления счетов (при условии отсутствия пробного периода).

В случае сбоя платежа создание подписки завершится неудачно.Вы должны убедиться, что ваш код правильно перехватывает все исключения, вызванные библиотекой, как описано в Stripe документация об ошибках .

Если исключение не возникло, то создание подписки выполнено успешно и карточка клиентабыл успешно заряжен.Это означает, что Счет был создан для ожидаемой общей суммы всех ваших планов и что Счет-фактура привел к созданию Charge по той же причине.

Теперь,в большинстве случаев вы, скорее всего, захотите сохранить всю эту информацию в своей базе данных: идентификатор клиента cus_1234, полученный на первом этапе, идентификатор подписки sub_2222, полученный на втором этапе, а затем идентификатор счета in_ABCD иИдентификатор заряда ch_FFFF.

Для двух последних лучшим решением будет использование API списка счетов и передача идентификатора клиента в параметре customer.Поскольку это первый раз, когда этот Клиент выставляет счет, вы знаете, что получите только один результат.Код будет выглядеть следующим образом:

$invoices = \Stripe\Invoice::all(["limit" => 3]);
$invoiceId = $invoices->data[0]->id;
$chargeId = $invoices->data[0]->charge;

Вы также можете комбинировать это с функцией Expand , чтобы получить полный объект Charge с дополнительной информацией, например, о последних 4 картах.цифры:

$invoices = \Stripe\Invoice::all([
  "limit" => 3,
  "expand" => ["data.charge"],
]);
$invoiceId = $invoices->data[0]->id;
$chargeId = $invoices->data[0]->charge->id;
$cardLast4 = $invoices->data[0]->charge->source->last4; 
...