Android_APP 微信支付接口开发
日期:2015-10-06 12:47:33 作者:
1、首先说一下我们在开发微信支付接口的时候遇到最多和最疑惑的问题,那就是明明 appid、商户号、API密钥 都对照了好几遍确实是和自己的一样,并且也没有在Log日志中出现签名错误等信息,却始终调不起微信支付,或是直接回到支付结果后的界面并提示 “微信支付结果:null;code=-1”。这就是微信支付中的一个深坑之处(为什么说这是深坑之处呢?会在下面特别说明)。
2、下面就教大家如何跳出这个深坑,首先先让图来说话:
3、接下来进行微信支付的接入,本文档重在实现调起微信支付,其中的 sign签名如何生成不进行详细讲解,可以自行上网百度。
微信支付开发步骤:
一、首先去申请开通微信支付功能(亦可从网上找到申请开通的方法),开通后会收到下图所示的一封邮件。
二、从微信支付商户平台下载微信支付的Demo
其Demo的src 目录如下:
四、将微信支付Demo的.java文件放到我们自己的项目中。**这里有一个关键点必须要注意,否则会造成调起微信支付后无法回到支付结果界面, 那就是WXPayEntryActivity.java文件必须放到你工程的 包名.wxapi下,假设你的包名是 com.exemplary.demo 那么WXPayEntryActivity.java文件就应该放到com.exemplary.demo.wxapi 下。**PayActivity.java 文件则可以放到对应的Activity中,其余的.java文件则可以随意放置,然后修改一些小细节即可。
五、修改Constants.java 中的三个参数,然后在AndroidManifest.xml中加入
1)、对应的权限:
<!-- 微信支付 --><uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS"/>12
2)、PayActivity:
<activity android:name="PayActivity的全路径"
android:label="@string/app_name"
android:exported="true"
android:launchMode="singleTop">
<!--这个intent-filter不要忘了-->
<intent-filter>
<action android:name="android.intent.action.VIEW"/><category android:name="android.intent.category.DEFAULT"/><data android:scheme="对应的appid(APP_ID)"/>
</intent-filter></activity>1234567891011
<!-- 微信支付 --><receiver
android:name="AppRegister的全路径"><intent-filter><action android:name="com.tencent.mm.plugin.openapi.Intent.ACTION_REFRESH_WXAPP" /></intent-filter></receiver>1234567
六、有些开发者以为到这里就完成了,然后运行项目进行测试,可得到的结果是调不起微信支付的API。
注意:这一步是坑点之一。在进行测试时我们必须先生成一个程序的keystore文件,然后再按下面的步骤进行才可以顺利地调起微信支付。(这一步在微信支付的开发文档中并没有进行说明)如图所示,生成一个有效的keystore文件的步骤:
然后将生成的apk文件安装到我们的测试机上,如果我们想通过运行项目把程序安装到我们的测试机上也能调起微信支付,则需按下图所示操作:
七、将APP 安装到我们的测试机中后,再从 微信支付 | 商户平台中下载应用签名工具,将其安装到测试机上,下面是下载地址
然后如图所示:
然后按照微信支付中的开发文档走:
八、有的开发者会在这一步走完后就立即测试支付,结果是没能调起微信支付API,这个原因有可能是设置并保存了应用签名后微信那边的服务器没能那么快地做出处理,在等待了30秒后再进行测试则就可以成功调起微信支付了。