android下单代码,Android实现微信支付的统一下单

本文实例为大家分享了Android实现微信支付统一下单的具体代码,供大家参考,具体内容如下

准备工作

申请微信开发者账号,添加应用及申请开通微信支付功能,如

查看开通流程

统一下单的接口文档:

查看接口

开发

①下载sdk:

②可以导入包

在build.gradle文件中,添加如下依赖即可:

dependencies {

compile 'com.tencent.mm.opensdk:wechat-sdk-android-with-mta:+'

}

dependencies {

compile 'com.tencent.mm.opensdk:wechat-sdk-android-without-mta:+'

}

③添加Android Manifest权限

调用统一下单接口

1.务必提交必须的字段:appid,body,mch_id,nonce_str,notify_url, out_trade_no,spbill_create_ip,total_fee,trade_type,sign(都是小写);提交到微信接口时以xml格式提交

2.sign为前面提交的参数按照参数名ASCII码从小到大排序签名拼接起来然后进行MD5运算,再将得到的字符串所有字符转换为大写得到的,如签名生成算法

3.参与生成sign的key为商户账号的密钥,key设置路径如下:微信商户平台(pay.weixin.qq.com)?>账户设置?>API安全?>密钥设置

下面是具体代码(如若查看你的sign生成及提交的xml是否正确可以点击如下:签名生成工具)

//拼接字段,顺序不能变

String A = "appid=你的appID" +

"&body=jinshi" +

"&mch_id=你的商户号" +

"&nonce_str=" + nonce_str +

"&notify_url=http://www.szgsip.com/" +

"&out_trade_no=" + trade_no +

"&spbill_create_ip=192.168.1.1" +

"&total_fee=1" +

"&trade_type=APP";

String key = "你的密钥";

String temp = A + "&key=" + key;

// 生成sign

String sign = MD5.getMessageDigest(temp.getBytes()).toUpperCase();

接下来提交到微信下单的接口上

private void httpThreadxml() {

//组建xml数据

//拼接字段,顺序不能变

xml.append("\n");

xml.append("你的appID\n");

xml.append("

jinshi\n");

xml.append("你的商户号\n");

xml.append("" + nonce_str + "\n");

xml.append("http://www.szgsip.com/\n");

xml.append("" + trade_no + "\n");

xml.append("192.168.1.1\n");

xml.append("1\n");

xml.append("APP\n");

xml.append("" + sign + "\n");

xml.append("");

try {

final byte[] xmlbyte = xml.toString().getBytes("UTF-8");

System.out.println(xml);

URL url = new URL("https://api.mch.weixin.qq.com/pay/unifiedorder");

final HttpURLConnection conn = (HttpURLConnection) url.openConnection();

conn.setConnectTimeout(5000);

conn.setDoOutput(true);// 允许输出

conn.setDoInput(true);

conn.setUseCaches(false);// 不使用缓存

conn.setRequestMethod("POST");

conn.setRequestProperty("Connection", "Keep-Alive");// 维持长连接

conn.setRequestProperty("Charset", "UTF-8");

conn.setRequestProperty("Content-Length",

String.valueOf(xmlbyte.length));

conn.setRequestProperty("Content-Type", "text/xml; charset=UTF-8");

conn.setRequestProperty("X-ClientType", "2");//发送自定义的头信息

conn.getOutputStream().write(xmlbyte);

conn.getOutputStream().flush();

conn.getOutputStream().close();

if (conn.getResponseCode() != 200)

throw new RuntimeException("请求url失败");

InputStream is = conn.getInputStream();// 获取返回数据

// 使用输出流来输出字符(可选)

ByteArrayOutputStream out = new ByteArrayOutputStream();

byte[] buf = new byte[1024];

int len;

while ((len = is.read(buf)) != -1) {

out.write(buf, 0, len);

}

String string = out.toString("UTF-8");

System.out.println(string);

Log.e(" 微信返回数据 ", " --- " + string);

out.close();

} catch (Exception e) {

System.out.println(e);

}

}

注意在调用上面的方法,一定要在子线程中进行

new Thread(new Runnable() {

@Override

public void run() {

httpThreadxml();

}

}).start();

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值