1.集成微信支付sdk:
在build.gradle中,添加如下依赖
[Java] 查看源文件 复制代码
?
| 1 | compile 'com.tencent.mm.opensdk:wechat-sdk-android-with-mta:+' |
2.设置微信支付回调页面:
路径:项目包名.wxapi
名称:wxpayentryactivity
[Java] 查看源文件 复制代码
?
| 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | public class wxpayentryactivity extends activity implements iwxapieventhandler { private iwxapi api; @override public void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); setcontentview(r.layout.wx_pay_result); api = wxapifactory.createwxapi(this, "你的app_id"); api.handleintent(getintent(), this); } @override protected void onnewintent(intent intent) { super.onnewintent(intent); setintent(intent); api.handleintent(intent, this); } @override public void onresp(baseresp resp) { int errcode = resp.errcode; } } |
errcode:说明
0:成功……展示成功页面。
-1:错误……可能的原因:签名错误、未注册appid、项目设置appid不正确、注册的appid与设置的不匹配、其他异常等。
-2:用户取消……无需处理。发生场景:用户不支付了,点击取消,返回app。
3.设置manifest
[Java] 查看源文件 复制代码
?
| 01 02 03 04 05 06 07 08 09 10 | <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="你的app_id" /> </intent-filter> </activity> |
4.设置md5
[Java] 查看源文件 复制代码
?
| 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 | public class md5 { private md5() { } public final static string getmessagedigest(byte[] buffer) { char hexdigits[] = {'0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f'}; try { messagedigest mdtemp = messagedigest.getinstance("md5"); mdtemp.update(buffer); byte[] md = mdtemp.digest(); int j = md.length; char str[] = new char[j * 2]; int k = 0; for (int i = 0; i < j; i++) { byte byte0 = md[i]; str[k++] = hexdigits[byte0 >>> 4 & 0xf]; str[k++] = hexdigits[byte0 & 0xf]; } return new string(str); } catch (exception e) { return null; } } } |
5.发起微信支付
[Java] 查看源文件 复制代码
?
| 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 | /** * 注册微信支付 */ private void registerwx() { iwxapi wxapi = wxapifactory.createwxapi(context, null); wxapi.registerapp("你的app_id"); } /** * 发起微信支付 */ private void wxpay() { payreq payreq = new payreq(); payreq.appid = "后台返回的appid"; payreq.partnerid = "后台返回的partnerid"; payreq.prepayid = "后台返回的prepayid"; payreq.packagevalue = "后台返回的package"; payreq.noncestr = "后台返回的noncestr"; payreq.timestamp = "后台返回的timestamp"; payreq.signtype = "后台返回的signtype"; payreq.sign = signnum(); wxapi.sendreq(payreq); } /** * 拼接sign */ public static string signnum() { string stringa = "appid=" + "后台返回的appid" + "&noncestr=" + "后台返回的noncestr" + "&package=" + "后台返回的package" + "&partnerid=" + "后台返回的partnerid" + "&prepayid=" + "后台返回的prepayid" + "×tamp=" + "后台返回的timestamp"; string stringsigntemp = stringa + "&key=" + "后台商户服务端的key"; string sign = md5.getmessagedigest(stringsigntemp.getbytes()).touppercase(); return sign; } |