Token.php 4.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293
  1. <?php
  2. // File generated from our OpenAPI spec
  3. namespace Stripe;
  4. /**
  5. * Tokenization is the process Stripe uses to collect sensitive card or bank
  6. * account details, or personally identifiable information (PII), directly from
  7. * your customers in a secure manner. A token representing this information is
  8. * returned to your server to use. Use our
  9. * <a href="https://stripe.com/docs/payments">recommended payments integrations</a> to perform this process
  10. * on the client-side. This guarantees that no sensitive card data touches your server,
  11. * and allows your integration to operate in a PCI-compliant way.
  12. *
  13. * If you can't use client-side tokenization, you can also create tokens using
  14. * the API with either your publishable or secret API key. If
  15. * your integration uses this method, you're responsible for any PCI compliance
  16. * that it might require, and you must keep your secret API key safe. Unlike with
  17. * client-side tokenization, your customer's information isn't sent directly to
  18. * Stripe, so we can't determine how it's handled or stored.
  19. *
  20. * You can't store or use tokens more than once. To store card or bank account
  21. * information for later use, create <a href="https://stripe.com/docs/api#customers">Customer</a>
  22. * objects or <a href="/api#external_accounts">External accounts</a>.
  23. * <a href="https://stripe.com/docs/radar">Radar</a>, our integrated solution for automatic fraud protection,
  24. * performs best with integrations that use client-side tokenization.
  25. *
  26. * @property string $id Unique identifier for the object.
  27. * @property string $object String representing the object's type. Objects of the same type share the same value.
  28. * @property null|\Stripe\BankAccount $bank_account <p>These bank accounts are payment methods on <code>Customer</code> objects.</p><p>On the other hand <a href="/api#external_accounts">External Accounts</a> are transfer destinations on <code>Account</code> objects for connected accounts. They can be bank accounts or debit cards as well, and are documented in the links above.</p><p>Related guide: <a href="/payments/bank-debits-transfers">Bank debits and transfers</a></p>
  29. * @property null|\Stripe\Card $card <p>You can store multiple cards on a customer in order to charge the customer later. You can also store multiple debit cards on a recipient in order to transfer to those cards later.</p><p>Related guide: <a href="https://stripe.com/docs/sources/cards">Card payments with Sources</a></p>
  30. * @property null|string $client_ip IP address of the client that generates the token.
  31. * @property int $created Time at which the object was created. Measured in seconds since the Unix epoch.
  32. * @property bool $livemode Has the value <code>true</code> if the object exists in live mode or the value <code>false</code> if the object exists in test mode.
  33. * @property string $type Type of the token: <code>account</code>, <code>bank_account</code>, <code>card</code>, or <code>pii</code>.
  34. * @property bool $used Determines if you have already used this token (you can only use tokens once).
  35. */
  36. class Token extends ApiResource
  37. {
  38. const OBJECT_NAME = 'token';
  39. const TYPE_ACCOUNT = 'account';
  40. const TYPE_BANK_ACCOUNT = 'bank_account';
  41. const TYPE_CARD = 'card';
  42. const TYPE_PII = 'pii';
  43. /**
  44. * Creates a single-use token that represents a bank account’s details. You can use
  45. * this token with any API method in place of a bank account dictionary. You can
  46. * only use this token once. To do so, attach it to a <a href="#accounts">connected
  47. * account</a> where <a
  48. * href="/api/accounts/object#account_object-controller-requirement_collection">controller.requirement_collection</a>
  49. * is <code>application</code>, which includes Custom accounts.
  50. *
  51. * @param null|array $params
  52. * @param null|array|string $options
  53. *
  54. * @throws \Stripe\Exception\ApiErrorException if the request fails
  55. *
  56. * @return \Stripe\Token the created resource
  57. */
  58. public static function create($params = null, $options = null)
  59. {
  60. self::_validateParams($params);
  61. $url = static::classUrl();
  62. list($response, $opts) = static::_staticRequest('post', $url, $params, $options);
  63. $obj = \Stripe\Util\Util::convertToStripeObject($response->json, $opts);
  64. $obj->setLastResponse($response);
  65. return $obj;
  66. }
  67. /**
  68. * Retrieves the token with the given ID.
  69. *
  70. * @param array|string $id the ID of the API resource to retrieve, or an options array containing an `id` key
  71. * @param null|array|string $opts
  72. *
  73. * @throws \Stripe\Exception\ApiErrorException if the request fails
  74. *
  75. * @return \Stripe\Token
  76. */
  77. public static function retrieve($id, $opts = null)
  78. {
  79. $opts = \Stripe\Util\RequestOptions::parse($opts);
  80. $instance = new static($id, $opts);
  81. $instance->refresh();
  82. return $instance;
  83. }
  84. }