Android开发微信APP支付功能的要点小结

作者:daisy 时间:2023-02-22 12:34:20 

基本概念

包名值得是你APP的包,在创建工程时候设置的,需要在微信支付平台上面设置。

签名指的是你生成APK时候所用的签名文件的md5,去掉:全部小写,需要在微信支付平台上面设置。

调试阶段,签名文件可以使用调试用的debug.keystore,签名可以直接在eclipse上面查看,或者用工具查看 ,安装打开输入包名即可查看。

发布的时候一定需要在微信支付平台上面设置成发布用的签名值。

官方的Demo里面的内容并不是全是必须的,甚至只需要有libammsdk.jar就够了,AndroidManifest.xml也不用配置。

AndroidManifest.xml的配置和WXPayEntryActivity.java只是为了能够得到支付回调,可以先不用去管,先调试能不能发起支付。

把libammsdk.jar拷贝到你项目的libs下,并添加jar引用。

代码里发起支付请求:


IWXAPI api = WXAPIFactory.createWXAPI(this, Values.WXPAYAPPID);
api.registerApp(Values.WXPAYAPPID); // 注册APPID,这句很重要,不然不会发起调用

PayReq req = new PayReq();
req.appId = wxPay.appid;// 也就是Values.WXPAYAPPID,如果二者不一致的话是没法发起支付的。
req.partnerId = json.getString("partnerid");
req.prepayId = json.getString("prepayid");
req.nonceStr = json.getString("noncestr");
req.timeStamp = json.getString("timestamp");
req.packageValue = json.getString("package");
req.sign = json.getString("sign");
//req.extData = "";// "app data"; // optional

boolean r = api.sendReq(req);
if(!r) {
Toast.makeText(this,"打开微信支付失败!",Toast.LENGTH_SHORT).show();
}

上面的代码中相关的预下单ID、签名、时间戳等都是由服务端返回了,服务端在生成这些值的时候需要注意二次签名的问题。

正常的话微信客户端就会打开支付页面了,那么就可以再着手回调的事情了。
把WXPayEntryActivity.java拷贝到你项目包下的wxapi文件夹中,比如你的包名是com.xx.shop,那么就放到com.xx.shop.wxapi下面。
设置AndroidManifest.xml,让其支持回调:


<activity
android:name=".wxapi.WXPayEntryActivity"
android:screenOrientation="portrait" 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>

WXPayEntryActivity.java不需要布局文件的,或者可以根据你的需要进行布局。

为了调试方便,把WXPayEntryActivity.java中onResp的代码改为:


@Override
public void onResp(BaseResp resp) {
Log.d("onPayFinish", "onPayFinish, errCode = " + resp.errCode);
if(resp.errCode==0){
 Toast.makeText(this,"支付成功!",Toast.LENGTH_SHORT).show();
}else if(resp.errCode==-1){
 Toast.makeText(this,"支付失败!",Toast.LENGTH_SHORT).show();
}else if(resp.errCode==-2){
 Toast.makeText(this,"取消支付!",Toast.LENGTH_SHORT).show();
}
}

不管能不能支付成功,如果onResp的代码能够被自动执行,那么说明你的AndroidManifest.xml里的配置是对了。

如果你对你的各项参数都很有把稳了(比如你们iOS组的都能支付了,就你Android的还在坑了),那么看一下api.registerApp(Values.WXPAYAPPID);有没有,没错我就坑死在这里了,这种情况下第一次(很偶尔)的能够打开支付界面一下,后面都不行了。

总结

微信为啥不能给点详细的错误代码或者说明之类,就给一个-1,天知道是什么意思,真让人不爽。以上就是Android开发微信APP支付功能要点的全部内容,希望本文的内容对大家开发Android能有所帮助。

标签:android,微信,支付
0
投稿

猜你喜欢

  • Java文件与IO流操作原理详细分析

    2023-08-12 13:13:46
  • java中的final关键字详解及实例

    2022-03-02 11:26:59
  • C#实现让窗体永远在窗体最前面显示的实例

    2022-09-25 21:40:17
  • C#使用FileStream复制一个任意文件

    2022-04-17 19:55:17
  • Java如何解决发送Post请求报Stream closed问题

    2021-12-12 04:20:10
  • Android实现京东上滑效果

    2021-10-11 07:27:11
  • Android带圆形数字进度的自定义进度条示例

    2021-10-04 20:20:01
  • Java编程中的检查型异常与非检查型异常分析

    2023-11-04 13:08:38
  • javascript开发随笔3 开发iframe富文本编辑器的一点体会

    2021-09-25 09:41:28
  • Android的Launcher启动器中添加快捷方式及小部件实例

    2022-10-26 13:05:14
  • 如何利用java控制鼠标操作一些重复的事情

    2021-11-12 12:54:02
  • Android性能之冷启动优化详析

    2022-03-06 13:42:51
  • java开发Dubbo注解Adaptive实现原理

    2022-02-06 11:40:31
  • Flutter Widgets粘合剂CustomScrollView NestedScrollView滚动控件

    2023-07-06 01:24:29
  • java 保留两位小数的几种方法

    2022-05-11 16:38:27
  • Springboot导出文件,前端下载文件方式

    2023-07-21 11:27:05
  • java计算给定字符串中出现次数最多的字母和该字母出现次数的方法

    2022-01-13 03:00:04
  • java内存泄漏与内存溢出关系解析

    2023-08-07 01:58:59
  • Spring MVC整合 freemarker及使用方法

    2022-06-06 16:41:41
  • Spring Cloud 网关服务 zuul 动态路由的实现方法

    2022-04-09 20:17:46
  • asp之家 软件编程 m.aspxhome.com