xl_echo编辑整理,欢迎转载,转载请声明文章来源。更多IT、编程案例、资料请联系QQ:1280023003
百战不败,依不自称常胜,百败不颓,依能奋力前行。——这才是真正的堪称强大!
微信支付实现主要分为以下几个步骤:
- 创建支付参数
- 转换参数(将其他的格式参数转换为xml格式)
- 获取结果
支付结果显示也是以上三个步骤,以下为代码实现。【我们可以参照微信支付API文档开发】
以下是调用支付,完成支付二维码生成的文档
调用支付,完成支付二维码生成的实体代码
@Override
public Map createNative(String out_trade_no, String total_fee) {
//1、创建参数(可以使用Map封装,微信有工具类能够直接将Map转换为xml)
Map param = new HashMap<>();//创建参数
param.put("appid", 公众号);//公众号
param.put("mch_id", 商家号);//商家号
param.put("nonce_str", WXPayUtil.generateNonceStr());//随机字符串,微信内置Util
param.put("body", "xlecho");//商品描述
param.put("out_trade_no", 雪花算法生成);//商户订单号
param.put("total_fee", 10000);//标价金额
param.put("spbill_create_ip", "127.0.0.1");//终端IP域名,这里只是模拟
param.put("notify_url", "https://blog.csdn.net/xlecho");//通知地址(可以随便写)
param.put("trade_type", "NATIVE");//交易类型
try {
//2、生成要发送的xml
String xmlParam = WXPayUtil.generateSignedXml(param, partnerkey);
System.out.println(xmlParam);
HttpClient client = new HttpClient("https://api.mch.weixin.qq.com/pay/unifiedorder");//参数传输地址
client.setHttps(true);//使用的是https协议
client.setXmlParam(xmlParam);
client.post();
//3、获得结果
String result = client.getContent();
System.out.println(result);
Map<String, String> resultMap = WXPayUtil.xmlToMap(result);
Map map=new HashMap<>();
map.put("code_url", resultMap.get("code_url"));//支付地址
map.put("total_fee", total_fee);//总金额
map.put("out_trade_no",out_trade_no);//订单号
return map;
} catch (Exception e) {
e.printStackTrace();
return new HashMap<>();
}
}
获取支付结果AIP文档
获取支付结果代码
@Override
public Map queryPayStatus(String out_trade_no) {
//创建查询参数
Map param = new HashMap<>();
param.put("appid", 公众账号 ID);//公众账号 ID
param.put("mch_id", 商户号);//商户号
param.put("out_trade_no", 雪花算法生成);//订单号
param.put("nonce_str", WXPayUtil.generateNonceStr());//随机字符串
String url="https://api.mch.weixin.qq.com/pay/orderquery";
//生成并发送xml
try {
String xmlParam = WXPayUtil.generateSignedXml(param, partnerkey);
HttpClient client=new HttpClient(url);
client.setHttps(true);
client.setXmlParam(xmlParam);
client.post();
//获得结果
String result = client.getContent();
Map<String, String> map = WXPayUtil.xmlToMap(result);
System.out.println(map);
return map;
} catch (Exception e) {
e.printStackTrace();
return null;
}
}