欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  技术分享

Android微信支付开发源代码_微信支付V3接口Demo下载

程序员文章站 2022-03-01 13:33:44
...

最近公司的项目需要使用微信支付、导致我不得不去研究微信支付、这里跟大家分享一个可以正常支付的demo、但是demo需要开发者配置自己的参数才可以运行起来、首先在Constants.java中设置相关参数、具体请查看该文件注释、同时根据注释修改androidmanifest.xml文件

要保证: 包名和开放平台一致、签名和开放平台一致、并且再公众平台做设置、详情请阅读: http://pay.weixin.qq.com/wiki/doc/api/app.php?chapter=8_5 注意:此条仅仅适用于android、ios不受签名文件限制

要保证回调类WXPayEntryActivity.java文件必须位于包名的wxapi目录下、否则会导致无法回调的情况、注意:此条仅仅适用于android,ios有固定格式、请参考ios demo、微信支付一共可分为3个步骤、App支付生成预支付订单、生成App微信支付参数、调用微信App支付

Android微信支付开发源代码_微信支付V3接口Demo下载


1、App支付生成预支付订单

protected Map<String,String>  doInBackground(Void... params) {
    String url = String.format("https://api.mch.weixin.qq.com/pay/unifiedorder");
    String entity = genProductArgs();

    Log.e("orion",entity);

    byte[] buf = Util.httpPost(url, entity);

    String content = new String(buf);
    Log.e("orion", content);
    Map<String,String> xml=decodeXml(content);

    return xml;
}


2、生成App微信支付参数

private void genPayReq() {
    req.appId = Constants.APP_ID;
    req.partnerId = Constants.MCH_ID;
    req.prepayId = resultunifiedorder.get("prepay_id");
    req.packageValue = "Sign=WXPay";
    req.nonceStr = genNonceStr();
    req.timeStamp = String.valueOf(genTimeStamp());


    List<NameValuePair> signParams = new LinkedList<NameValuePair>();
    signParams.add(new BasicNameValuePair("appid", req.appId));
    signParams.add(new BasicNameValuePair("noncestr", req.nonceStr));
    signParams.add(new BasicNameValuePair("package", req.packageValue));
    signParams.add(new BasicNameValuePair("partnerid", req.partnerId));
    signParams.add(new BasicNameValuePair("prepayid", req.prepayId));
    signParams.add(new BasicNameValuePair("timestamp", req.timeStamp));

    req.sign = genAppSign(signParams);

    sb.append("sign
" req.sign "

");

    show.setText(sb.toString());

    Log.e("orion", signParams.toString());

}


3、调用微信App支付

private void sendPayReq() {
    msgApi.registerApp(Constants.APP_ID);
    msgApi.sendReq(req);
}


另外再说明一下、很多情况下支付结果可能会返回-1、这种情况请仔细检查签名和包名、另外还有一个要说明的问题是、一个签名只能对应一个手机

意思是就是相同的签名在一部手机上只有一个App(一个包名、亲测的)、大家测试的时候注意一下、如果发现代码签名正常、还是返回-1、那么就换一部手机试试

最后给贴上Demo的源代码、希望对大家有用、有兴趣的哥们可以下载看看

源代码下载链接: http://dwtedx.com/download.html?bdkey=s/1kTgW5mv 密码: yjqu