关于Android的支付宝支付问题,我只想说 确实要比微信支付简单很多,下面是我做支付宝支付的过程:
首先支付宝需要的包是这个可以在官网下,在这就是id,密钥问题了 ,还有个问题,因为这次做支付宝支付主要是公司项目,以前自己没做过,所以我用的都是公司的支付宝账号,我一朋友试过自己在支付宝开放平台创建账号,虽然可以成功,但是后面实现功能时会出现 :权限不够,所以最好是用公司账号。
我们先去https://b.alipay.com/order/pidAndKey.htm 添加公钥,至于这些公钥的来源 我们可以去官网下demo里面有个文件夹,这里面bin目录下有个openssl的应用程序,双击进入输入代码就能获得公钥和私钥,如何输入里面也有介绍 ,这里我就不废话了。
添加公钥的问题也可以在网上找到,我们继续 ,到代码中,我们先下载官方支付宝demo,这个只要把这些:
填好应该没问题的,其实这里面公钥不需要 ,我也不清楚它为什么加上去,我再这个里面没有找到公钥出现的地方。如何把这个做到自己项目中呢 这才是最重要的吧。
首先是后台问题:我们需要在后台获取,支付宝能识别的字符串才行 一般是这个样子:
这是我后台获取的一串字符串,再我们到自己的代码中):
1.我们先要从demo中复制几个类到自己的项目中:
2.在需要点击支付的地方实现:
PayTask payTask = new PayTask(RechargeActivity.this);
boolean isExist = payTask.checkAccountIfExist();//这个是判断有没有登入支付宝
//orderInfo是我们从后台获取到的字符串
String result=payTask.pay(orderInfo);
结果是:
这样就算成功了!!!
不过有个很小的问题我一开始一直没注意,就总是做不好,我也找了好久的百度才发觉这个问题,那就是私钥 ,我们创建私钥的时候,openssl文件夹中有个生成命令是这么说的:
私钥最后还要生成pkcs8格式,我当时觉得私钥都出来了 感觉转换了也只是吧,空格去掉了就没要,后来发现两者还是有差距的:
这是普通私钥:
这是转换成pkcs8的私钥:
仔细观察两者有点不同 ,所以还是用转换成pkcs8的私钥
这里还有个很重要的点,支付宝和微信支付不同,比方说微信支付如果手机没有微信客户端,是不能支付的,但是支付宝支付如果没有手机客户端,也会调起网页支付界面,但是,还是要配置一下:
在AndroidManifest.xml文件中添加:
<activity
android:name="com.alipay.android.app.sdk.WapPayActivity"
android:screenOrientation="portrait"
/>
<activity
android:name="com.alipay.sdk.app.H5PayActivity"
android:configChanges="orientation|keyboardHidden|navigation"
android:exported="false"
android:screenOrientation="behind"
android:windowSoftInputMode="adjustResize|stateHidden" >
</activity>
这个是支付宝夹包中集成了的界面,直接用就行。