关于微信支付

来源:互联网 发布:起名软件 编辑:程序博客网 时间:2024/05/16 13:55
final String tv_paytype;api = WXAPIFactory.createWXAPI(BuyActivity.this, APP_ID, false);api.registerApp(APP_ID);if (paytype.equals("1")) {    //纯微信    paytype = "4";    tv_paytype = "微信支付";} else {    //都有    paytype = "5";    tv_paytype = "微信支付+K";}BigDecimal b = new BigDecimal(payprice);double payprice1 = b.setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue();OkGoUtils.getInstance().getOrderParameterW(MyApplication.CallResult.appkey, couponNumber, youhuijia, bi, MyApplication.CallResult.email, rowsBean.id + "", rowsBean.name, paytype, MyApplication.CallResult.phone, new Double(Double.valueOf(payprice1 + "") * 100).intValue() + "", "", rowsBean.personalprice + "", "", MyApplication.CallResult.id + "", MyApplication.CallResult.username, new OkGoUtils.HttpEngineListener() {    @Override    public void onSuccess(String s1, HashMap<String, Object> s) {        Log.e("aaaaa", s1);        WxPayBean wxPayBean = parseJsonToBean(s1, WxPayBean.class);        if (wxPayBean.result == 0) {            SortedMap<String, Object> params = new TreeMap<String, Object>();            wxdata = wxPayBean.data;            api = WXAPIFactory.createWXAPI(BuyActivity.this, null);            api.registerApp(APP_ID);            // 检测是否有微信软件            if (isWeixinAvilible(BuyActivity.this)) {                PayReq request = new PayReq();                request.appId = APP_ID;                request.nonceStr = wxdata.nonce_str;                request.packageValue = "Sign=WXPay";                request.partnerId = "*******";                request.prepayId = wxdata.prepay_id;                Log.e("aaaaa", "wxdata.prepay_id:" + wxdata.prepay_id);                request.timeStamp = (System.currentTimeMillis() / 1000) + "";                Log.e("aaaaa", "sj" + request.timeStamp);                Log.e("aaaaa", "nonce_str" + wxdata.nonce_str);                params.put("appid", request.appId);                params.put("partnerid", request.partnerId);//商户号                params.put("prepayid", request.prepayId);                params.put("package", request.packageValue);                params.put("noncestr", request.nonceStr);                params.put("timestamp", request.timeStamp);                String sign = createSign(params);                request.sign = sign;                request.extData = "app data";                Log.e("aaaaa", "wxdata.sign:" + request.sign);                SharedPreferences order = getSharedPreferences("order", 0);                order.edit().putString("name_product", wxdata.name_product).commit();                order.edit().putString("timestamp1", wxdata.timestamp1).commit();                order.edit().putString("trade_no", wxdata.trade_no).commit();                order.edit().putString("style_pay", tv_paytype).commit();                order.edit().putString("useyouhui", discountid).commit();                String string = Utils.Object2String(rowsBean);                order.edit().putString("aa", string);                order.edit().commit();                api.sendReq(request);                finish();            } else {                ToastUtil.show(BuyActivity.this, "亲,您还没有安装微信");            }        }    }    @Override    public void onErroe(okhttp3.Call call, Exception e) {    }});
获取预支付订单后,还要对参数进行MD5签名(服务端和本地做应该是都可以的),否则返回-1会造成支付失败。其他的参数按照文档来就可以了。
原创粉丝点击