首先看到我这篇的时候,相信你们已经看过很多与之相关的解决办法了,我来说一下自己的整个流程,你们可以对一下。
一、申请开发账号
申请开发者账号-流程不说了不是我弄得,!!!!!需要注意的的申请后 需要填写的 应用签名
这个签名一定是要用一下方式获取的: 否则就会只能调取支付一次,需要重装微信客户端,然而也只能调取成功一次(有的时候一次也不行)
应用包名:是在APP项目配置文件AndroidManifest.xml中声明的package值,例如DEMO中的package="net.sourceforge.simcpux"。
应用签名:根据项目的应用包名和编译使用的keystore,可由签名工具生成一个32位的md5串,在调试的手机上安装签名工具后,运行可生成应用签名串,如图8.9所示,绿色串即应用签名。签名工具下载地址https://open.weixin.qq.com/zh_CN/htmledition/res/dev/download/sdk/Gen_Signature_Android.apk
本人是这么注册的
清单文件中的权限 官方文档有
public class AppRegister extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { final IWXAPI msgApi = WXAPIFactory.createWXAPI(context,Api.APPID, false); // 将该app注册到微信 msgApi.registerApp(Api.APPID); } }写法 我是按照这个来的 其他需要在代码中注册的 我也是这么写的3、调起支付调起支付的参数与官网的一样: 需要注意的是packageValue 这个参数,尽量还是自己赋值 Sign=WXPay
4、就是返回结果了
0 | 成功 | 展示成功页面 |
-1 | 错误 | 可能的原因:签名错误、未注册APPID、项目设置APPID不正确、注册的APPID与设置的不匹配、其他异常等。 |
-2 | 用户取消 | 无需处理。发生场景:用户不支付了,点击取消,返回APP。 |
慢慢往下看:
!!!!!!!!!!!!!!!!!!!!!!!!!!!!
一下就是官网没有写的了:
WXPayEntryActivity 这个是在官方DEMO中的 必须放到 wxapi这个包下 格式:包名.wxapi 需要注意
因为是Activity所以要在清单文件中声明
<activity android:name=".wxapi.WXPayEntryActivity" android:exported="true" android:launchMode="singleTop"> <intent-filter> <action android:name="android.intent.action.VIEW"/> <category android:name="android.intent.category.DEFAULT"/> <data android:scheme="你的 APPID"/> </intent-filter> </activity>
一下是AppRegister的声明
<receiver android:name=".service.AppRegister"> <intent-filter> <action android:name="com.tencent.mm.plugin.openapi.Intent.ACTION_REFRESH_WXAPP"/> </intent-filter> </receiver>
自己支付的Acvity没有强制
按照以上去试一下 如果还包 -1 以上没错 检查一下 是debug模式还是release模式 正常来说这两个版本的应用签名是不一样的 当然也可以弄成一样的 方式网上有,我的是一样的 这几天在整理一下发给大家。
keytool -list -v -keystore ******
这个方法获取的签名 和微信官网的工具生成的签名是不一样的 是全部小写 去掉“:” 的 必须使用微信官方提供的工具才行 这就是我遇到的坑!!!!
如果按照以上所说 就没有问题
如果还有哪里需要问的 看不懂的就留言
注:以上操作的前提是 后台是可以的 本人是 IOS可以无限支付 Android只能支付一次之后,研究了不少时间 才知道是 应用签名的缘故!!!