До того, как Amazon привлек мое внимание, я находил удовольствие в посещении розничных магазинов, торгующих техникой, чтобы проверить новые и интересные продукты. Одним из таких магазинов, который я посещал чаще других, был Best Buy. Примерно в это время во время оформления заказа меня спросили, не хочу ли я подписаться на карту вознаграждений Best Buy. Услышав, что за каждую покупку в Best Buy я буду получать баллы, которые приведут к финансовым вознаграждениям, я обратил внимание и сразу же подписался.
Я был в восторге.
До сих пор ли я в восторге от карты Best Buy? Не совсем… в основном потому, что мои покупательские привычки изменились, и я, честно говоря, не могу сказать, когда я в последний раз делал заказ в этом некогда лидирующем супермаркете электроники.
Я не думаю, что мой опыт сильно отличается от опыта большинства тех, кто присоединился к программе поощрительных карт Best Buy, когда о ней было объявлено. Привлекательность получения вознаграждения за покупку как можно большего количества товаров из одного источника больше не является привлекательной, когда вознагражденные средства должны быть потрачены в организации, признающей лояльность клиента.
Когда я задумался об этом и увидел, как легко купить подарочную карту Discover/Mastercard/Visa за наличные, мне стало интересно, насколько просто было бы предложить современную карту вознаграждения, которую потребители могли бы использовать в любом месте, где принимаются такие карты.
Концепция поощрительной карты
В основе концепции поощрительных карт лежит стимул для покупателей выбирать ваш бизнес среди бесконечного выбора на современном глобальном рынке. Чем больше они покупают у вас, тем больше вознаграждений они ожидают получить.
Поскольку современные покупатели больше заинтересованы в вознаграждениях, которые можно использовать в любом месте, идеальная концепция поощрительной карты должна использовать валютные технологии, такие как Discover, Mastercard или Visa, которые в наши дни принимаются практически везде.
Пример: Vester & Son’s
В качестве примера предположим, что Vester & Son’s — это интернет-магазин, желающий увеличить продажи с помощью программы поощрительных карт. Когда покупатели регистрируются в программе Vester & Son’s Rewards, им достаточно иметь учетную запись на сайте электронной коммерции Vester & Son’s. Для большинства покупателей это не составляет труда, поскольку они уже предоставляют следующую необходимую информацию каждый раз, когда совершают покупку:
- Полное имя
- адрес электронной почты
- Номер телефона
- Почтовый адрес
Как только клиент потратит более $100 на покупки, Vester & Son’s предоставит карту Discover, на которую будет предварительно начислено 10% от общей суммы покупок. То есть, каждые 10 долларов, потраченные на товары Vester & Son’s, принесут вознаграждение в размере 1 доллара. Неплохая сделка, правда?
Клиент может использовать свою карту Vester & Son’s Rewards Discover для оплаты любых покупок… везде, где принимаются карты Discover.
Использование Marqeta в качестве источника карт вознаграждений
В своей статье «Использование Marqeta для создания платежного сервиса в Spring Boot», опубликованной в начале этого года, я подробно описал следующий поток транзакций, используемый Marqeta для популярных сервисов Uber, DoorDash и Square (вот лишь некоторые из них):
Как выяснилось, использование Marqeta для финансирования всемирно признанной карты вознаграждений происходит по очень схожей схеме:
В данном примере компания Vester & Son’s предоставляет источник финансирования для программы поощрительных карт. По мере того, как каждый клиент проходит квалификацию для участия в программе, средства предоставляются для использования на карте вознаграждения, основанной на системе Discover.
Хотя клиент может использовать карту Discover для будущих покупок в Vester & Son’s, ничто не мешает ему приобрести что-либо где угодно, в том числе у конкурентов Vester & Son’s.
Создание программы поощрительных карт
Используя API Marqeta, я смог создать новую программу для программы поощрительных карт Vester & Son’s с помощью следующей команды cURL:
curl --location --request POST 'https://sandbox-api.marqeta.com/v3/fundingsources/program'
--header 'accept: application/json'
--header 'Content-Type: application/json'
--header 'Authorization: Basic APPLICATION_TOKEN_GOES_HERE:ADMIN_ACCESS_TOKEN_GOES_HERE'
--data-raw '{"name":"vester_rewards_card_program","active":true}'
В ответ был получен следующий ответ, включающий свойство токена, на которое мы будем ссылаться далее в этой статье:
{
"name": "vester_rewards_card_program",
"active": true,
"token": "9ff9d776-bf89-4350-bac2-ee8d8412f611",
"created_time": "2021-12-28T12:37:47Z",
"last_modified_time": "2021-12-28T12:37:47Z",
"account": "12.003.001.000000"
}
Быстрый пример (использование команд cURL)
Для статьи «Leveraging Marqeta to Build a Payment Service in Spring Boot» (ссылка выше) я создал службу Spring Boot API для работы в качестве внешнего интерфейса для Marqeta API, которую можно найти на GitLab по следующему URL:
https://gitlab.com/johnjvester/marqeta-example
Я продолжу использовать этот сервис и в данной публикации.
Нахождение клиента
Пользовательский API Spring Boot был усовершенствован для возврата данных пользователя Marqeta для данного клиента, при этом в качестве уникального ключа в URI использовался токен пользователя. Используя токен пользователя Randy Kern (из моей предыдущей публикации), мы можем отправить следующий запрос cURL:
curl --location -X GET 'localhost:9999/users/1017b62c-6b61-4fcd-b663-5c81feab6524'
Запрос возвращает следующий ответ:
{
"token": "7193b62c-6b61-4fcd-b663-5c81feab6524",
"createdTime": 1628946073000,
"lastModifiedTime": 1628946074000,
"metadata": {},
"active": true,
"firstName": "Randy",
"lastName": "Kern",
"usersParentAccount": false,
"corporateCardHolder": false,
"accountHolderGroupToken": "DEFAULT_AHG",
"status": "ACTIVE"
}
Нахождение карты вознаграждений
Сайт электронной коммерции Vester & Son’s автоматически заводит новую карту вознаграждений Vester & Son’s, как только клиент совершает покупки на сумму 100 долларов. Чтобы смоделировать это действие, мы отправляем следующий cURL-запрос к API Marqeta:
curl --location --request POST 'https://sandbox-api.marqeta.com/v3/fundingsources/paymentcard'
--header 'accept: application/json'
--header 'Content-Type: application/json'
--header 'Authorization: Basic APPLICATION_TOKEN_GOES_HERE:ADMIN_ACCESS_TOKEN_GOES_HERE’
--data-raw '{"postal_code":"46077","account_number":"6559906559906557","exp_date":"1225","cvv_number":"123","user_token":"1017b62c-6b61-4fcd-b663-5c81feab6524","is_default_account":true}'
Полезная нагрузка ответа содержит информацию о вновь созданной карте Discover для клиента Randy Kern:
{
"created_time": "2021-12-28T11:54:08Z",
"last_modified_time": "2021-12-28T11:54:08Z",
"type": "paymentcard",
"token": "2ee44d0b-5d00-4744-af2d-8ab9c8c606b8",
"account_suffix": "6557",
"account_type": "DISCOVER",
"active": true,
"is_default_account": true,
"exp_date": "1225",
"user_token": "1017b62c-6b61-4fcd-b663-5c81feab6524"
}
Обратите внимание: срок действия карты может соответствовать стандартам поставщика карты (он не может быть бесконечным). В этих случаях программа премиальных карт Vester & Son’s будет иметь необходимую бизнес-логику, чтобы направить новую карту клиенту, когда истечет срок действия.
Ниже приведен пример того, как может выглядеть карта вознаграждений Vester & Son’s для Рэнди Керна:
Определив токен пользователя, служба Spring Boot может легко найти платежные карты Vester & Son’s rewards card для пользователя Randy Kern с помощью следующей команды cURL:
curl --location --request GET 'localhost:9999/paymentcards/user/7193b62c-6b61-4fcd-b663-5c81feab6524'
Следующий ответ включает все платежные карты, связанные с клиентом Randy Kern:
[
{
"token": "2ee44d0b-5d00-4744-af2d-8ab9c8c606b8",
"createdTime": 1640692448000,
"lastModifiedTime": 1640692448000,
"type": "paymentcard",
"active": true,
"userToken": "7193b62c-6b61-4fcd-b663-5c81feab6524",
"accountSuffix": "6557",
"accountType": "DISCOVER",
"expDate": "1225",
"defaultAccount": true
}
]
Используя токен платежной карты, мы отправили следующий запрос cURL для получения одной платежной карты:
curl --location --request GET 'localhost:9999/paymentcards/2ee44d0b-5d00-4744-af2d-8ab9c8c606b8'
Это возвращает полезную нагрузку, ограниченную предоставленным токеном платежной карты:
{
"token": "2ee44d0b-5d00-4744-af2d-8ab9c8c606b8",
"createdTime": 1640692448000,
"lastModifiedTime": 1640692448000,
"type": "paymentcard",
"active": true,
"userToken": "7193b62c-6b61-4fcd-b663-5c81feab6524",
"accountSuffix": "6557",
"accountType": "DISCOVER",
"expDate": "1225",
"defaultAccount": true
}
Сайт электронной коммерции Vester & Son’s будет хранить токен пользователя и токен платежной карты для каждого клиента, участвующего в программе поощрительных карт Vester & Son’s. Это позволит легко сопоставить конкретного клиента с конкретной картой вознаграждения.
По мере того как клиент зарабатывает все больше вознаграждений, программа пополняет средства, доступные для расходования на карте вознаграждения клиента. Добавление средств осуществляется простым вызовом API. После этого клиент может потратить свои вознаграждения Vester & Son’s в любом месте, где принимаются карты Discover.
Заключение
Начиная с 2021 года, я стараюсь следовать следующему положению, которое, как мне кажется, может быть применимо к любому ИТ-специалисту:
«Сосредоточьте свое время на предоставлении возможностей/функциональности, которые увеличивают ценность вашей интеллектуальной собственности. Для всего остального используйте фреймворки, продукты и услуги».
- J. Вестер
Marqeta, безусловно, вписывается в мою миссию, поскольку их сервис предоставляет все необходимые компоненты для создания программы поощрительных карт, которая позволяет совершать покупки везде, где принимаются выбранные карточные продукты (например, Discover, Mastercard, Visa).
Если вспомнить, то программа вознаграждений Best Buy была не первой программой, которую я использовал для покупок техники. Когда я учился в колледже, магазины EggHead Software процветали по всей Америке, предлагая бесконечные полки с программным обеспечением и аксессуарами для бурно развивающегося рынка персональных компьютеров.
Оформив дисконтную карту EggHead, я получал 5% скидку на все покупки и другие специальные предложения в течение года. Я не понимал, что они отслеживают мои покупки, чтобы помочь мне сориентироваться в будущих покупках… но, честно говоря, я не думаю, что в студенческой версии меня бы это волновало. Я экономил деньги и получал новое программное обеспечение для использования.
Но концепция премиальной карты сработала… и я решил сначала делать покупки в EggHead.
Если вы заинтересованы в использовании сервиса Spring Boot, который я создал для этой статьи, проект доступен на GitLab по следующему URL:
https://gitlab.com/johnjvester/marqeta-example
Хорошего дня!