一. 微信开发步骤:
1.申请微信开发者账号
传送门:点击打开链接
2.准备工作(AppID,签名,库,build.gradle的配置)
传送门:点击打开链接
2.1下载库和demo
2.2 导入库
2.3
build.gradle配置
3.导入demo中的 wxapi 的类
注意:wxapi放的位置一定要对,名字不能改。
4.支付界面(先把APP注册到微信)
5.微信支付的业务流程(五星重点!!!仔细认真看)
附一张官方流程图
5.微信支付具体操作
5.1用户点击了下订单按钮, 把订单的信息打包传给后台,怎么和后台交互很多种 方式,就不一一列举了。
1.一般是APP端用http以post请求方式把订单参数传给后台。
2.后台拿到订单信息之后和微信交互(步骤二)。
3.生成一个预支付订单返回给APP端。(步骤三)。
4.APP端拿到预支付订单之后调起微信支付(步骤四)
/** * 用户下订单 */ private void userOrder(final String goodsName, final int price, final int count, final int weixinPay, final int userCode) { Utils.showDialog(this, "正在支付..."); UserOrderInputEntity entity = new UserOrderInputEntity(); entity.setToken("koNNLOadBdYow1voYok1hyweI0NDemVz"); entity.setAmount("0.01"); entity.setCount("1"); entity.setGoodID("1"); entity.setGoodsDetail("\\U57fa\\U7840\\U4f1a\\U5458"); entity.setOrderFrom(2); entity.setOrderType(2); entity.setUserAddressID("0"); entity.setPurchaseID("0"); entity.setPayChannel("2"); ApiService.instance().callApi(entity, new OnApiResultListener() { @Override public void handleApiResult(final int result, final BaseApiResultEntity resultEntity, final Object extra) { runOnUiThread(new Runnable() { @Override public void run() { Message msg = new Message(); msg.what = 1; UserOrderResultEntity resultObj = (UserOrderResultEntity) resultEntity; if (result == ApiService.API_HANDLER_API_SUCCESS) { msg.obj = resultObj; } else if (result == ApiService.API_HANDLER_API_FAILURE) { msg.obj = resultObj; } mHandlers.sendMessage(msg); } }); } }, null); }
private void weXinPay( UserOrderResultEntity orderInfo) { MyApplication.mHandler = mPayRespHandler; PayReq request = new PayReq(); try { request.appId = orderInfo.getAppID(); request.partnerId = orderInfo.getPartneridID(); request.prepayId =orderInfo.getPrepayID(); request.packageValue = "Sign=WXPay"; request.nonceStr = orderInfo.getNonceStr(); request.timeStamp = orderInfo.getTimestamp(); request.sign =orderInfo.getSign(); api.sendReq(request); }catch(Exception e){ Toast.makeText(OrderActivity.this, "异常:"+e.getMessage(), Toast.LENGTH_SHORT).show(); } Toast.makeText(OrderActivity.this, "微信支付跳转中", Toast.LENGTH_SHORT).show(); }
private Handler mHandlers = new Handler() { @Override public void handleMessage(Message msg) { super.handleMessage(msg); switch (msg.what) { case 1: Utils.dismissDialog(); UserOrderResultEntity resultObj = (UserOrderResultEntity) msg.obj; weXinPay(resultObj); showAlertDialog(); break; } } };