Explorar el Código

新增微信二维码支付模式一测试Demo

小柒2012 hace 8 años
padre
commit
e8551e54c7

+ 14 - 6
src/main/java/com/itstyle/modules/weixinpay/controller/WeixinPayController.java

@@ -31,7 +31,6 @@ import com.itstyle.modules.weixinpay.util.ConfigUtil;
 import com.itstyle.modules.weixinpay.util.HttpUtil;
 import com.itstyle.modules.weixinpay.util.PayCommonUtil;
 import com.itstyle.modules.weixinpay.util.XMLUtil;
-
 /**
  * 微信支付
  * 创建者 科帮网
@@ -53,15 +52,24 @@ public class WeixinPayController {
     public String   index() {
         return "weixinpay/index";
     }
-	@ApiOperation(value="二维码支付")
-	@RequestMapping(value="qcPay",method=RequestMethod.POST)
-    public String  qcPay(Product product,ModelMap map) {
-		logger.info("二维码支付");
+	@ApiOperation(value="二维码支付(模式一)根据商品ID预先生成二维码")
+	@RequestMapping(value="qcPay1",method=RequestMethod.POST)
+    public String  qcPay1(Product product,ModelMap map) {
+		logger.info("二维码支付(模式一)");
+		weixinPayService.weixinPay1(product);
+		String img= "../qrcode/"+product.getProductId()+".png";
+		map.addAttribute("img", img);
+		return "weixinpay/qcpay";
+    }
+	@ApiOperation(value="二维码支付(模式二)下单并生成二维码")
+	@RequestMapping(value="qcPay2",method=RequestMethod.POST)
+    public String  qcPay2(Product product,ModelMap map) {
+		logger.info("二维码支付(模式二)");
 		//参数自定义  这只是个Demo
 		product.setProductId("20170721");
 		product.setBody("两个苹果八毛钱 ");
 		product.setSpbillCreateIp("192.168.1.66");
-		String message  =  weixinPayService.weixinPay(product);
+		String message  =  weixinPayService.weixinPay2(product);
 		if(Constants.SUCCESS.equals(message)){
 			String img= "../qrcode/"+product.getOutTradeNo()+".png";
 			map.addAttribute("img", img);

+ 11 - 1
src/main/java/com/itstyle/modules/weixinpay/service/IWeixinPayService.java

@@ -14,7 +14,17 @@ public interface IWeixinPayService {
 	 * 2017年7月31日  科帮网 首次创建
 	 *
 	 */
-	String weixinPay(Product product);
+	String weixinPay2(Product product);
+	/**
+	 * 微信支付下单(模式一)
+	 * @Author  科帮网
+	 * @param product  void
+	 * @Date	2017年9月5日
+	 * 更新日志
+	 * 2017年9月5日  科帮网 首次创建
+	 *
+	 */
+	void weixinPay1(Product product);
     /**
      * 微信支付退款
      * @Author  科帮网

+ 25 - 1
src/main/java/com/itstyle/modules/weixinpay/service/impl/WeixinPayServiceImpl.java

@@ -32,7 +32,7 @@ public class WeixinPayServiceImpl implements IWeixinPayService {
 	
 	@SuppressWarnings("rawtypes")
 	@Override
-	public String weixinPay(Product product) {
+	public String weixinPay2(Product product) {
 		logger.info("订单号:{}生成微信支付码",product.getOutTradeNo());
 		String  message = Constants.SUCCESS;
 		try {
@@ -81,6 +81,30 @@ public class WeixinPayServiceImpl implements IWeixinPayService {
 		}
 		return message;
 	}
+	@Override
+	public void weixinPay1(Product product) {
+		//商户支付回调URL设置指引:进入公众平台-->微信支付-->开发配置-->扫码支付-->修改 加入回调URL
+		//注意参数初始化 这只是个Demo
+		SortedMap<Object, Object> packageParams = new TreeMap<Object, Object>();
+		//封装通用参数
+		ConfigUtil.commonParams(packageParams);
+		packageParams.put("product_id", product.getProductId());//真实商品ID
+		packageParams.put("time_stamp", PayCommonUtil.getCurrTime());
+		//生成签名
+		String sign = PayCommonUtil.createSign("UTF-8", packageParams, ConfigUtil.API_KEY);
+		//组装二维码信息(注意全角和半角:的区别 狗日的腾讯)
+    	StringBuffer qrCode = new StringBuffer();
+    	qrCode.append("weixin://wxpay/bizpayurl?");
+    	qrCode.append("appid="+ConfigUtil.APP_ID);
+    	qrCode.append("&mch_id="+ConfigUtil.MCH_ID);
+    	qrCode.append("&nonce_str="+packageParams.get("nonce_str"));
+    	qrCode.append("&product_id="+product.getProductId());
+    	qrCode.append("&time_stamp="+packageParams.get("time_stamp"));
+    	qrCode.append("&sign="+sign);
+    	String imgPath= Constants.QRCODE_PATH+Constants.SF_FILE_SEPARATOR+product.getProductId()+".png";
+    	//生成二维码
+        ZxingUtils.getQRCodeImge(qrCode.toString(), 256, imgPath);
+	}
 	@SuppressWarnings("rawtypes")
 	@Override
 	public String weixinRefund(Product product) {

+ 1 - 1
src/main/resources/templates/weixinpay/css/weixinpay.css

@@ -24,7 +24,7 @@ body {
 
 h2 {
 	border-bottom: solid #1faf0b 2px;
-	width: 200px;
+	width: 170px;
 	height: 25px;
 	margin: 0;
 	float: left;

+ 25 - 2
src/main/resources/templates/weixinpay/index.html

@@ -17,7 +17,8 @@
 			<h2 id="tab3" name="tab">退 款</h2>
 			<h2 id="tab4" name="tab">退 款 查 询</h2>
 			<h2 id="tab5" name="tab">交 易 关 闭</h2>
-			<h2 id="tab6" name="tab">扫码支付</h2>
+			<h2 id="tab6" name="tab">扫码支付(模式一)</h2>
+			<h2 id="tab6" name="tab">扫码支付(模式二)</h2>
 		</div>
 		<form name=alipayment action=../weixinMobile/pay method=post
 			target="_blank">
@@ -170,7 +171,24 @@
 				</dl>
 			</div>
 		</form>
-		<form name=alipayqc action=qcPay method=post
+		<form name=alipayqc1 action=qcPay1 method=post
+			target="_blank">
+			<div id="body6"  class="tab-content" name="divcontent">
+				<dl class="content">
+					<dt>商品ID :</dt>
+					<dd>
+						<input id="productId" name="productId" />
+					</dd>
+					<dd id="btn-dd">
+						<span class="new-btn-login-sp">
+							<button class="new-btn-login" type="submit"
+								style="text-align: center;">生成二维码</button>
+						</span> <span class="note-help">如果您点击“生成二维码”按钮,即表示您预先根据商品ID生成唯一二维码。</span>
+					</dd>
+				</dl>
+			</div>
+		</form>
+		<form name=alipayqc2 action=qcPay2 method=post
 			target="_blank">
 			<div id="body6"  class="tab-content" name="divcontent">
 				<dl class="content">
@@ -243,12 +261,17 @@
 		sNow += String(vNow.getMinutes());
 		sNow += String(vNow.getSeconds());
 		sNow += String(vNow.getMilliseconds());
+		//公众号H5支付
 		document.getElementById("WIDout_trade_no").value =  sNow;
 		document.getElementById("WIDsubject").value = "科帮网测试支付";
 		document.getElementById("WIDtotal_amount").value = "100";
+		//二维码支付模式二
 		document.getElementById("WIDout_trade_no_qc").value =  sNow;
 		document.getElementById("WIDsubject_qc").value = "科帮网测试支付";
 		document.getElementById("WIDtotal_amount_qc").value = "100";
+		//二维码支付模式一
+		document.getElementById("productId").value = "20170518";//保证数据库中存在
+		
 	}
 	GetDateNow();
 </script>