我正在尝试使用NFC和Android Pay API实现"点击和支付(用于支付交易)".
我没有找到任何关于此的教程或示例.
我看了developer.android.com,但没有得到它.
以上文档讨论了使用基于主机的卡仿真与NFC进行通信 (我可能错了)
怎么能实现这一目标?是否有其他API或我是否必须将支付协议与基于主机的卡仿真服务集成?
public class MyHostApduService extends HostApduService {
    @Override
    public byte[] processCommandApdu(byte[] apdu, Bundle extras) {
       //Implement PAYMENT protocol here
    }
    @Override
    public void onDeactivated(int reason) {
       ...
    }
}
我最近购买的所有Android应用都显示了新的订单ID格式.
OLD格式:
[merchant ID].[actual order ID]
我们可以使用此格式来检查订单ID的前缀是否与商家ID匹配,并防止像Freedom这样的应用程序可能存在黑客攻击.
新格式:
GPA. 1234-5678-9123-45678
我想知道这个数字代表什么,子块的重要性,是否包含在任何地方的商家ID?
我们的应用程序(费用管理员)希望从Android Pay中提取交易历史记录,以便用户更轻松地输入他们的购买历史记录.这可能 - 通过购买的同一部手机上的Android应用程序或通过外部API?
我已经找到了很多关于如何在应用程序中集成Android Pay付款的信息,但没有关于如何访问以前的交易的信息.
我计划在不久的将来在谷歌游戏商店发布一个Android应用程序.我计划通过游戏商店收取少量资金,没有广告.
我的谷歌AdSense帐户暂时被锁定,我仍然不确定原因(谷歌没有指定任何).由于这件事,我开始意识到我对谷歌的善意有多依赖.
因此,我想尽可能地将我的Android开发与我的私人帐户分开.但是,当然,我不想违反有关多个帐户的任何公司政策.
在阅读了一段时间后,我相当肯定允许使用单独的谷歌帐户进行Android开发(也许有人可以确认这一点,只是为了确定?).
但是,我不确定所需的谷歌钱包帐户.我有一个在我的信用卡上注册的私人钱包账户.我只有一张信用卡.我可以使用我在私人帐户上使用的相同信用卡创建一个新的钱包帐户吗?
是否会成为一个问题,在我的私人Google帐户上我的谷歌AdSense帐户被谷歌禁用?
有什么我可能会忘记我的设置吗?
先感谢您!
我正在开发一个Android应用程序,我们可以通过信用卡等打开谷歌钱包付款.
我想在我的Android应用程序中集成谷歌钱包,点击按钮启动.
这是我的场景:
我必须选择一个是通过信用卡付款到另一个用户帐户,如汇款和购买任何项目的付款.
其次是通过网上银行付款.
我们可以使用谷歌钱包进行上述功能吗?
Play商店现在会在购买后2小时内自动批准退款.我有一个Android应用程序,人们可以从应用程序创建和控制VPS游戏主机.也就是说,当你启动应用程序时,你会经历一个注册流程,之后你会有一个运行游戏的VPS.注册后,如果您想对VPS进行任何更改,您只需要该应用程序.
我看到人们通过购买应用程序(提供30天免费VPS)来滥用此功能,通过注册流程创建他们的VPS,然后他们要求退款(如果在2小时内自动获得批准).
从谷歌钱包我可以看到哪些订单ID被取消,但我如何将其链接回用户设备ID或我可以在应用程序中获取的其他东西?
我强迫用户在完成注册流程之前申报他们的Google用户帐户:
Intent intent = AccountPicker.newChooseAccountIntent(null, null, new String[]{"com.google"}, false, null, null, null, null);
// ...
email = data.getStringExtra(AccountManager.KEY_ACCOUNT_NAME);
但这只会给我他们的电子邮件地址,我无法链接回订单ID,这是Google电子钱包中唯一的标识符.
如何将其帐户/电子邮件/设备ID与订单ID(或Google电子钱包中提供的其他信息)相关联?
请注意:这不适用于订单ID随时可用的应用内购买.这是购买应用程序.
谢谢!
修改:Google Play服务授权和用户帐户管理无法让您一直到订单ID:http://developer.android.com/google/auth/http-auth.html 以下是有关应用内结算的文档(毫不奇怪)不提供任何获取应用程序采购订单ID信息的方法:http://developer.android.com/google/play/billing/billing_reference.html 许可不提供订单ID :http:// developer .android.com /谷歌/播放/许可/ overview.html
有类似问题但也未得到答复的人:http://pcandsys.com/20378/verify-purchase-in-google-play-by-orderid / b3
android in-app-billing google-play android-pay android-billing
所以我需要将Android Pay集成到我正在处理的应用程序中.应用程序中的此选项仅适用于美国用户,但我在英国并且很难尝试测试我的实施.我使用沙盒Stripe帐户atm作为支付处理器.
一旦我按下"使用Android Pay付款"按钮,我会弹出一个"要使用Android Pay购物,请在Android Pay应用中设置您的卡".现在Android Pay应用程序在美国境外不可用,所以我已经侧载了它,但是一旦我尝试添加卡就崩溃了.在快速谷歌之后,似乎这种崩溃是应用程序说它在美国以外不受支持..(很棒的UX顺便说一句)
我还尝试将其中一张卡片https://developers.google.com/android-pay/test-flows添加到我的Google帐户,但它们不会显示在Android Pay应用中.
我试图对此进行测试有点失落,看起来非常像谷歌忽视了美国以外的开发者希望在他们的应用程序中为美国客户实现这一点的事实.
有没有人对我如何测试这个有任何想法?
(顺便说一句,我正在测试一只股票,无法运行的Nexus 5运行Marshmallow.我也试图欺骗我的位置无济于事.)
编辑:发言到Android Pay支持谁告诉我没有机制在美国以外的国家进行测试.他们说它检查你的IP地址以确定位置,这就是为什么GPS欺骗不起作用但它似乎代理也不起作用,除非任何人已经破解了这种方式,看起来当他们说美国时他们只是指美国 - 包括发展:|
我想验证Google收据验证,但由于我没有客户端密钥,因此我无法使用Google API:https: //developers.google.com/android-publisher/archive/v1_1/inapppurchases/get
所以我做局部验证通过public key,signedData和signature.
一切正常,因为我有新orderId的格式:
GPA.XXXX-XXXX-XXXX-XXXXX
但是,此代码不适用于旧模式orderId,如下所示:
4582257046313445026.7467948335710411
我得到例外:
签名异常java.security.SignatureException:签名长度不正确:得到294但是期望256
所以我成功地生成了PublicKeybu失败verify:
sig.verify(Base64.decode(signature, Base64.DEFAULT) // <- java.security.SignatureException
我知道RSA签名应该是256,在我的情况下我得到了294
String base64PublicKey = "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA3dkBTr2pD2YSqSK2ewlEWwH9Llu0iA4PkwgVOyNRxOsHfrOlqi0Cm51qdNS0aqh/SMZkuQTAroqH3pAr9gVFOiejKRw+ymTaL5wB9+5n1mAbdeO2tv2FDsbawDvp7u6fIBejYt7Dtmih+kcu707fEO58HZWqgzx9qSHmrkMZr6yvHCtAhdBLwSBBjyhPHy7RAwKA+PE+HYVV2UNb5urqIZ9eI1dAv3RHX/xxHVHRJcjnTyMAqBmfFM+o31tp8/1CxGIazVN6HpVk8Qi2uqSS5HdKUu6VnIK8VuAHQbXQn4bG6GXx5Tp0SX1fKrejo7hupNUCgOlqsYHFYxsRkEOi0QIDAQAB";
String signedData = "{\"orderId\":\"GPA.3353-8027-5082-45637\",\"packageName\":\"com.mycompany.testapp\",\"productId\":\"weekly\",\"purchaseTime\":1503578932746,\"purchaseState\":0,\"developerPayload\":\"1502364785372-5918650324956818356\",\"purchaseToken\":\"bfljoelddlibhbibhnbnflej.AO-J1Oz8pvdqCmzz04OBmegRVKEG1stj4su5HH4uc-gzsz_vlhcz7iB_NUZVBNXp3RlTGyIGnsIgOe6bqvqfUIbPC9_CrCngL0EkZp-SBwaRzfn-EgJ32yQ\",\"autoRenewing\":true}";
String signature = "TyVJfHg8OAoW7W4wuJtS4dM//zmyECiNzWa8wuVrXyDOCPirHqxjpNthq23lmAZlxbTXyMNwedMQPr9R8NJtp3VTzGuNlLYBSOERVehmgstXiiwWDBvTNzgWbwimZmFaIiCExMQiPvbXHoWQh2rClFeAd4FfdC15pNf3NqfOGhUAEmieeb572umOo4YoF0l0421pY/JWYXa+2dtO6pcnSHF6gidRDXR66s/enRZUvkB4x9CEHdA862LDKbwOG4Aihh03IRLjD+m/5WNW+w05Q8bNNA6sCzFGVD+qa3IDiSqkiISCpd3UnufePxf3+O2doWjg2mXC5agEDMnNXvhfrw==";
boolean result = DefaultSignatureValidator.validate(base64PublicKey, signedData, signature); 
DefaultSignatureValidator.class:
public class DefaultSignatureValidator {
        protected static final String KEY_FACTORY_ALGORITHM = "RSA";
        protected static final String SIGNATURE_ALGORITHM = "SHA1withRSA"; …Google电子钱包应用内付款,https://developers.google.com/in-app-payments/,开发人员文档和工具目前处于最佳状态,不完整和/或缺乏相关信息.我觉得我必须写下这篇文章,希望他们注意并听取我们的关注并改进这一点.另外因为目前关于这个新支付系统的开发者信息不多,我希望这会产生积极的活动.
支持文档指向https://groups.google.com/group/in-app-payments/topics上非常安静的论坛.理想情况下,它可以指向这里存在的东西!;)
服务器端示例仅部分记录,方向建议使用大约五个或六个不同库中的一个,但方向完全在那里结束.
一个库链接指向用Python编写的GitHub存储库,显然,您必须以某种方式重写其中一个主文件才能使用.Google Wallet团队在文档中的任何位置都没有记录这一点.同样非常奇怪的是,他们会选择只编写一小部分PHP教程,顺便说一句,这是一种非常流行,熟悉且超高杠杆的语言.相反,当页面上的第一个示例https://developers.google.com/in-app-payments/docs/tutorial用Ruby编写时,他们在Python中编写了一个主要示例...
关于文档的另一个令人惊讶的缺乏质量的是页面,其中列出了调试时可能遇到的各种错误代码.它真的很神奇,它不见了.
错误可能看起来像这样:哦,哦.有一个问题.由于技术问题,我们无法完成您的购买.以下问题的详细信息:很遗憾,我们无法通过商家的服务器确认您的购买.您的订单已被取消.如果此问题仍然存在,请与商家联系.
此外,没有任何关于这些错误的文章:
Uh oh. There was a problem. 
We couldn't start your purchase because of a technical issue. 
Details of the problem below: 
Looks like there is an error in the setup for your purchase. Please 
contact the merchant with this error message: Expected 3 components in 
jwt: W29iamVjdCBPYmplY3Rd
他们都没有表现出任何专业期望和/或确定的信息来帮助任何人.
更进一步,生产JWT的工具被打破:
http://developers.google.com/in-app-payments/docs/jwtdecoder
The decoder decodes the JWT header as this: 
    {"alg":"HS256","typ":"JWT"} 
https://checkout.google.com/customer/gadget/inapp/demo.html
The encoder …我正在寻找一种方法在Web应用程序(https://www.somewebsite.com)中添加Apple Wallet/Android Pay链接,我可以在其中传递会员卡参数(卡名,会员名,卡号).这可能吗?我在移动应用程序中找到了一些示例,但从浏览器到移动应用程序都没有.
android-pay ×10
android ×9
api ×2
google-play ×2
java ×2
google-api ×1
ios ×1
jwt ×1
payment ×1