полоса создания токена с идентификатором карты - PullRequest
0 голосов
/ 15 мая 2018

В настоящее время я пытаюсь создать платежи с помощью API на стороне сервера.

Но я столкнулся с проблемой;Я использую два способа продолжения обработки:

  • , либо пользователь может заплатить, используя элемент stripe => Поэтому я использую сгенерированный токен ('tok_somethingId'), чтобы выполнитьpaiement

  • или, если пользователь уже добавил несколько карточек на свою учетную запись, он может выбрать одну из них в списке => Сервер затем использует идентификатор карточки ('card_somethingId') иидентификатор клиента ('cus_smoethingId')

Мне было интересно, есть ли способ сгенерировать токен с идентификатором карты и идентификатором клиента, чтобы использовать этот токен для создания платежавместо того, чтобы использовать идентификатор карты и идентификатор клиента для взимания платы с пользователя.

Я уже пытался использовать https://stripe.com/docs/api/node#create_card_token, но, похоже, он не работает.

stripe.tokens.create({
  card: cardId,
  customer: customerId
}, function(err, token) {
  // do smthg here with the token
});

Этодай мне это сообщение об ошибке enter image description here

Ответы [ 3 ]

0 голосов
/ 31 августа 2018

Если вы делаете платеж с помощью сохраненной карты, то вам не нужно получать токен,

1 - Создайте клиента на полосе

$customer = \Stripe\Customer::create([
    'email' => $customer_email,
]);

$response = ['status' => 'success', 'response' => $customer];

, когда вы создали клиента, тогда у вас есть customer_id

if(isset($response ['response']['id']))
    $response ['customer_id']  = $response ['response']['id'];

2 - вы можете добавить карту на полосу по идентификатору клиента и токену карты

$customer = \Stripe\Customer::retrieve($customer_id);
$creditCard = $customer->sources->create(array("source" => $cardToken));

$response = ['status' => 'success', 'response' => $creditCard];

Теперь у вас есть такой идентификатор карты

"id": "card_1D4plsDExLRkbD8k1UWdqwIr"

3 - выможет хранить несколько карт на клиенте, а также может иметь

$cards = \Stripe\Customer::retrieve($customer_id)->sources->all(array(
    "object" => "card"
));

4 - вы можете оплатить с помощью карты, которая хранится на счете клиента

$params = [
    'currency' => 'USD',
    'amount' => $total_amount * 100,  
// converting dollars to cents
    'description' => $description, //it may be blank
    'customer' => $customer_id,
    "card" => $card_id'
];

$transaction = \Stripe\Charge::create($params); 

$response = ['status' => 'success', 'response' => $transaction['id']];

Здесь мы не используем 'источник', потому что он используется, когда мы осуществляем оплату с помощью токена карты.

0 голосов
/ 21 февраля 2019

https://api.stripe.com/v1/charges просто передать значения в теле,

[{"key": "amount", "value": "1000", "description": ""}, {"ключ": "валюта", "значение": "доллар", "описание": ""}, { "ключ": "клиент", "значение": "cus_ID", "описание": ""}, {"ключ": "описание", "значение": "\" Плата за jenny.rosen@example.com \ "", "описание": ""}, {"ключ": "карта", "значение": "card_ID "," description ":" "}]

это работает для меня

0 голосов
/ 16 мая 2018

Вы не можете создать новый токен для существующей карты, так как это не имеет смысла. Карта уже сохранена на клиенте, и вы можете зарядить ее.

Самым простым решением здесь, скорее всего, является обратное и сохранение карты на клиенте при получении токена tok_XXXX. Таким образом, вы всегда заряжаете карту, передавая параметр customer в качестве идентификатора клиента cus_XXXX и параметр source в качестве идентификатора карты card_XXXX.

В противном случае вам нужно обрабатывать это динамически, чтобы вы знали, получаете ли вы токен (tok_XXXX) или идентификатор карты (card_XXXX), и передаете различные параметры на основе этого решения. Ваш код переднего плана должен знать, в каком случае вы оказались.

...