Я успешно создал платежные карты Google с поддержкой ядра ASP.Net, и мои остальные api успешно возвращают токен JWT. Кроме того, я использовал веб-кнопку сохранения на телефоне и JWT, который работает нормально, но мне нужно интегрировать проходы с моим приложением Xamarin Forms. В xamrin, как я добавляю кнопку «Сохранить на телефон» и как привязать JWT вместе с этой кнопкой?
Как добавить кнопку Google для сохранения на телефоне и добавить платежные карты через мобильное приложение xamarin
Ответы (1)
Наконец, я нашел решение. Если ваш внутренний сервер возвращает JWT для вашего платежного талона Google, вы можете добиться этого в формах Xamarin через службу зависимостей.
Если вы можете использовать ссылку и намерение JWT, метод запроса JWT POST и собственный Android SDK. См. Это рекомендации
Мой тип пропуска - карта лояльности, поэтому я использовал Ссылка JWT и метод намерения
Прежде чем интегрировать проход в ваше приложение, вы можете протестировать JWT с помощью браузера Chrome. Нажмите здесь (https://pay.google.com/gp/v/save/ {jwt_generated}) URL с вашим JWT в браузере Chrome, если JWT в порядке, вы увидите проход в браузере
Достигать
Создайте интерфейс в своем проекте PCL
namespace App.DependencyServices { public interface IGPayPass { void LoadGPayPass(string JWT); } }
Создайте нативную реализацию в своем Android-проекте
public class GPayImplementation : IGPayPass { /// <summary> /// summary: /// This methode load the google pay pass from the JWT and open the pay passes in Google pay app /// To show the pass in google pay we have to create an ACTION_VIEW /// If pass is the loyality pass we can use the JWT link and intent method(https://developers.google.com/pay/passes/guides/get-started/implementing-the-api/save-to-google-pay#use-jwt-link-and-intent) /// To load the pass send the https request to google pass class object like https://pay.google.com/gp/v/save/{jwt_generated} /// /// parameters: /// JWT : The server return this token for pay passes and pass via dependency service to this native implementation /// /// returns: /// /// </summary> /// <param name="JWT"></param> public void LoadGPayPass(string JWT) { //create context Context context = Android.App.Application.Context; string url = "https://pay.google.com/gp/v/save/" + JWT; //Send the https request to google pay pass class object via Android intent Intent intent = new Intent(Intent.ActionView, Uri.Parse(url)); //Assign new task Flag for intent otherwise runtime exepption will return intent.AddFlags(ActivityFlags.NewTask); context.StartActivity(intent); } }
Использовать собственную реализацию в проекте PCL через службу зависимостей
if (response.HttpCode == HttpStatusCode.OK) { ResponseSting = response.Results.ToString(); //Remove quates from the JWT string MembershipCardAndroidJWT = ResponseSting.TrimStart('"').TrimEnd('"'); //Pass The JWT string via dependency service to the Anroid native Environment DependencyService.Get<IGPayPass>().LoadGPayPass(MembershipCardAndroidJWT); }
В пользовательском интерфейсе нет кнопки по умолчанию, такой как веб-кнопка Google, но вы должны следовать руководящим принципам бренда (https://developers.google.com/pay/passes/guides/get-started/api-guidelines/brand-guidelines)
вы можете использовать любую кнопку и запустить этот метод с помощью onclik или команды
Этот метод использует передачу JWT с сервера и передачу в кошелек Google.