1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/hms-core-hms-wallet-severdemo

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
README_ZH.md 25 КБ
Копировать Редактировать Web IDE Исходные данные Просмотреть построчно История
Отправлено 15.03.2025 03:44 a3c0387

Пример кода серверной части сервиса Huawei Wallet

Содержание

Введение

Пример кода серверной части сервиса Huawei Wallet демонстрирует, как вызывать REST-интерфейсы сервера Huawei Wallet. Сервер Huawei Wallet предоставляет несколько REST-интерфейсов, поддерживающих шесть типов карт (членская карта, дисконтная карта, подарочная карта, авиабилет, проездной билет и билет на мероприятие). Вы можете использовать эти интерфейсы для добавления, запроса и обновления карт.Перед использованием этого примера кода вам следует создать учетную запись разработчика на сайте Huawei Developer Alliance и создать приложение на AppGallery Connect. Это приложение указывает на то, что вы хотите использовать сервис Huawei Wallet, но это не обязательно должно быть реальное приложение на смартфоне. Подробнее читайте в разделах Регистрация аккаунта и Создание приложения.## Требования к среде Пример кода требует среды выполнения Maven и Oracle Java версии 1.8.0.211 или выше.

Запрос сервиса Huawei Wallet

Для запроса сервиса Huawei Wallet следуйте инструкциям в разделе Активация сервиса.

Обратите внимание, что во время запроса сервиса Huawei Wallet вам потребуется создать уникальный номер услуги, который будет значением passTypeIdentifier и будет использоваться при настройке примера кода.

Вы также создадите пару ключей RSA (общий и приватный), которые должны быть надежно хранены. Приватный ключ используется для подписи JWE (подробнее в разделе Создание JWE), а публичный ключ используется для проверки подписи на стороне сервера Huawei Wallet.

После настройки номера услуги для одного типа карты вы сможете запустить соответствующий пример кода. Для тестирования других типов карт вам потребуется запросить номер услуги для каждого типа карты отдельно.

Настройка параметров

Перед запуском примера кода в файле src/test/resources/release.config.properties следует настроить следующие параметры: "gw.appid", "gw.appid.secret", "gw.tokenUrl", "walletServerBaseUrl", "servicePrivateKey" и "walletWebsiteBaseUrl".### Установка gw.appid и gw.appid.secret: Параметры gw.appid и gw.appid.secret представляют собой "APP ID" и "Secret Key" приложения соответственно. Для получения этих данных войдите в AppGallery Connect, выберите раздел "Мои приложения" и найдите APP ID и Secret Key вашего приложения.### Установка gw.tokenUrl: Установите параметр gw.tokenUrl как https://oauth-login.cloud.huawei.com/oauth2/v3/token — адрес для получения токена аутентификации REST API.

Установка walletServerBaseUrl:

Параметр walletServerBaseUrl представляет собой общую часть запроса REST API и имеет формат https://{walletkit_server_url}/hmspass. Вместо {walletkit_server_url} необходимо указать свой сервер, согласно вашей учетной записи и стране/региону проживания, как показано ниже:

Страна/Регион walletkit_server_url
Китайская Народная Республика wallet-passentrust-drcn.cloud.huawei.com.cn
Азия wallet-passentrust-dra.cloud.huawei.asia
Европа wallet-passentrust-dre.cloud.huawei.eu
Латинская Америка wallet-passentrust-dra.cloud.huawei.lat
Россия wallet-passentrust-drru.cloud.huawei.ru

Установка servicePrivateKey:

Значение параметра servicePrivateKey должно совпадать с RSA приватным ключом, сгенерированным при запросе услуг Huawei Wallet. Этот параметр используется для подписи JWE.

Установка walletWebsiteBaseUrl:

Параметр walletWebsiteBaseUrl представляет собой URL-адрес сервера H5 Huawei Wallet и имеет формат https://{walletkit_website_url}/walletkit/consumer/pass/save. Вместо {walletkit_website_url} необходимо указать свой сайт, согласно вашей учетной записи и стране/региону проживания, как показано ниже:| Страна/Регион | walletkit_website_url | |----------------------|------------------------------------| | Китай | walletpass-drcn.cloud.huawei.com | | Азия | walletpass-dra.cloud.huawei.com | | Евropa | walletpass-dre.cloud.huawei.com | | Латинская Америка | walletpass-dra.cloud.huawei.com | | Россия | walletpass-drru.cloud.huawei.com |

Шаблоны и примеры чековШаблон представляет собой тип чека. Примеры одного шаблона используют общие параметры. Например, шаблон билета на самолёт включает информацию о времени отправления и прибытия, а конкретный билет — имя пассажира, номер сиденья и порядковый номер посадки. Каждый экземпляр чека связан со своим шаблоном. Поэтому вам следует создать шаблон чека перед тем, как создать сам чек.

Все шаблоны и экземпляры чеков имеют тип данных HwWalletObject. Подробнее см. Определение HwWalletObject.

Примеры кода принимают входные данные из JSON-файлов, расположенных в папке src/test/resources/data. Вы можете самостоятельно изменять эти JSON-файлы для создания нужных вам чеков.

Установите значение поля "passTypeIdentifier" в JSON-файле таким образом, чтобы оно совпадало с вашим сервисным номером, указанным на странице AppGallery Connect.

Компиляция Maven проекта

После установки всех необходимых параметров скомпилируйте примеры кода в Maven проект. Установка всех зависимостей может занять несколько минут, в зависимости от ваших конфигураций и скорости интернета.## Примеры методов

Примеры методов шаблонов чеков

1. Создание шаблона чека

Сервер Huawei Wallet предоставляет REST API для создания шаблонов чеков. Например, вы можете использовать createLoyaltyModel для добавления шаблона чека лояльности в базу данных сервера, подробнее см. Создание шаблона чека лояльности. Добавление других типов чеков аналогично. Для вызова любых связанных методов требуется наличие созданного шаблона чека.#### 2. Получение информации о шаблоне чека Сервер Huawei Wallet предоставляет REST API для получения информации о шаблоне чека по его ID. Например, вы можете использовать getLoyaltyModel для получения информации о шаблоне чека лояльности, подробнее см. Получение информации о шаблоне чека лояльности. Получение информации о других типах шаблонов чеков аналогично.

3. Получение списка шаблонов карт и купонов

Если вы создали несколько шаблонов одного типа карты (например, шаблоны золотой карты и алмазной карты), вы можете использовать соответствующие интерфейсы для получения списка этих шаблонов. Например, с помощью вызова getLoyaltyModelList можно получить список шаблонов карт лояльности, подробнее см. получение списка шаблонов карт лояльности. Методы получения списков шаблонов других типов карт и купонов аналогичны.

4. Полное обновление шаблона карты

Сервер кошелька Huawei предоставляет REST-интерфейсы для полного обновления шаблонов карт по их ID. Например, можно использовать метод fullUpdateLoyaltyModel для полного обновления шаблона карты лояльности. Подробнее см. полное обновление шаблона карты лояльности. Методы полного обновления других типов шаблонов карт аналогичны.#### 5. Частичное обновление шаблона карты Кошелёк Huawei предоставляет REST-интерфейсы для частичного обновления шаблонов карт по их ID. Например, можно использовать метод partialUpdateLoyaltyModel для частичного обновления шаблона карты лояльности. Подробнее см. частичное обновление шаблона карты лояльности. Методы частичного обновления других типов шаблонов карт аналогичны.

6. Добавление сообщений в шаблон карты

Кошелёк Huawei предоставляет REST-интерфейсы для добавления сообщений в шаблоны карт. Например, можно использовать метод addMessageToLoyaltyModel для добавления сообщений в шаблон карты лояльности. Подробнее см. добавление сообщений в шаблон карты лояльности. Добавление сообщений в другие типы шаблонов карт аналогично. В шаблоне карты messageList представляет собой список сообщений, поддерживающий до десяти сообщений. При достижении максимального количества сообщений новые будут добавлены за счёт удаления самых ранних.### Примеры работы с экземплярами карт

1. Создание нового экземпляра карты

Сервер кошелька Huawei предоставляет REST-интерфейсы для создания новых экземпляров карт. Например, можно использовать метод createLoyaltyInstance для добавления нового экземпляра карты лояльности в базу данных сервера. Подробнее см. создание нового экземпляра карты лояльности. Методы создания новых экземпляров других типов карт аналогичны. Перед созданием экземпляра необходимо создать его шаблон.#### 2. Получение информации об экземпляре карты Сервер кошелька Huawei предоставляет REST-интерфейсы для получения информации об экземплярах карт по их ID. Например, можно использовать метод getLoyaltyInstance для получения информации об экземпляре карты лояльности. Подробнее см. [получение информации об экземпляре карты лояльности].

Методы получения информации об экземплярах других типов карт аналогичны.

3. Полное обновление экземпляра карты

Сервер кошелька Huawei предоставляет REST-интерфейсы для полного обновления экземпляров карт по их ID. Например, можно использовать метод fullUpdateLoyaltyInstance для полного обновления экземпляра карты лояльности. Подробнее см. полное обновление экземпляра карты лояльности.

Методы полного обновления других типов экземпляров карт аналогичны.

4. Локальное обновление экземпляра карты

Сервер кошелька Huawei предоставляет REST-интерфейсы для локального обновления экземпляров карт с использованием ID экземпляра. Например, можно использовать метод partialUpdateLoyaltyInstance для локального обновления экземпляра членской карты. Подробнее см. локальное обновление экземпляра членской карты.

Методы локального обновления других типов экземпляров карт аналогичны.#### 5. Добавление сообщений в экземпляр карты

Сервер кошелька Huawei предоставляет REST-интерфейсы для добавления сообщений в экземпляр карт. Например, можно использовать метод addMessageToLoyaltyInstance для добавления сообщений в экземпляр членской карты. Подробнее см. добавление сообщений в экземпляр членской карты. Методы добавления сообщений в другие типы экземпляров карт аналогичны. Свойство messageList экземпляра карты поддерживает до десяти сообщений. При достижении этого количества новые сообщения заменят старые.

6. Соединение/отсоединение экземпляров членских карт с экземплярами купоновЭтот интерфейс применим только к экземплярам членских карт. Можно использовать метод updateLinkedOffersToLoyaltyInstance для добавления или удаления связанных экземпляров купонов от одного экземпляра членской карты. Подробнее см. соединение/отсоединение экземпляров купонов. Перед использованием данного интерфейса для соединения купонов убедитесь, что связываемый экземпляр купона существует на сервере кошелька, иначе клиент не сможет его отобразить. Купоны могут принадлежать другим приложениям.

Генерация JWE

Для того чтобы связать ваучеры с определённым пользователем в Huawei Wallet H5 сервере, вам необходимо сгенерировать JWE строку и отправить её на сервер Huawei Wallet H5.Вы можете создать JWE двумя способами:

Первый метод: сгенерируйте JWE, содержащий полную информацию о примере ваучера, и отправьте его на сервер Huawei Wallet H5. В этом случае вам не потребуется вызывать интерфейс добавления примера ваучера.

Второй метод: используйте интерфейс добавления примера ваучера для добавления примера ваучера на сервер кошелька, затем сгенерируйте "тонкий" JWE, содержащий только ID примера ваучера, и отправьте его на сервер Huawei Wallet H5.Пример кода ниже предоставляет методы для генерации JWE и "тонкого" JWE для вашего удобства. Дополнительная информация доступна в разделах "Генерация JWE и отправка на сервер Huawei" и "Генерация 'тонкого' JWE и отправка на сервер Huawei" руководства по интеграции кнопки "Добавить в Huawei Wallet" на веб-страницу (Подробнее).

Валидация подписи

Если вы установили обратный адрес вызова или обратный адрес NFC при запросе услуг Huawei Wallet, вы будете получать уведомления от сервера Huawei Wallet. Эти запросы содержат подпись в заголовках запроса, которую вам следует проверять с помощью фиксированного публичного ключа, предоставленного Huawei. Вы можете использовать метод verifySignature из примеров кода для выполнения этой задачи. Подробнее см. раздел общих определений обратных вызовов.## Техническая поддержка Если вы ещё оцениваете возможности HMS Core, вы можете получить последние новости и общаться с другими разработчиками на сообществе Reddit.

Если у вас есть вопросы по использованию примеров кода HMS, попробуйте:

  • Обратиться за помощью на Stack Overflow с меткой huawei-mobile-services, где опытные специалисты Huawei помогут вам решить проблему.
  • Посетить форум разработчиков Huawei для обсуждения вопросов с другими разработчиками.

Если вы столкнулись с проблемой при работе с примерами кода, создайте issue в репозитории, а также приветствуем ваши предложения по улучшению через pull request.

Лицензия

Примеры кода для серверной части сервиса Huawei Wallet распространяются под лицензией Apache License, версия 2.0.

Опубликовать ( 0 )

Вы можете оставить комментарий после Вход в систему

1
https://api.gitlife.ru/oschina-mirror/hms-core-hms-wallet-severdemo.git
git@api.gitlife.ru:oschina-mirror/hms-core-hms-wallet-severdemo.git
oschina-mirror
hms-core-hms-wallet-severdemo
hms-core-hms-wallet-severdemo
Java