一、准备工作
去微信开发者中心下载(扫码支付,里面的大部分代码是可以用的)
https://pay.weixin.qq.com/wiki/doc/api/micropay.php?chapter=11_1
选择UTF-8的版本copy到你的项目里面
找到Configure.java的类修改成public static String PAY_API = "https://api.mch.weixin.qq.com/pay/unifiedorder";
下面正式进入代码部分
1 //初始化配置信息 2 WXPay.initSDKConfiguration( 3 "MsfsfsafsfsfdsafsfC",//商品平台上的密码 4 "wxb21618828c323242",//appid 5 "1234235",//商户ID 6 "", 7 "d:/apiclient_cert.p12",//证书,在商户平台上下载 8 //"/Users/Desktop/windowsserver/apiclient_cert.p12", 9 "3122421501"); 10 11 12 SimpleDateFormat dateFormat = new SimpleDateFormat("yyyyMMddHHmmss"); 13 Date date1 = new Date(); 14 long datetime = date1.getTime()+3600*1000; 15 String generateTime = dateFormat.format(date1);//yyyyMMddHHmmss 订单生成时间 16 String failureTime = dateFormat.format(new Date(datetime));//yyyyMMddHHmmss 失效时间 17 ScanPayReqData reqData = new ScanPayReqData(shopOrder.getHdbt(), "旅游商品", 18 shopOrder.getOrdercode(), priec, 19 "", "192.168.0.1", 20 generateTime, 21 failureTime, 22 "", 23 "http://dsds/notify/WxPayNotify.action",//收到通知地址 24 "APP"); 25 String resdata= WXPay.requestScanPayService(reqData); 26 //签名验证 27 Map<String,Object> map = XMLParser.getMapFromXML(resdata); 28 if(Signature.checkIsSignValidFromResponseString(resdata)){ 29 30 if("SUCCESS".equals(map.get("return_code"))&&"SUCCESS".equals(map.get("result_code"))){ 31 jsonmap.put("appid", Configure.getAppid()); 32 jsonmap.put("prepayid", map.get("prepay_id").toString()); 33 jsonmap.put("package", "Sign=WXPay"); 34 jsonmap.put("partnerid", Configure.getMchid()); 35 jsonmap.put("noncestr", RandomStringGenerator.getRandomStringByLength(32)); 36 jsonmap.put("timestamp", new Date().getTime()/1000+""); 37 jsonmap.put("sign", Signature.getSign(jsonmap)); 38 //将jsonmap返回给APP他们用这些参数就可以完成调起微信支付进行支付了 39 40 } 41 42 }else{ 43 System.out.println("签名验证失败"); 44 jsonmapT.put("result", "-1"); 45 jsonmapT.put("message", "签名验证失败"); 46 }
如有不明白的地方请留言。一些请求参数和返回的参数,参考官网文档