{"id":93401,"date":"2022-08-02T11:34:59","date_gmt":"2022-08-02T09:34:59","guid":{"rendered":"https:\/\/rmarketingdigital.com\/dev\/guia-para-desarrolladores-de-aplicaciones-de-pago-de-android\/"},"modified":"2020-10-30T06:39:24","modified_gmt":"2020-10-30T09:39:24","slug":"guia-para-desarrolladores-de-aplicaciones-de-pago-de-android","status":"publish","type":"post","link":"https:\/\/rmarketingdigital.com\/de\/dev\/guia-para-desarrolladores-de-aplicaciones-de-pago-de-android\/","title":{"rendered":"Android Paid App Entwicklerhandbuch"},"content":{"rendered":"<div id=\"ez-toc-container\" class=\"ez-toc-v2_0_86 counter-hierarchy ez-toc-counter ez-toc-grey ez-toc-container-direction\">\n<div class=\"ez-toc-title-container\">\n<p class=\"ez-toc-title\" style=\"cursor:inherit\">Inhalt<\/p>\n<span class=\"ez-toc-title-toggle\"><a href=\"#\" class=\"ez-toc-pull-right ez-toc-btn ez-toc-btn-xs ez-toc-btn-default ez-toc-toggle\" aria-label=\"Inhaltsverzeichnis umschalten\"><span class=\"ez-toc-js-icon-con\"><span class=\"\"><span class=\"eztoc-hide\" style=\"display:none;\">Umschalten<\/span><span class=\"ez-toc-icon-toggle-span\"><svg style=\"fill: #999;color:#999\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" class=\"list-377408\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" fill=\"none\"><path d=\"M6 6H4v2h2V6zm14 0H8v2h12V6zM4 11h2v2H4v-2zm16 0H8v2h12v-2zM4 16h2v2H4v-2zm16 0H8v2h12v-2z\" fill=\"currentColor\"><\/path><\/svg><svg style=\"fill: #999;color:#999\" class=\"arrow-unsorted-368013\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"10px\" height=\"10px\" viewbox=\"0 0 24 24\" version=\"1.2\" baseprofile=\"tiny\"><path d=\"M18.2 9.3l-6.2-6.3-6.2 6.3c-.2.2-.3.4-.3.7s.1.5.3.7c.2.2.4.3.7.3h11c.3 0 .5-.1.7-.3.2-.2.3-.5.3-.7s-.1-.5-.3-.7zM5.8 14.7l6.2 6.3 6.2-6.3c.2-.2.3-.5.3-.7s-.1-.5-.3-.7c-.2-.2-.4-.3-.7-.3h-11c-.3 0-.5.1-.7.3-.2.2-.3.5-.3.7s.1.5.3.7z\"\/><\/svg><\/span><\/span><\/span><\/a><\/span><\/div>\n<nav><ul class='ez-toc-list ez-toc-list-level-1' ><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-1\" href=\"https:\/\/rmarketingdigital.com\/de\/dev\/guia-para-desarrolladores-de-aplicaciones-de-pago-de-android\/#Paso-1-permita-que-los-comerciantes-descubran-su-aplicacion-de-pago\" >Schritt 1: Lassen Sie H\u00e4ndler Ihre Zahlungs-App entdecken<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-2\" href=\"https:\/\/rmarketingdigital.com\/de\/dev\/guia-para-desarrolladores-de-aplicaciones-de-pago-de-android\/#Paso-2-Informe-a-un-comerciante-si-un-cliente-tiene-un-instrumento-registrado-que-esta-listo-para-pagar\" >Schritt 2: Informieren Sie einen H\u00e4ndler, wenn ein Kunde ein registriertes Instrument hat, dass er bereit ist zu zahlen<\/a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-3\" href=\"https:\/\/rmarketingdigital.com\/de\/dev\/guia-para-desarrolladores-de-aplicaciones-de-pago-de-android\/#AndroidManifestxml\" >AndroidManifest.xml<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-4\" href=\"https:\/\/rmarketingdigital.com\/de\/dev\/guia-para-desarrolladores-de-aplicaciones-de-pago-de-android\/#AIDL\" >AIDL<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-5\" href=\"https:\/\/rmarketingdigital.com\/de\/dev\/guia-para-desarrolladores-de-aplicaciones-de-pago-de-android\/#Implementar-IsReadyToPayService\" >Implementieren Sie IsReadyToPayService<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-6\" href=\"https:\/\/rmarketingdigital.com\/de\/dev\/guia-para-desarrolladores-de-aplicaciones-de-pago-de-android\/#Parametros\" >Parameter<\/a><ul class='ez-toc-list-level-4' ><li class='ez-toc-heading-level-4'><a class=\"ez-toc-link ez-toc-heading-7\" href=\"https:\/\/rmarketingdigital.com\/de\/dev\/guia-para-desarrolladores-de-aplicaciones-de-pago-de-android\/#methodNames\" >methodNames<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-4'><a class=\"ez-toc-link ez-toc-heading-8\" href=\"https:\/\/rmarketingdigital.com\/de\/dev\/guia-para-desarrolladores-de-aplicaciones-de-pago-de-android\/#methodData\" >methodData<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-4'><a class=\"ez-toc-link ez-toc-heading-9\" href=\"https:\/\/rmarketingdigital.com\/de\/dev\/guia-para-desarrolladores-de-aplicaciones-de-pago-de-android\/#topLevelOrigin\" >topLevelOrigin<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-4'><a class=\"ez-toc-link ez-toc-heading-10\" href=\"https:\/\/rmarketingdigital.com\/de\/dev\/guia-para-desarrolladores-de-aplicaciones-de-pago-de-android\/#topLevelCertificateChain\" >topLevelCertificateChain<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-4'><a class=\"ez-toc-link ez-toc-heading-11\" href=\"https:\/\/rmarketingdigital.com\/de\/dev\/guia-para-desarrolladores-de-aplicaciones-de-pago-de-android\/#paymentRequestOrigin\" >paymentRequestOrigin<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-12\" href=\"https:\/\/rmarketingdigital.com\/de\/dev\/guia-para-desarrolladores-de-aplicaciones-de-pago-de-android\/#Respuesta\" >Antworten<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-13\" href=\"https:\/\/rmarketingdigital.com\/de\/dev\/guia-para-desarrolladores-de-aplicaciones-de-pago-de-android\/#Permiso\" >Entschuldigen Sie mich<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-14\" href=\"https:\/\/rmarketingdigital.com\/de\/dev\/guia-para-desarrolladores-de-aplicaciones-de-pago-de-android\/#Paso-3-deje-que-un-cliente-realice-el-pago\" >Schritt 3: Lassen Sie einen Kunden auschecken<\/a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-15\" href=\"https:\/\/rmarketingdigital.com\/de\/dev\/guia-para-desarrolladores-de-aplicaciones-de-pago-de-android\/#AndroidManifestxml-2\" >AndroidManifest.xml<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-16\" href=\"https:\/\/rmarketingdigital.com\/de\/dev\/guia-para-desarrolladores-de-aplicaciones-de-pago-de-android\/#Parametros-2\" >Parameter<\/a><ul class='ez-toc-list-level-4' ><li class='ez-toc-heading-level-4'><a class=\"ez-toc-link ez-toc-heading-17\" href=\"https:\/\/rmarketingdigital.com\/de\/dev\/guia-para-desarrolladores-de-aplicaciones-de-pago-de-android\/#methodNames-2\" >methodNames<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-4'><a class=\"ez-toc-link ez-toc-heading-18\" href=\"https:\/\/rmarketingdigital.com\/de\/dev\/guia-para-desarrolladores-de-aplicaciones-de-pago-de-android\/#methodData-2\" >methodData<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-4'><a class=\"ez-toc-link ez-toc-heading-19\" href=\"https:\/\/rmarketingdigital.com\/de\/dev\/guia-para-desarrolladores-de-aplicaciones-de-pago-de-android\/#Nombre-del-comerciante\" >H\u00e4ndlername<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-4'><a class=\"ez-toc-link ez-toc-heading-20\" href=\"https:\/\/rmarketingdigital.com\/de\/dev\/guia-para-desarrolladores-de-aplicaciones-de-pago-de-android\/#topLevelOrigin-2\" >topLevelOrigin<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-4'><a class=\"ez-toc-link ez-toc-heading-21\" href=\"https:\/\/rmarketingdigital.com\/de\/dev\/guia-para-desarrolladores-de-aplicaciones-de-pago-de-android\/#topLevelCertificateChain-2\" >topLevelCertificateChain<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-4'><a class=\"ez-toc-link ez-toc-heading-22\" href=\"https:\/\/rmarketingdigital.com\/de\/dev\/guia-para-desarrolladores-de-aplicaciones-de-pago-de-android\/#paymentRequestOrigin-2\" >paymentRequestOrigin<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-4'><a class=\"ez-toc-link ez-toc-heading-23\" href=\"https:\/\/rmarketingdigital.com\/de\/dev\/guia-para-desarrolladores-de-aplicaciones-de-pago-de-android\/#total\" >gesamt<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-4'><a class=\"ez-toc-link ez-toc-heading-24\" href=\"https:\/\/rmarketingdigital.com\/de\/dev\/guia-para-desarrolladores-de-aplicaciones-de-pago-de-android\/#modifiers\" >Modifikatoren<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-4'><a class=\"ez-toc-link ez-toc-heading-25\" href=\"https:\/\/rmarketingdigital.com\/de\/dev\/guia-para-desarrolladores-de-aplicaciones-de-pago-de-android\/#paymentRequestId\" >paymentRequestId<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-26\" href=\"https:\/\/rmarketingdigital.com\/de\/dev\/guia-para-desarrolladores-de-aplicaciones-de-pago-de-android\/#Respuesta-2\" >Antworten<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-27\" href=\"https:\/\/rmarketingdigital.com\/de\/dev\/guia-para-desarrolladores-de-aplicaciones-de-pago-de-android\/#Permiso-2\" >Entschuldigen Sie mich<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-28\" href=\"https:\/\/rmarketingdigital.com\/de\/dev\/guia-para-desarrolladores-de-aplicaciones-de-pago-de-android\/#Paso-4-Verifique-el-certificado-de-firma-de-la-persona-que-llama\" >Schritt 4: \u00dcberpr\u00fcfen Sie das Signaturzertifikat des Anrufers<\/a><\/li><\/ul><\/nav><\/div>\n<p><\/p>\n<div>\n<header class=\"w-article-header\">\n<p class=\"w-article-header__subhead w-mb--non\">\n<p>          Erfahren Sie, wie Sie Ihre Android-Zahlungsanwendung an die Arbeit mit Web Payments anpassen und Kunden eine bessere Benutzererfahrung bieten.<\/p>\n<p>\n          <time>25. Mai 2020<\/time><\/p>\n<\/header>\n<p>das <a rel=\"nofollow noopener noreferrer\" target=\"_blank\" href=\"https:\/\/www.w3.org\/TR\/payment-request\/\">Zahlungsanforderungs-API<\/a> bringt eine integrierte browserbasierte Oberfl\u00e4che ins Web, mit der Benutzer die erforderlichen Zahlungsinformationen einfacher als je zuvor eingeben k\u00f6nnen. Die API kann auch plattformspezifische Zahlungsanwendungen aufrufen.<\/p>\n<figure class=\"w-figure\" style=\"width:300px; margin:auto;\">\n  <video controls=\"\" autoplay=\"\" loop=\"\" muted=\"\" class=\"w-screenshot\"><source src=\"https:\/\/storage.googleapis.com\/web-dev-assets\/payments\/native-payment-app.webm\" type=\"video\/webm\"><source src=\"https:\/\/storage.googleapis.com\/web-dev-assets\/payments\/native-payment-app.mp4\" type=\"video\/mp4\"><\/source><\/source><\/video><figcaption class=\"w-figcaption\">Zahlungsfluss mit der plattformspezifischen Google Pay-Anwendung, die Web Payments verwendet.<br \/>\n  <\/figcaption><\/figure>\n<p>Im Vergleich zur Verwendung von nur Android Intents erm\u00f6glichen Webzahlungen eine bessere Browserintegration, Sicherheit und Benutzererfahrung:<\/p>\n<ul>\n<li>Die Zahlungsanwendung wird modal im Kontext der Website des H\u00e4ndlers gestartet.<\/li>\n<li>Die Implementierung erg\u00e4nzt Ihre bestehende Zahlungsanwendung und erm\u00f6glicht es Ihnen, Ihre Benutzerbasis zu nutzen.<\/li>\n<li>Die Signatur der Zahlungs-App wird \u00fcberpr\u00fcft, um dies zu vermeiden<br \/>\n<a rel=\"nofollow noopener noreferrer\" target=\"_blank\" href=\"https:\/\/en.wikipedia.org\/wiki\/Sideloading\">seitliche Belastung<\/a>.<\/li>\n<li>Zahlungs-Apps k\u00f6nnen mehrere Zahlungsmethoden unterst\u00fctzen.<\/li>\n<li>Jede Zahlungsmethode kann integriert werden, z. B. Kryptow\u00e4hrungen, Bank\u00fcberweisungen und mehr. Zahlungsanwendungen auf Android-Ger\u00e4ten k\u00f6nnen sogar Methoden integrieren, die den Zugriff auf den Hardware-Chip im Ger\u00e4t erfordern.<\/li>\n<\/ul>\n<p>Es sind vier Schritte erforderlich, um Webzahlungen in einer Android-Zahlungsanwendung zu implementieren:<\/p>\n<ol>\n<li>Lassen Sie H\u00e4ndler Ihre Zahlungsanwendung entdecken.<\/li>\n<li>Informieren Sie einen H\u00e4ndler, wenn ein Kunde \u00fcber ein registriertes Instrument (z. B. eine Kreditkarte) verf\u00fcgt, dass er zur Zahlung bereit ist.<\/li>\n<li>Lassen Sie einen Kunden die Zahlung leisten.<\/li>\n<li>\u00dcberpr\u00fcfen Sie das Signaturzertifikat des Anrufers.<\/li>\n<\/ol>\n<p>Informationen zum Anzeigen von Webzahlungen in Aktion finden Sie unter<br \/>\n<a rel=\"nofollow noopener noreferrer\" target=\"_blank\" href=\"https:\/\/github.com\/GoogleChromeLabs\/android-web-payment\/\">Zahlung-Web-Android<\/a><br \/>\nManifestation.<\/p>\n<h2 id=\"step-1:-let-merchants-discover-your-payment-app\"><span class=\"ez-toc-section\" id=\"Paso-1-permita-que-los-comerciantes-descubran-su-aplicacion-de-pago\"><\/span>Schritt 1: Lassen Sie H\u00e4ndler Ihre Zahlungs-App entdecken <span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>Damit ein H\u00e4ndler Ihre Zahlungsanwendung verwenden kann, muss er die verwenden <a rel=\"nofollow noopener noreferrer\" target=\"_blank\" href=\"https:\/\/developer.mozilla.org\/docs\/Web\/API\/Payment_Request_API\">Zahlungsanforderungs-API<\/a> und geben Sie die Zahlungsmethode an, die Sie mit dem unterst\u00fctzen <a rel=\"nofollow noopener noreferrer\" target=\"_blank\" href=\"https:\/\/www.w3.org\/TR\/payment-method-id\/\">Kennung der Zahlungsmethode<\/a>.<\/p>\n<p>Wenn Sie eine eindeutige Zahlungsmethoden-ID f\u00fcr Ihre Zahlungs-App haben, k\u00f6nnen Sie Ihre festlegen <a rel=\"nofollow noopener noreferrer\" target=\"_blank\" href=\"https:\/\/w3c.github.io\/payment-method-manifest\/\">Zahlungsmethode manifest<\/a> damit Browser Ihre Anwendung erkennen k\u00f6nnen.<\/p>\n<h2 id=\"step-2:-let-a-merchant-know-if-a-customer-has-an-enrolled-instrument-that-is-ready-to-pay\"><span class=\"ez-toc-section\" id=\"Paso-2-Informe-a-un-comerciante-si-un-cliente-tiene-un-instrumento-registrado-que-esta-listo-para-pagar\"><\/span>Schritt 2: Informieren Sie einen H\u00e4ndler, wenn ein Kunde ein registriertes Instrument hat, dass er bereit ist zu zahlen <span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>Der H\u00e4ndler kann anrufen <code>hasEnrolledInstrument ()<\/code> um zu sehen, ob der Kunde eine Zahlung leisten kann. Sie k\u00f6nnen implementieren <code>IS_READY_TO_PAY<\/code> als Android-Dienst zur Beantwortung dieser Frage.<\/p>\n<h3 id=\"androidmanifest.xml\"><span class=\"ez-toc-section\" id=\"AndroidManifestxml\"><\/span><code>AndroidManifest.xml<\/code> <span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Deklarieren Sie Ihren Service mit einem Absichtsfilter mit Aktion<br \/>\n<code>org.chromium.intent.action.IS_READY_TO_PAY<\/code>.<\/p>\n<p><web-copy-code><\/p>\n<pre class=\"language-xml\"><code class=\"language-xml\"><span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;<\/span>Bedienung<\/span><br><span class=\"token attr-name\"><span class=\"token namespace\">android:<\/span>S\u00fc\u00dfkartoffel<\/span><span class=\"token attr-value\"><span class=\"token punctuation attr-equals\">=<\/span><span class=\"token punctuation\">\"<\/span>.SampleIsReadyToPayService<span class=\"token punctuation\">\"<\/span><\/span><br><span class=\"token attr-name\"><span class=\"token namespace\">android:<\/span>exported<\/span><span class=\"token attr-value\"><span class=\"token punctuation attr-equals\">=<\/span><span class=\"token punctuation\">\"<\/span>wahr<span class=\"token punctuation\">\"<\/span><\/span><span class=\"token punctuation\">&gt;<\/span><\/span><br><span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;<\/span>intent-filter<\/span><span class=\"token punctuation\">&gt;<\/span><\/span><br><span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;<\/span>Aktion<\/span> <span class=\"token attr-name\"><span class=\"token namespace\">android:<\/span>S\u00fc\u00dfkartoffel<\/span><span class=\"token attr-value\"><span class=\"token punctuation attr-equals\">=<\/span><span class=\"token punctuation\">\"<\/span>org.chromium.intent.action.IS_READY_TO_PAY<span class=\"token punctuation\">\"<\/span><\/span> <span class=\"token punctuation\">\/&gt;<\/span><\/span><br><span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;\/<\/span>intent-filter<\/span><span class=\"token punctuation\">&gt;<\/span><\/span><br><span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;\/<\/span>Bedienung<\/span><span class=\"token punctuation\">&gt;<\/span><\/span><\/code><\/pre>\n<p><\/web-copy-code><\/p>\n<p>das <code>IS_READY_TO_PAY<\/code> Der Service ist optional. Wenn die Zahlungsanwendung keinen solchen Intent-Handler enth\u00e4lt, geht der Webbrowser davon aus, dass die Anwendung jederzeit Zahlungen ausf\u00fchren kann.<\/p>\n<h3 id=\"aidl\"><span class=\"ez-toc-section\" id=\"AIDL\"><\/span>AIDL <span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Die API f\u00fcr <code>IS_READY_TO_PAY<\/code> Der Dienst ist in AIDL definiert. Erstellen Sie zwei AIDL-Dateien mit folgendem Inhalt:<\/p>\n<p class=\"w-label\">app \/ src \/ main \/ aidl \/ org \/ chrom \/ IsReadyToPayServiceCallback.aidl<\/p>\n<p><web-copy-code><\/p>\n<pre class=\"language-kotlin\"><code class=\"language-kotlin\"><span class=\"token keyword\">package<\/span> org<span class=\"token punctuation\">.<\/span>chromium<span class=\"token punctuation\">;<\/span><br><span class=\"token keyword\">interface<\/span> IsReadyToPayServiceCallback <span class=\"token punctuation\">{<\/span><br>oneway void <span class=\"token function\">handleIsReadyToPay<\/span><span class=\"token punctuation\">(<\/span>boolean isReadyToPay<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><br><span class=\"token punctuation\">}<\/span><\/code><\/pre>\n<p><\/web-copy-code><\/p>\n<p class=\"w-label\">app \/ src \/ main \/ aidl \/ org \/ chrom \/ IsReadyToPayService.aidl<\/p>\n<p><web-copy-code><\/p>\n<pre class=\"language-kotlin\"><code class=\"language-kotlin\"><span class=\"token keyword\">package<\/span> org<span class=\"token punctuation\">.<\/span>chromium<span class=\"token punctuation\">;<\/span><br><span class=\"token keyword\">importieren<\/span> org<span class=\"token punctuation\">.<\/span>chromium<span class=\"token punctuation\">.<\/span>IsReadyToPayServiceCallback<span class=\"token punctuation\">;<\/span><p><span class=\"token keyword\">interface<\/span> IsReadyToPayService <span class=\"token punctuation\">{<\/span><br>oneway void <span class=\"token function\">isReadyToPay<\/span><span class=\"token punctuation\">(<\/span>IsReadyToPayServiceCallback callback<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><br><span class=\"token punctuation\">}<\/span><\/p><\/code><\/pre>\n<p><\/web-copy-code><\/p>\n<h3 id=\"implementing-isreadytopayservice\"><span class=\"ez-toc-section\" id=\"Implementar-IsReadyToPayService\"><\/span>Implementieren <code>IsReadyToPayService<\/code> <span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Die einfachste Implementierung von <code>IsReadyToPayService<\/code> im folgenden Beispiel gezeigt:<\/p>\n<p><web-copy-code><\/p>\n<pre class=\"language-kotlin\"><code class=\"language-kotlin\"><span class=\"token keyword\">Klasse<\/span> SampleIsReadyToPayService <span class=\"token operator\">:<\/span> <span class=\"token function\">Service<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span><br><span class=\"token keyword\">private<\/span> <span class=\"token keyword\">val<\/span> binder <span class=\"token operator\">=<\/span> <span class=\"token keyword\">object<\/span> <span class=\"token operator\">:<\/span> IsReadyToPayService<span class=\"token punctuation\">.<\/span><span class=\"token function\">Stub<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span><br><span class=\"token keyword\">override<\/span> <span class=\"token keyword\">fun<\/span> <span class=\"token function\">isReadyToPay<\/span><span class=\"token punctuation\">(<\/span>R\u00fcckrufen<span class=\"token operator\">:<\/span> IsReadyToPayServiceCallback<span class=\"token operator\">?<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span><br>R\u00fcckrufen<span class=\"token operator\">?<\/span><span class=\"token punctuation\">.<\/span><span class=\"token function\">handleIsReadyToPay<\/span><span class=\"token punctuation\">(<\/span><span class=\"token boolean\">wahr<\/span><span class=\"token punctuation\">)<\/span><br><span class=\"token punctuation\">}<\/span><br><span class=\"token punctuation\">}<\/span><p><span class=\"token keyword\">override<\/span> <span class=\"token keyword\">fun<\/span> <span class=\"token function\">onBind<\/span><span class=\"token punctuation\">(<\/span>Ich habe es versucht<span class=\"token operator\">:<\/span> Absicht<span class=\"token operator\">?<\/span><span class=\"token punctuation\">)<\/span><span class=\"token operator\">:<\/span> IBinder<span class=\"token operator\">?<\/span> <span class=\"token punctuation\">{<\/span><br><span class=\"token keyword\">R\u00fcckkehr<\/span> binder<br><span class=\"token punctuation\">}<\/span><br><span class=\"token punctuation\">}<\/span><\/p><\/code><\/pre>\n<p><\/web-copy-code><\/p>\n<h3 id=\"parameters\"><span class=\"ez-toc-section\" id=\"Parametros\"><\/span>Parameter <span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>\u00dcbergeben Sie die folgenden Parameter an <code>onBind<\/code> als Absichts-Extras:<\/p>\n<ul>\n<li><code>methodNames<\/code><\/li>\n<li><code>methodData<\/code><\/li>\n<li><code>topLevelOrigin<\/code><\/li>\n<li><code>topLevelCertificateChain<\/code><\/li>\n<li><code>topLevelCertificateChain<\/code><\/li>\n<li><code>paymentRequestOrigin<\/code><\/li>\n<\/ul>\n<p><web-copy-code><\/p>\n<pre class=\"language-kotlin\"><code class=\"language-kotlin\"><span class=\"token keyword\">override<\/span> <span class=\"token keyword\">fun<\/span> <span class=\"token function\">onBind<\/span><span class=\"token punctuation\">(<\/span>Ich habe es versucht<span class=\"token operator\">:<\/span> Absicht<span class=\"token operator\">?<\/span><span class=\"token punctuation\">)<\/span><span class=\"token operator\">:<\/span> IBinder<span class=\"token operator\">?<\/span> <span class=\"token punctuation\">{<\/span><br><span class=\"token keyword\">val<\/span> extras<span class=\"token operator\">:<\/span> B\u00fcndeln<span class=\"token operator\">?<\/span> <span class=\"token operator\">=<\/span> Ich habe es versucht<span class=\"token operator\">?<\/span><span class=\"token punctuation\">.<\/span>extras<br><span class=\"token punctuation\">}<\/span><\/code><\/pre>\n<p><\/web-copy-code><\/p>\n<h4 id=\"methodnames\"><span class=\"ez-toc-section\" id=\"methodNames\"><\/span><code>methodNames<\/code> <span class=\"ez-toc-section-end\"><\/span><\/h4>\n<p>Die Namen der abgefragten Methoden. Die Elemente sind die Schl\u00fcssel in der<br \/>\n<code>methodData<\/code> W\u00f6rterbuch und geben Sie die Methoden an, die die Zahlungsanwendung unterst\u00fctzt.<\/p>\n<p><web-copy-code><\/p>\n<pre class=\"language-kotlin\"><code class=\"language-kotlin\"><span class=\"token keyword\">val<\/span> methodNames<span class=\"token operator\">:<\/span> Liste<span class=\"token operator\">&lt;<\/span>String<span class=\"token operator\">&gt;<\/span><span class=\"token operator\">?<\/span> <span class=\"token operator\">=<\/span> extras<span class=\"token punctuation\">.<\/span><span class=\"token function\">getStringArrayList<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">\"methodNames\"<\/span><span class=\"token punctuation\">)<\/span><\/code><\/pre>\n<p><\/web-copy-code><\/p>\n<h4 id=\"methoddata\"><span class=\"ez-toc-section\" id=\"methodData\"><\/span><code>methodData<\/code> <span class=\"ez-toc-section-end\"><\/span><\/h4>\n<p>Eine Zuordnung jeder Eingabe von <code>methodNames<\/code> zum<br \/>\n<a rel=\"nofollow noopener noreferrer\" target=\"_blank\" href=\"https:\/\/w3c.github.io\/payment-request\/#declaring-multiple-ways-of-paying\"><code>methodData<\/code><\/a>.<\/p>\n<p><web-copy-code><\/p>\n<pre class=\"language-kotlin\"><code class=\"language-kotlin\"><span class=\"token keyword\">val<\/span> methodData<span class=\"token operator\">:<\/span> B\u00fcndeln<span class=\"token operator\">?<\/span> <span class=\"token operator\">=<\/span> extras<span class=\"token punctuation\">.<\/span><span class=\"token function\">getBundle<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">\"methodData\"<\/span><span class=\"token punctuation\">)<\/span><\/code><\/pre>\n<p><\/web-copy-code><\/p>\n<h4 id=\"toplevelorigin\"><span class=\"ez-toc-section\" id=\"topLevelOrigin\"><\/span><code>topLevelOrigin<\/code> <span class=\"ez-toc-section-end\"><\/span><\/h4>\n<p>Der Ursprung des H\u00e4ndlers ohne das Schema (der Ursprung ohne das Schema des Navigationskontexts der obersten Ebene). Zum Beispiel, <code>https:\/\/mystore.com\/checkout<\/code> es wird wie vergehen <code>mystore.com<\/code>.<\/p>\n<p><web-copy-code><\/p>\n<pre class=\"language-kotlin\"><code class=\"language-kotlin\"><span class=\"token keyword\">val<\/span> topLevelOrigin<span class=\"token operator\">:<\/span> String<span class=\"token operator\">?<\/span> <span class=\"token operator\">=<\/span> extras<span class=\"token punctuation\">.<\/span><span class=\"token function\">getString<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">\"topLevelOrigin\"<\/span><span class=\"token punctuation\">)<\/span><\/code><\/pre>\n<p><\/web-copy-code><\/p>\n<h4 id=\"toplevelcertificatechain\"><span class=\"ez-toc-section\" id=\"topLevelCertificateChain\"><\/span><code>topLevelCertificateChain<\/code> <span class=\"ez-toc-section-end\"><\/span><\/h4>\n<p>Die Zertifikatkette des H\u00e4ndlers (die Zertifikatkette aus dem Navigationskontext der obersten Ebene). Null f\u00fcr localhost und Datei auf der Festplatte, die sichere Kontexte ohne SSL-Zertifikate sind. Die Zertifikatskette ist erforderlich, da f\u00fcr einen Zahlungsantrag m\u00f6glicherweise unterschiedliche Vertrauensanforderungen f\u00fcr Websites gelten.<\/p>\n<p><web-copy-code><\/p>\n<pre class=\"language-kotlin\"><code class=\"language-kotlin\"><span class=\"token keyword\">val<\/span> topLevelCertificateChain<span class=\"token operator\">:<\/span> Array<span class=\"token operator\">&lt;<\/span>Paketierbar<span class=\"token operator\">&gt;<\/span><span class=\"token operator\">?<\/span> <span class=\"token operator\">=<\/span><br>extras<span class=\"token punctuation\">.<\/span><span class=\"token function\">getParcelableArray<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">\"topLevelCertificateChain\"<\/span><span class=\"token punctuation\">)<\/span><\/code><\/pre>\n<p><\/web-copy-code><\/p>\n<p>Jeder <code>Paketierbar<\/code> ist ein <code>B\u00fcndeln<\/code> mit einer <code>&quot;Zertifikat&quot;<\/code> Schl\u00fcssel und ein Byte-Array-Wert.<\/p>\n<p><web-copy-code><\/p>\n<pre class=\"language-kotlin\"><code class=\"language-kotlin\"><span class=\"token keyword\">val<\/span> list<span class=\"token operator\">:<\/span> Liste<span class=\"token operator\">&lt;<\/span>ByteArray<span class=\"token operator\">&gt;<\/span><span class=\"token operator\">?<\/span> <span class=\"token operator\">=<\/span> topLevelCertificateChain<span class=\"token operator\">?<\/span><span class=\"token punctuation\">.<\/span><span class=\"token function\">mapNotNull<\/span> <span class=\"token punctuation\">{<\/span> p <span class=\"token operator\">-&gt;<\/span><br><span class=\"token punctuation\">(<\/span>p <span class=\"token keyword\">As<\/span> B\u00fcndeln<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">.<\/span><span class=\"token function\">getByteArray<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">&quot;Zertifikat&quot;<\/span><span class=\"token punctuation\">)<\/span><br><span class=\"token punctuation\">}<\/span><\/code><\/pre>\n<p><\/web-copy-code><\/p>\n<h4 id=\"paymentrequestorigin\"><span class=\"ez-toc-section\" id=\"paymentRequestOrigin\"><\/span><code>paymentRequestOrigin<\/code> <span class=\"ez-toc-section-end\"><\/span><\/h4>\n<p>Die Nicht-Schema-Quelle des aufgerufenen Iframe-Navigationskontexts <code>neue PaymentRequest (methodData, Details, Optionen)<\/code> Konstruktor in JavaScript. Wenn der Konstruktor aus dem Kontext der obersten Ebene aufgerufen wurde, entspricht der Wert dieses Parameters dem Wert von <code>topLevelOrigin<\/code> Parameter.<\/p>\n<p><web-copy-code><\/p>\n<pre class=\"language-kotlin\"><code class=\"language-kotlin\"><span class=\"token keyword\">val<\/span> paymentRequestOrigin<span class=\"token operator\">:<\/span> String<span class=\"token operator\">?<\/span> <span class=\"token operator\">=<\/span> extras<span class=\"token punctuation\">.<\/span><span class=\"token function\">getString<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">\"paymentRequestOrigin\"<\/span><span class=\"token punctuation\">)<\/span><\/code><\/pre>\n<p><\/web-copy-code><\/p>\n<h3 id=\"response\"><span class=\"ez-toc-section\" id=\"Respuesta\"><\/span>Antworten <span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Der Dienst kann seine Antwort durch senden <code>handleIsReadyToPay (Boolean)<\/code> Methode.<\/p>\n<p><web-copy-code><\/p>\n<pre class=\"language-kotlin\"><code class=\"language-kotlin\">R\u00fcckrufen<span class=\"token operator\">?<\/span><span class=\"token punctuation\">.<\/span><span class=\"token function\">handleIsReadyToPay<\/span><span class=\"token punctuation\">(<\/span><span class=\"token boolean\">wahr<\/span><span class=\"token punctuation\">)<\/span><\/code><\/pre>\n<p><\/web-copy-code><\/p>\n<h3 id=\"permission\"><span class=\"ez-toc-section\" id=\"Permiso\"><\/span>Entschuldigen Sie mich <span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Sie k\u00f6nnen verwenden <code>Binder.getCallingUid ()<\/code> um zu \u00fcberpr\u00fcfen, wer der Anrufer ist. Beachten Sie, dass Sie dies in der tun m\u00fcssen <code>isReadyToPay<\/code> Methode, nicht die <code>onBind<\/code> Methode.<\/p>\n<p><web-copy-code><\/p>\n<pre class=\"language-kotlin\"><code class=\"language-kotlin\"><span class=\"token keyword\">override<\/span> <span class=\"token keyword\">fun<\/span> <span class=\"token function\">isReadyToPay<\/span><span class=\"token punctuation\">(<\/span>R\u00fcckrufen<span class=\"token operator\">:<\/span> IsReadyToPayServiceCallback<span class=\"token operator\">?<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span><br><span class=\"token keyword\">try<\/span> <span class=\"token punctuation\">{<\/span><br><span class=\"token keyword\">val<\/span> callingPackage <span class=\"token operator\">=<\/span> packageManager<span class=\"token punctuation\">.<\/span><span class=\"token function\">getNameForUid<\/span><span class=\"token punctuation\">(<\/span>Binder<span class=\"token punctuation\">.<\/span><span class=\"token function\">getCallingUid<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span><br><\/code><\/pre>\n<p><\/web-copy-code><\/p>\n<p>Informationen zum \u00dcberpr\u00fcfen, ob das anrufende Paket die richtige Signatur hat, finden Sie unter \u00dcberpr\u00fcfen des Signaturzertifikats des Anrufers.<\/p>\n<h2 id=\"step-3:-let-a-customer-make-payment\"><span class=\"ez-toc-section\" id=\"Paso-3-deje-que-un-cliente-realice-el-pago\"><\/span>Schritt 3: Lassen Sie einen Kunden auschecken <span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>Der H\u00e4ndler ruft an <code>Show()<\/code> um den Zahlungsantrag zu starten, damit der Kunde eine Zahlung leisten kann. Die kostenpflichtige App wird \u00fcber eine Android-Absicht aufgerufen <code>ZAHLEN<\/code> mit Transaktionsinformationen in den Intent-Parametern.<\/p>\n<p>Der Zahlungsantrag antwortet mit <code>Methodenname<\/code> y <code>Einzelheiten<\/code>, die spezifisch f\u00fcr die Zahlungsanwendung sind und f\u00fcr den Browser undurchsichtig sind. Der Browser konvertiert die <code>Einzelheiten<\/code><br \/>\nZeichenfolge in einem JavaScript-Objekt f\u00fcr den H\u00e4ndler \u00fcber JSON-Deserialisierung, aber dar\u00fcber hinaus keine G\u00fcltigkeit. Der Browser \u00e4ndert das nicht<br \/>\n<code>Einzelheiten<\/code>;; Der Wert dieses Parameters wird direkt an den H\u00e4ndler \u00fcbergeben.<\/p>\n<h3 id=\"androidmanifest.xml-2\"><span class=\"ez-toc-section\" id=\"AndroidManifestxml-2\"><\/span><code>AndroidManifest.xml<\/code> <span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Die Aktivit\u00e4t mit dem <code>ZAHLEN<\/code> Der Absichtsfilter muss a haben <code><\/code> Ein Tag, das die Standardkennung der Zahlungsmethode f\u00fcr die Anwendung angibt.<\/p>\n<p>F\u00fcgen Sie a hinzu, um mehrere Zahlungsmethoden zu unterst\u00fctzen <code><\/code> Etikett mit a<br \/>\n<code><\/code> Ressource.<\/p>\n<p><web-copy-code><\/p>\n<pre class=\"language-xml\"><code class=\"language-xml\"><span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;<\/span>activity<\/span><br><span class=\"token attr-name\"><span class=\"token namespace\">android:<\/span>S\u00fc\u00dfkartoffel<\/span><span class=\"token attr-value\"><span class=\"token punctuation attr-equals\">=<\/span><span class=\"token punctuation\">\"<\/span>.PaymentActivity<span class=\"token punctuation\">\"<\/span><\/span><br><span class=\"token attr-name\"><span class=\"token namespace\">android:<\/span>Thema<\/span><span class=\"token attr-value\"><span class=\"token punctuation attr-equals\">=<\/span><span class=\"token punctuation\">\"<\/span>@style\/Theme.SamplePay.Dialog<span class=\"token punctuation\">\"<\/span><\/span><span class=\"token punctuation\">&gt;<\/span><\/span><br><span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;<\/span>intent-filter<\/span><span class=\"token punctuation\">&gt;<\/span><\/span><br><span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;<\/span>Aktion<\/span> <span class=\"token attr-name\"><span class=\"token namespace\">android:<\/span>S\u00fc\u00dfkartoffel<\/span><span class=\"token attr-value\"><span class=\"token punctuation attr-equals\">=<\/span><span class=\"token punctuation\">\"<\/span>org.chromium.intent.action.PAY<span class=\"token punctuation\">\"<\/span><\/span> <span class=\"token punctuation\">\/&gt;<\/span><\/span><br><span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;\/<\/span>intent-filter<\/span><span class=\"token punctuation\">&gt;<\/span><\/span><p><span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;<\/span>meta-data<\/span><br><span class=\"token attr-name\"><span class=\"token namespace\">android:<\/span>S\u00fc\u00dfkartoffel<\/span><span class=\"token attr-value\"><span class=\"token punctuation attr-equals\">=<\/span><span class=\"token punctuation\">\"<\/span>org.chromium.default_payment_method_name<span class=\"token punctuation\">\"<\/span><\/span><br><span class=\"token attr-name\"><span class=\"token namespace\">android:<\/span>Wert<\/span><span class=\"token attr-value\"><span class=\"token punctuation attr-equals\">=<\/span><span class=\"token punctuation\">\"<\/span>https:\/\/bobpay.xyz\/pay<span class=\"token punctuation\">\"<\/span><\/span> <span class=\"token punctuation\">\/&gt;<\/span><\/span><br><span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;<\/span>meta-data<\/span><br><span class=\"token attr-name\"><span class=\"token namespace\">android:<\/span>S\u00fc\u00dfkartoffel<\/span><span class=\"token attr-value\"><span class=\"token punctuation attr-equals\">=<\/span><span class=\"token punctuation\">\"<\/span>org.chromium.payment_method_names<span class=\"token punctuation\">\"<\/span><\/span><br><span class=\"token attr-name\"><span class=\"token namespace\">android:<\/span>Ressource<\/span><span class=\"token attr-value\"><span class=\"token punctuation attr-equals\">=<\/span><span class=\"token punctuation\">\"<\/span>@array\/method_names<span class=\"token punctuation\">\"<\/span><\/span> <span class=\"token punctuation\">\/&gt;<\/span><\/span><br><span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;\/<\/span>activity<\/span><span class=\"token punctuation\">&gt;<\/span><\/span><\/p><\/code><\/pre>\n<p><\/web-copy-code><\/p>\n<p>das <code>Ressource<\/code> muss eine Liste von Zeichenfolgen sein, von denen jede eine g\u00fcltige absolute URL mit einem HTTPS-Schema sein muss, wie hier gezeigt.<\/p>\n<p><web-copy-code><\/p>\n<pre class=\"language-xml\"><code class=\"language-xml\"><span class=\"token prolog\">&lt;?xml version=\"1.0\" encoding=\"utf-8\"?&gt;<\/span><br><span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;<\/span>Ressourcen<\/span><span class=\"token punctuation\">&gt;<\/span><\/span><br><span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;<\/span>string-array<\/span> <span class=\"token attr-name\">S\u00fc\u00dfkartoffel<\/span><span class=\"token attr-value\"><span class=\"token punctuation attr-equals\">=<\/span><span class=\"token punctuation\">\"<\/span>method_names<span class=\"token punctuation\">\"<\/span><\/span><span class=\"token punctuation\">&gt;<\/span><\/span><br><span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;<\/span>Artikel<\/span><span class=\"token punctuation\">&gt;<\/span><\/span>https:\/\/alicepay.com\/put\/optional\/path\/here<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;\/<\/span>Artikel<\/span><span class=\"token punctuation\">&gt;<\/span><\/span><br><span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;<\/span>Artikel<\/span><span class=\"token punctuation\">&gt;<\/span><\/span>https:\/\/charliepay.com\/put\/optional\/path\/here<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;\/<\/span>Artikel<\/span><span class=\"token punctuation\">&gt;<\/span><\/span><br><span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;\/<\/span>string-array<\/span><span class=\"token punctuation\">&gt;<\/span><\/span><br><span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;\/<\/span>Ressourcen<\/span><span class=\"token punctuation\">&gt;<\/span><\/span><\/code><\/pre>\n<p><\/web-copy-code><\/p>\n<h3 id=\"parameters-2\"><span class=\"ez-toc-section\" id=\"Parametros-2\"><\/span>Parameter <span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Die folgenden Parameter werden als Absichts-Extras an die Aktivit\u00e4t \u00fcbergeben:<\/p>\n<ul>\n<li><code>methodNames<\/code><\/li>\n<li><code>methodData<\/code><\/li>\n<li><code>topLevelOrigin<\/code><\/li>\n<li><code>topLevelCertificateChain<\/code><\/li>\n<li><code>paymentRequestOrigin<\/code><\/li>\n<li><code>gesamt<\/code><\/li>\n<li><code>Modifikatoren<\/code><\/li>\n<li><code>paymentRequestId<\/code><\/li>\n<\/ul>\n<p><web-copy-code><\/p>\n<pre class=\"language-kotlin\"><code class=\"language-kotlin\"><span class=\"token keyword\">val<\/span> extras<span class=\"token operator\">:<\/span> B\u00fcndeln<span class=\"token operator\">?<\/span> <span class=\"token operator\">=<\/span> Ich habe es versucht<span class=\"token operator\">?<\/span><span class=\"token punctuation\">.<\/span>extras<\/code><\/pre>\n<p><\/web-copy-code><\/p>\n<h4 id=\"methodnames-2\"><span class=\"ez-toc-section\" id=\"methodNames-2\"><\/span>methodNames <span class=\"ez-toc-section-end\"><\/span><\/h4>\n<p>Die Namen der verwendeten Methoden. Die Elemente sind die Schl\u00fcssel in der<br \/>\n<code>methodData<\/code> W\u00f6rterbuch. Dies sind die Methoden, die die Zahlungsanwendung unterst\u00fctzt.<\/p>\n<p><web-copy-code><\/p>\n<pre class=\"language-kotlin\"><code class=\"language-kotlin\"><span class=\"token keyword\">val<\/span> methodNames<span class=\"token operator\">:<\/span> Liste<span class=\"token operator\">&lt;<\/span>String<span class=\"token operator\">&gt;<\/span><span class=\"token operator\">?<\/span> <span class=\"token operator\">=<\/span> extras<span class=\"token punctuation\">.<\/span><span class=\"token function\">getStringArrayList<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">\"methodNames\"<\/span><span class=\"token punctuation\">)<\/span><\/code><\/pre>\n<p><\/web-copy-code><\/p>\n<h4 id=\"methoddata-2\"><span class=\"ez-toc-section\" id=\"methodData-2\"><\/span><code>methodData<\/code> <span class=\"ez-toc-section-end\"><\/span><\/h4>\n<p>Eine Zuordnung von jedem der <code>methodNames<\/code> zum<br \/>\n<a rel=\"nofollow noopener noreferrer\" target=\"_blank\" href=\"https:\/\/w3c.github.io\/payment-request\/#declaring-multiple-ways-of-paying\"><code>methodData<\/code><\/a>.<\/p>\n<p><web-copy-code><\/p>\n<pre class=\"language-kotlin\"><code class=\"language-kotlin\"><span class=\"token keyword\">val<\/span> methodData<span class=\"token operator\">:<\/span> B\u00fcndeln<span class=\"token operator\">?<\/span> <span class=\"token operator\">=<\/span> extras<span class=\"token punctuation\">.<\/span><span class=\"token function\">getBundle<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">\"methodData\"<\/span><span class=\"token punctuation\">)<\/span><\/code><\/pre>\n<p><\/web-copy-code><\/p>\n<h4 id=\"merchantname\"><span class=\"ez-toc-section\" id=\"Nombre-del-comerciante\"><\/span>H\u00e4ndlername <span class=\"ez-toc-section-end\"><\/span><\/h4>\n<p>Der Inhalt der <code><title>&lt;\/ html&gt;<\/code> HTML-Tag der H\u00e4ndler-Checkout-Seite (der Navigationskontext der obersten Ebene des Browsers).<\/p>\n<p><web-copy-code><\/p>\n<pre class=\"language-kotlin\"><code class=\"language-kotlin\"><span class=\"token keyword\">val<\/span> merchantName<span class=\"token operator\">:<\/span> String<span class=\"token operator\">?<\/span> <span class=\"token operator\">=<\/span> extras<span class=\"token punctuation\">.<\/span><span class=\"token function\">getString<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">\"merchantName\"<\/span><span class=\"token punctuation\">)<\/span><\/code><\/pre>\n<p><\/web-copy-code><\/p>\n<h4 id=\"toplevelorigin-2\"><span class=\"ez-toc-section\" id=\"topLevelOrigin-2\"><\/span><code>topLevelOrigin<\/code> <span class=\"ez-toc-section-end\"><\/span><\/h4>\n<p>Der Ursprung des H\u00e4ndlers ohne das Schema (Der Ursprung ohne das Schema des Navigationskontexts der obersten Ebene). Zum Beispiel, <code>https:\/\/mystore.com\/checkout<\/code> es passiert wie <code>mystore.com<\/code>.<\/p>\n<p><web-copy-code><\/p>\n<pre class=\"language-kotlin\"><code class=\"language-kotlin\"><span class=\"token keyword\">val<\/span> topLevelOrigin<span class=\"token operator\">:<\/span> String<span class=\"token operator\">?<\/span> <span class=\"token operator\">=<\/span> extras<span class=\"token punctuation\">.<\/span><span class=\"token function\">getString<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">\"topLevelOrigin\"<\/span><span class=\"token punctuation\">)<\/span><\/code><\/pre>\n<p><\/web-copy-code><\/p>\n<h4 id=\"toplevelcertificatechain-2\"><span class=\"ez-toc-section\" id=\"topLevelCertificateChain-2\"><\/span><code>topLevelCertificateChain<\/code> <span class=\"ez-toc-section-end\"><\/span><\/h4>\n<p>Die Zertifikatkette des H\u00e4ndlers (die Zertifikatkette aus dem Navigationskontext der obersten Ebene). Null f\u00fcr localhost und Datei auf der Festplatte, die sichere Kontexte ohne SSL-Zertifikate sind. Jeder <code>Paketierbar<\/code> Es ist ein Paket mit einem<br \/>\n<code>Zertifikat<\/code> Schl\u00fcssel und ein Byte-Array-Wert.<\/p>\n<p><web-copy-code><\/p>\n<pre class=\"language-kotlin\"><code class=\"language-kotlin\"><span class=\"token keyword\">val<\/span> topLevelCertificateChain<span class=\"token operator\">:<\/span> Array<span class=\"token operator\">&lt;<\/span>Paketierbar<span class=\"token operator\">&gt;<\/span><span class=\"token operator\">?<\/span> <span class=\"token operator\">=<\/span><br>extras<span class=\"token punctuation\">.<\/span><span class=\"token function\">getParcelableArray<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">\"topLevelCertificateChain\"<\/span><span class=\"token punctuation\">)<\/span><br><span class=\"token keyword\">val<\/span> list<span class=\"token operator\">:<\/span> Liste<span class=\"token operator\">&lt;<\/span>ByteArray<span class=\"token operator\">&gt;<\/span><span class=\"token operator\">?<\/span> <span class=\"token operator\">=<\/span> topLevelCertificateChain<span class=\"token operator\">?<\/span><span class=\"token punctuation\">.<\/span><span class=\"token function\">mapNotNull<\/span> <span class=\"token punctuation\">{<\/span> p <span class=\"token operator\">-&gt;<\/span><br><span class=\"token punctuation\">(<\/span>p <span class=\"token keyword\">As<\/span> B\u00fcndeln<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">.<\/span><span class=\"token function\">getByteArray<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">&quot;Zertifikat&quot;<\/span><span class=\"token punctuation\">)<\/span><br><span class=\"token punctuation\">}<\/span><\/code><\/pre>\n<p><\/web-copy-code><\/p>\n<h4 id=\"paymentrequestorigin-2\"><span class=\"ez-toc-section\" id=\"paymentRequestOrigin-2\"><\/span><code>paymentRequestOrigin<\/code> <span class=\"ez-toc-section-end\"><\/span><\/h4>\n<p>Die Nicht-Schema-Quelle des aufgerufenen Iframe-Navigationskontexts <code>neue PaymentRequest (methodData, Details, Optionen)<\/code> Konstruktor in JavaScript. Wenn der Konstruktor aus dem Kontext der obersten Ebene aufgerufen wurde, entspricht der Wert dieses Parameters dem Wert von <code>topLevelOrigin<\/code> Parameter.<\/p>\n<p><web-copy-code><\/p>\n<pre class=\"language-kotlin\"><code class=\"language-kotlin\"><span class=\"token keyword\">val<\/span> paymentRequestOrigin<span class=\"token operator\">:<\/span> String<span class=\"token operator\">?<\/span> <span class=\"token operator\">=<\/span> extras<span class=\"token punctuation\">.<\/span><span class=\"token function\">getString<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">\"paymentRequestOrigin\"<\/span><span class=\"token punctuation\">)<\/span><\/code><\/pre>\n<p><\/web-copy-code><\/p>\n<h4 id=\"total\"><span class=\"ez-toc-section\" id=\"total\"><\/span><code>gesamt<\/code> <span class=\"ez-toc-section-end\"><\/span><\/h4>\n<p>Die JSON-Zeichenfolge, die den Gesamtbetrag der Transaktion darstellt.<\/p>\n<p><web-copy-code><\/p>\n<pre class=\"language-kotlin\"><code class=\"language-kotlin\"><span class=\"token keyword\">val<\/span> gesamt<span class=\"token operator\">:<\/span> String<span class=\"token operator\">?<\/span> <span class=\"token operator\">=<\/span> extras<span class=\"token punctuation\">.<\/span><span class=\"token function\">getString<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">\"total\"<\/span><span class=\"token punctuation\">)<\/span><\/code><\/pre>\n<p><\/web-copy-code><\/p>\n<p>Hier ist ein Beispiel f\u00fcr den Inhalt von Zeichenfolgen:<\/p>\n<p><web-copy-code><\/p>\n<pre class=\"language-kotlin\"><code class=\"language-kotlin\"><span class=\"token punctuation\">{<\/span><span class=\"token string\">\"currency\"<\/span><span class=\"token operator\">:<\/span><span class=\"token string\">\"USD\"<\/span><span class=\"token punctuation\">,<\/span><span class=\"token string\">\"value\"<\/span><span class=\"token operator\">:<\/span><span class=\"token string\">\"25.00\"<\/span><span class=\"token punctuation\">}<\/span><\/code><\/pre>\n<p><\/web-copy-code><\/p>\n<h4 id=\"modifiers\"><span class=\"ez-toc-section\" id=\"modifiers\"><\/span><code>Modifikatoren<\/code> <span class=\"ez-toc-section-end\"><\/span><\/h4>\n<p>Die Ausgabe von <code>JSON.stringify (details.modifiers)<\/code>, wo <code>details.modifiers<\/code><br \/>\nnur enthalten <code>unterst\u00fctzte Methoden<\/code> y <code>gesamt<\/code>.<\/p>\n<h4 id=\"paymentrequestid\"><span class=\"ez-toc-section\" id=\"paymentRequestId\"><\/span><code>paymentRequestId<\/code> <span class=\"ez-toc-section-end\"><\/span><\/h4>\n<p>das <code>PaymentRequest.id<\/code> Feld, das Anwendungen f\u00fcr die automatische Zahlung mit dem Status der Transaktion verkn\u00fcpfen sollen. H\u00e4ndler-Websites verwenden dieses Feld, um &quot;Auto Pay&quot; -Anwendungen nach dem Out-of-Band-Transaktionsstatus abzufragen.<\/p>\n<p><web-copy-code><\/p>\n<pre class=\"language-kotlin\"><code class=\"language-kotlin\"><span class=\"token keyword\">val<\/span> paymentRequestId<span class=\"token operator\">:<\/span> String<span class=\"token operator\">?<\/span> <span class=\"token operator\">=<\/span> extras<span class=\"token punctuation\">.<\/span><span class=\"token function\">getString<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">\"paymentRequestId\"<\/span><span class=\"token punctuation\">)<\/span><\/code><\/pre>\n<p><\/web-copy-code><\/p>\n<h3 id=\"response-2\"><span class=\"ez-toc-section\" id=\"Respuesta-2\"><\/span>Antworten <span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Die Aktivit\u00e4t kann ihre Antwort durch senden <code>setResult<\/code> mit <code>RESULT_OK<\/code>.<\/p>\n<p><web-copy-code><\/p>\n<pre class=\"language-kotlin\"><code class=\"language-kotlin\"><span class=\"token function\">setResult<\/span><span class=\"token punctuation\">(<\/span>Activity<span class=\"token punctuation\">.<\/span>RESULT_OK<span class=\"token punctuation\">,<\/span> <span class=\"token function\">Absicht<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">.<\/span><span class=\"token function\">apply<\/span> <span class=\"token punctuation\">{<\/span><br><span class=\"token function\">putExtra<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">\"methodName\"<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token string\">\"https:\/\/bobpay.xyz\/pay\"<\/span><span class=\"token punctuation\">)<\/span><br><span class=\"token function\">putExtra<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">\"details\"<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token string\">\"{\"token\": \"put-some-data-here\"}\"<\/span><span class=\"token punctuation\">)<\/span><br><span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">)<\/span><br><span class=\"token function\">finish<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><\/code><\/pre>\n<p><\/web-copy-code><\/p>\n<p>Sie m\u00fcssen zwei Parameter als Absichts-Extras angeben:<\/p>\n<ul>\n<li><code>Methodenname<\/code>: Der Name der verwendeten Methode.<\/li>\n<li><code>Einzelheiten<\/code>: JSON-Zeichenfolge mit den Informationen, die der H\u00e4ndler zum Abschlie\u00dfen der Transaktion ben\u00f6tigt. Wenn Erfolg ist <code>wahr<\/code>, dann <code>Einzelheiten<\/code> muss so konstruiert sein, dass <code>JSON.parse (Details)<\/code> es k\u00f6nnte passieren.<\/li>\n<\/ul>\n<p>Du kannst passieren <code>RESULT_CANCELED<\/code> Wenn die Transaktion in der Zahlungsanwendung nicht abgeschlossen wurde, z. B. wenn der Benutzer in der Zahlungsanwendung nicht den richtigen PIN-Code f\u00fcr sein Konto eingegeben hat. Der Browser kann es dem Benutzer erm\u00f6glichen, eine andere Zahlungsanwendung auszuw\u00e4hlen.<\/p>\n<p><web-copy-code><\/p>\n<pre class=\"language-kotlin\"><code class=\"language-kotlin\"><span class=\"token function\">setResult<\/span><span class=\"token punctuation\">(<\/span>RESULT_CANCELED<span class=\"token punctuation\">)<\/span><br><span class=\"token function\">finish<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><\/code><\/pre>\n<p><\/web-copy-code><\/p>\n<p>Wenn das Aktivit\u00e4tsergebnis einer von der aufgerufenen Zahlungsanwendung empfangenen Zahlungsantwort auf gesetzt ist <code>RESULT_OK<\/code>Dann pr\u00fcft Chrome, ob es nicht leer ist <code>Methodenname<\/code> y<br \/>\n<code>Einzelheiten<\/code> in Ihren Extras. Wenn die Validierung fehlschl\u00e4gt, gibt Chrome ein abgelehntes Versprechen von zur\u00fcck <code>request.show ()<\/code> mit einer der folgenden Fehlermeldungen f\u00fcr Entwickler:<\/p>\n<p><web-copy-code><\/p>\n<pre class=\"language-js\"><code class=\"language-js\"><span class=\"token string\">'Payment app returned invalid response. Missing field \"details\".'<\/span><br><span class=\"token string\">'Payment app returned invalid response. Missing field \"methodName\".'<\/span><\/code><\/pre>\n<p><\/web-copy-code><\/p>\n<h3 id=\"permission-2\"><span class=\"ez-toc-section\" id=\"Permiso-2\"><\/span>Entschuldigen Sie mich <span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Die Aktivit\u00e4t kann den Anrufer mit ihrem \u00fcberpr\u00fcfen <code>getCallingPackage ()<\/code> Methode.<\/p>\n<p><web-copy-code><\/p>\n<pre class=\"language-kotlin\"><code class=\"language-kotlin\"><span class=\"token keyword\">val<\/span> caller<span class=\"token operator\">:<\/span> String<span class=\"token operator\">?<\/span> <span class=\"token operator\">=<\/span> callingPackage<\/code><\/pre>\n<p><\/web-copy-code><\/p>\n<p>Der letzte Schritt besteht darin, das Signaturzertifikat des Anrufers zu \u00fcberpr\u00fcfen, um zu best\u00e4tigen, dass das anrufende Paket die richtige Signatur hat.<\/p>\n<h2 id=\"step-4:-verify-the-caller's-signing-certificate\"><span class=\"ez-toc-section\" id=\"Paso-4-Verifique-el-certificado-de-firma-de-la-persona-que-llama\"><\/span>Schritt 4: \u00dcberpr\u00fcfen Sie das Signaturzertifikat des Anrufers <span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>Sie k\u00f6nnen den Paketnamen des Anrufers mit \u00fcberpr\u00fcfen <code>Binder.getCallingUid ()<\/code> im<br \/>\n<code>IS_READY_TO_PAY<\/code>, und mit <code>Activity.getCallingPackage ()<\/code> im <code>ZAHLEN<\/code>. Um wirklich zu \u00fcberpr\u00fcfen, ob der Anrufer der Browser ist, an den Sie denken, m\u00fcssen Sie das Signaturzertifikat \u00fcberpr\u00fcfen und sicherstellen, dass es mit dem richtigen Wert \u00fcbereinstimmt.<\/p>\n<p>Wenn Sie auf API-Level 28 und h\u00f6her abzielen und in einen Browser mit einem einzigen Signaturzertifikat integrieren, k\u00f6nnen Sie diesen verwenden<br \/>\n<code>PackageManager.hasSigningCertificate ()<\/code>.<\/p>\n<p><web-copy-code><\/p>\n<pre class=\"language-kotlin\"><code class=\"language-kotlin\"><span class=\"token keyword\">val<\/span> packageName<span class=\"token operator\">:<\/span> String <span class=\"token operator\">=<\/span> \u2026 <br><span class=\"token keyword\">val<\/span> Zertifikat<span class=\"token operator\">:<\/span> ByteArray <span class=\"token operator\">=<\/span> \u2026 <br><span class=\"token keyword\">val<\/span> verified <span class=\"token operator\">=<\/span> packageManager<span class=\"token punctuation\">.<\/span><span class=\"token function\">hasSigningCertificate<\/span><span class=\"token punctuation\">(<\/span><br>callingPackage<span class=\"token punctuation\">,<\/span><br>Zertifikat<span class=\"token punctuation\">,<\/span><br>PackageManager<span class=\"token punctuation\">.<\/span>CERT_INPUT_SHA256<br><span class=\"token punctuation\">)<\/span><\/code><\/pre>\n<p><\/web-copy-code><\/p>\n<p><code>PackageManager.hasSigningCertificate ()<\/code>  Es wird f\u00fcr einzelne Zertifikatbrowser bevorzugt, da die Zertifikatrotation korrekt ausgef\u00fchrt wird. (Chrome hat nur ein Signaturzertifikat.) Anwendungen mit mehreren Signaturzertifikaten k\u00f6nnen diese nicht drehen.<\/p>\n<p>Wenn Sie API-Levels unterst\u00fctzen m\u00fcssen, die \u00e4lter als 27 Jahre oder niedriger sind, oder wenn Sie Browser mit mehreren Signaturzertifikaten verarbeiten m\u00fcssen, k\u00f6nnen Sie diese verwenden<br \/>\n<code>PackageManager.GET_SIGNATURES<\/code>.<\/p>\n<p><web-copy-code><\/p>\n<pre class=\"language-kotlin\"><code class=\"language-kotlin\"><span class=\"token keyword\">val<\/span> packageName<span class=\"token operator\">:<\/span> String <span class=\"token operator\">=<\/span> \u2026 <br><span class=\"token keyword\">val<\/span> certificates<span class=\"token operator\">:<\/span> einstellen<span class=\"token operator\">&lt;<\/span>ByteArray<span class=\"token operator\">&gt;<\/span> <span class=\"token operator\">=<\/span> \u2026 <p><span class=\"token keyword\">val<\/span> packageInfo <span class=\"token operator\">=<\/span> <span class=\"token function\">getPackageInfo<\/span><span class=\"token punctuation\">(<\/span>packageName<span class=\"token punctuation\">,<\/span> PackageManager<span class=\"token punctuation\">.<\/span>GET_SIGNATURES<span class=\"token punctuation\">)<\/span><br><span class=\"token keyword\">val<\/span> sha256 <span class=\"token operator\">=<\/span> MessageDigest<span class=\"token punctuation\">.<\/span><span class=\"token function\">getInstance<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">\"SHA-256\"<\/span><span class=\"token punctuation\">)<\/span><br><span class=\"token keyword\">val<\/span> signatures <span class=\"token operator\">=<\/span> packageInfo<span class=\"token punctuation\">.<\/span>signatures<span class=\"token punctuation\">.<\/span><span class=\"token function\">map<\/span> <span class=\"token punctuation\">{<\/span> sha256<span class=\"token punctuation\">.<\/span><span class=\"token function\">digest<\/span><span class=\"token punctuation\">(<\/span>Artikel<span class=\"token punctuation\">.<\/span><span class=\"token function\">toByteArray<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">}<\/span><br><span class=\"token keyword\">val<\/span> verified <span class=\"token operator\">=<\/span> signatures<span class=\"token punctuation\">.<\/span>Gr\u00f6\u00dfe <span class=\"token operator\">==<\/span> certificates<span class=\"token punctuation\">.<\/span>Gr\u00f6\u00dfe <span class=\"token operator\">&amp;&amp;<\/span><br>signatures<span class=\"token punctuation\">.<\/span><span class=\"token function\">Dort<\/span> <span class=\"token punctuation\">{<\/span> s <span class=\"token operator\">-&gt;<\/span> certificates<span class=\"token punctuation\">.<\/span><span class=\"token function\">any<\/span> <span class=\"token punctuation\">{<\/span> Artikel<span class=\"token punctuation\">.<\/span><span class=\"token function\">contentEquals<\/span><span class=\"token punctuation\">(<\/span>s<span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">}<\/span> <span class=\"token punctuation\">}<\/span><\/p><\/code><\/pre>\n<p><\/web-copy-code><\/p>\n<p>    <web-feedback additional-questions=\"api\"><\/web-feedback>\n  <\/div>","protected":false},"excerpt":{"rendered":"<p>Erfahren Sie, wie Sie Ihre Android-Zahlungsanwendung so anpassen, dass sie mit Web Payments funktioniert und Kunden eine bessere Benutzererfahrung bietet. 25. Mai 2020 ...<\/p>","protected":false},"author":1,"featured_media":82208,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1356],"tags":[],"class_list":["post-93401","post","type-post","status-publish","format-standard","has-post-thumbnail","category-dev"],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v27.0 (Yoast SEO v28.2) - https:\/\/yoast.com\/product\/yoast-seo-premium-wordpress\/ -->\n<title>Gu\u00eda para desarrolladores de aplicaciones de pago de Android - R Marketing Digital<\/title>\n<meta name=\"description\" content=\"Aprenda a adaptar su aplicaci\u00f3n de pago de Android para que funcione con Pagos web y brinde una mejor experiencia de usuario a los clientes. 25 de mayo de\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/rmarketingdigital.com\/de\/dev\/guia-para-desarrolladores-de-aplicaciones-de-pago-de-android\/\" \/>\n<meta property=\"og:locale\" content=\"de_DE\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Gu\u00eda para desarrolladores de aplicaciones de pago de Android\" \/>\n<meta property=\"og:description\" content=\"Aprenda a adaptar su aplicaci\u00f3n de pago de Android para que funcione con Pagos web y brinde una mejor experiencia de usuario a los clientes. 25 de mayo de\" \/>\n<meta property=\"og:url\" content=\"https:\/\/rmarketingdigital.com\/de\/dev\/guia-para-desarrolladores-de-aplicaciones-de-pago-de-android\/\" \/>\n<meta property=\"og:site_name\" content=\"R Marketing Digital\" \/>\n<meta property=\"article:published_time\" content=\"2022-08-02T09:34:59+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/rmarketingdigital.com\/wp-content\/uploads\/2020\/09\/social-6815535.png\" \/>\n\t<meta property=\"og:image:width\" content=\"1200\" \/>\n\t<meta property=\"og:image:height\" content=\"1200\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"R Marketing Digital\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/rmarketingdigital.com\\\/dev\\\/guia-para-desarrolladores-de-aplicaciones-de-pago-de-android\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/rmarketingdigital.com\\\/dev\\\/guia-para-desarrolladores-de-aplicaciones-de-pago-de-android\\\/\"},\"author\":{\"name\":\"R Marketing Digital\",\"@id\":\"https:\\\/\\\/rmarketingdigital.com\\\/#\\\/schema\\\/person\\\/7c0d9782b2977b840b3740f00c69a73e\"},\"headline\":\"Gu\u00eda para desarrolladores de aplicaciones de pago de Android\",\"datePublished\":\"2022-08-02T09:34:59+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/rmarketingdigital.com\\\/dev\\\/guia-para-desarrolladores-de-aplicaciones-de-pago-de-android\\\/\"},\"wordCount\":1577,\"image\":{\"@id\":\"https:\\\/\\\/rmarketingdigital.com\\\/dev\\\/guia-para-desarrolladores-de-aplicaciones-de-pago-de-android\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/rmarketingdigital.com\\\/wp-content\\\/uploads\\\/2020\\\/09\\\/social-6815535.png\",\"articleSection\":[\"Dev\"],\"inLanguage\":\"de\"},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/rmarketingdigital.com\\\/dev\\\/guia-para-desarrolladores-de-aplicaciones-de-pago-de-android\\\/\",\"url\":\"https:\\\/\\\/rmarketingdigital.com\\\/dev\\\/guia-para-desarrolladores-de-aplicaciones-de-pago-de-android\\\/\",\"name\":\"Gu\u00eda para desarrolladores de aplicaciones de pago de Android - R Marketing Digital\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/rmarketingdigital.com\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/rmarketingdigital.com\\\/dev\\\/guia-para-desarrolladores-de-aplicaciones-de-pago-de-android\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/rmarketingdigital.com\\\/dev\\\/guia-para-desarrolladores-de-aplicaciones-de-pago-de-android\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/rmarketingdigital.com\\\/wp-content\\\/uploads\\\/2020\\\/09\\\/social-6815535.png\",\"datePublished\":\"2022-08-02T09:34:59+00:00\",\"author\":{\"@id\":\"https:\\\/\\\/rmarketingdigital.com\\\/#\\\/schema\\\/person\\\/7c0d9782b2977b840b3740f00c69a73e\"},\"description\":\"Aprenda a adaptar su aplicaci\u00f3n de pago de Android para que funcione con Pagos web y brinde una mejor experiencia de usuario a los clientes. 25 de mayo de\",\"inLanguage\":\"de\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/rmarketingdigital.com\\\/dev\\\/guia-para-desarrolladores-de-aplicaciones-de-pago-de-android\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"de\",\"@id\":\"https:\\\/\\\/rmarketingdigital.com\\\/dev\\\/guia-para-desarrolladores-de-aplicaciones-de-pago-de-android\\\/#primaryimage\",\"url\":\"https:\\\/\\\/rmarketingdigital.com\\\/wp-content\\\/uploads\\\/2020\\\/09\\\/social-6815535.png\",\"contentUrl\":\"https:\\\/\\\/rmarketingdigital.com\\\/wp-content\\\/uploads\\\/2020\\\/09\\\/social-6815535.png\",\"width\":1200,\"height\":1200,\"caption\":\"social-6815535-9949209-png\"},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/rmarketingdigital.com\\\/#website\",\"url\":\"https:\\\/\\\/rmarketingdigital.com\\\/\",\"name\":\"R Marketing Digital\",\"description\":\"Agencia SEO | Publicidad redes sociales | Community Management\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/rmarketingdigital.com\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"de\"},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/rmarketingdigital.com\\\/#\\\/schema\\\/person\\\/7c0d9782b2977b840b3740f00c69a73e\",\"name\":\"R Marketing Digital\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"de\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/c5599c203e0120b8ccbff4666af86f35f9b3dcad468a8bc6295313a3964a80be?s=96&d=mm&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/c5599c203e0120b8ccbff4666af86f35f9b3dcad468a8bc6295313a3964a80be?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/c5599c203e0120b8ccbff4666af86f35f9b3dcad468a8bc6295313a3964a80be?s=96&d=mm&r=g\",\"caption\":\"R Marketing Digital\"}}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Gu\u00eda para desarrolladores de aplicaciones de pago de Android - R Marketing Digital","description":"Erfahren Sie, wie Sie Ihre Android-Zahlungsanwendung an die Arbeit mit Web Payments anpassen und Kunden eine bessere Benutzererfahrung bieten. 25. Mai","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/rmarketingdigital.com\/de\/dev\/guia-para-desarrolladores-de-aplicaciones-de-pago-de-android\/","og_locale":"de_DE","og_type":"article","og_title":"Gu\u00eda para desarrolladores de aplicaciones de pago de Android","og_description":"Aprenda a adaptar su aplicaci\u00f3n de pago de Android para que funcione con Pagos web y brinde una mejor experiencia de usuario a los clientes. 25 de mayo de","og_url":"https:\/\/rmarketingdigital.com\/de\/dev\/guia-para-desarrolladores-de-aplicaciones-de-pago-de-android\/","og_site_name":"R Marketing Digital","article_published_time":"2022-08-02T09:34:59+00:00","og_image":[{"width":1200,"height":1200,"url":"https:\/\/rmarketingdigital.com\/wp-content\/uploads\/2020\/09\/social-6815535.png","type":"image\/png"}],"author":"R Marketing Digital","twitter_card":"summary_large_image","schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/rmarketingdigital.com\/dev\/guia-para-desarrolladores-de-aplicaciones-de-pago-de-android\/#article","isPartOf":{"@id":"https:\/\/rmarketingdigital.com\/dev\/guia-para-desarrolladores-de-aplicaciones-de-pago-de-android\/"},"author":{"name":"R Marketing Digital","@id":"https:\/\/rmarketingdigital.com\/#\/schema\/person\/7c0d9782b2977b840b3740f00c69a73e"},"headline":"Gu\u00eda para desarrolladores de aplicaciones de pago de Android","datePublished":"2022-08-02T09:34:59+00:00","mainEntityOfPage":{"@id":"https:\/\/rmarketingdigital.com\/dev\/guia-para-desarrolladores-de-aplicaciones-de-pago-de-android\/"},"wordCount":1577,"image":{"@id":"https:\/\/rmarketingdigital.com\/dev\/guia-para-desarrolladores-de-aplicaciones-de-pago-de-android\/#primaryimage"},"thumbnailUrl":"https:\/\/rmarketingdigital.com\/wp-content\/uploads\/2020\/09\/social-6815535.png","articleSection":["Dev"],"inLanguage":"de"},{"@type":"WebPage","@id":"https:\/\/rmarketingdigital.com\/dev\/guia-para-desarrolladores-de-aplicaciones-de-pago-de-android\/","url":"https:\/\/rmarketingdigital.com\/dev\/guia-para-desarrolladores-de-aplicaciones-de-pago-de-android\/","name":"Gu\u00eda para desarrolladores de aplicaciones de pago de Android - R Marketing Digital","isPartOf":{"@id":"https:\/\/rmarketingdigital.com\/#website"},"primaryImageOfPage":{"@id":"https:\/\/rmarketingdigital.com\/dev\/guia-para-desarrolladores-de-aplicaciones-de-pago-de-android\/#primaryimage"},"image":{"@id":"https:\/\/rmarketingdigital.com\/dev\/guia-para-desarrolladores-de-aplicaciones-de-pago-de-android\/#primaryimage"},"thumbnailUrl":"https:\/\/rmarketingdigital.com\/wp-content\/uploads\/2020\/09\/social-6815535.png","datePublished":"2022-08-02T09:34:59+00:00","author":{"@id":"https:\/\/rmarketingdigital.com\/#\/schema\/person\/7c0d9782b2977b840b3740f00c69a73e"},"description":"Erfahren Sie, wie Sie Ihre Android-Zahlungsanwendung an die Arbeit mit Web Payments anpassen und Kunden eine bessere Benutzererfahrung bieten. 25. Mai","inLanguage":"de","potentialAction":[{"@type":"ReadAction","target":["https:\/\/rmarketingdigital.com\/dev\/guia-para-desarrolladores-de-aplicaciones-de-pago-de-android\/"]}]},{"@type":"ImageObject","inLanguage":"de","@id":"https:\/\/rmarketingdigital.com\/dev\/guia-para-desarrolladores-de-aplicaciones-de-pago-de-android\/#primaryimage","url":"https:\/\/rmarketingdigital.com\/wp-content\/uploads\/2020\/09\/social-6815535.png","contentUrl":"https:\/\/rmarketingdigital.com\/wp-content\/uploads\/2020\/09\/social-6815535.png","width":1200,"height":1200,"caption":"social-6815535-9949209-png"},{"@type":"WebSite","@id":"https:\/\/rmarketingdigital.com\/#website","url":"https:\/\/rmarketingdigital.com\/","name":"R Digitales Marketing","description":"SEO Agentur | Werbung f\u00fcr soziale Netzwerke | Community Management","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/rmarketingdigital.com\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"de"},{"@type":"Person","@id":"https:\/\/rmarketingdigital.com\/#\/schema\/person\/7c0d9782b2977b840b3740f00c69a73e","name":"R Digitales Marketing","image":{"@type":"ImageObject","inLanguage":"de","@id":"https:\/\/secure.gravatar.com\/avatar\/c5599c203e0120b8ccbff4666af86f35f9b3dcad468a8bc6295313a3964a80be?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/c5599c203e0120b8ccbff4666af86f35f9b3dcad468a8bc6295313a3964a80be?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/c5599c203e0120b8ccbff4666af86f35f9b3dcad468a8bc6295313a3964a80be?s=96&d=mm&r=g","caption":"R Marketing Digital"}}]}},"_links":{"self":[{"href":"https:\/\/rmarketingdigital.com\/de\/wp-json\/wp\/v2\/posts\/93401","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/rmarketingdigital.com\/de\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/rmarketingdigital.com\/de\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/rmarketingdigital.com\/de\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/rmarketingdigital.com\/de\/wp-json\/wp\/v2\/comments?post=93401"}],"version-history":[{"count":0,"href":"https:\/\/rmarketingdigital.com\/de\/wp-json\/wp\/v2\/posts\/93401\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/rmarketingdigital.com\/de\/wp-json\/wp\/v2\/media\/82208"}],"wp:attachment":[{"href":"https:\/\/rmarketingdigital.com\/de\/wp-json\/wp\/v2\/media?parent=93401"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/rmarketingdigital.com\/de\/wp-json\/wp\/v2\/categories?post=93401"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/rmarketingdigital.com\/de\/wp-json\/wp\/v2\/tags?post=93401"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}