当前位置: 移动技术网 > IT编程>移动开发>Android > Android开发微信APP支付功能的要点小结

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

2019年07月24日  | 移动技术网IT编程  | 我要评论

现在法定结婚年龄是多少,幸灾乐祸的反义词,女服务员醉酒后遭厨师侵犯一夜

基本概念

包名值得是你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能有所帮助。

如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复

相关文章:

验证码:
移动技术网