diff --git a/weixin-java-pay/src/main/java/com/github/binarywang/wxpay/service/WxPayService.java b/weixin-java-pay/src/main/java/com/github/binarywang/wxpay/service/WxPayService.java index 34ba8cdc..9097d8ab 100644 --- a/weixin-java-pay/src/main/java/com/github/binarywang/wxpay/service/WxPayService.java +++ b/weixin-java-pay/src/main/java/com/github/binarywang/wxpay/service/WxPayService.java @@ -262,6 +262,19 @@ public interface WxPayService { * @return 生成的二维码的字节数组 */ byte[] createScanPayQrcodeMode1(String productId, File logoFile, Integer sideLength); + + /** + *
+   * 扫码支付模式一生成二维码的方法
+   * 二维码中的内容为链接,形式为:
+   * weixin://wxpay/bizpayurl?sign=XXXXX&appid=XXXXX&mch_id=XXXXX&product_id=XXXXXX&time_stamp=XXXXXX&nonce_str=XXXXX
+   * 其中XXXXX为商户需要填写的内容,商户将该链接生成二维码,如需要打印发布二维码,需要采用此格式。商户可调用第三方库生成二维码图片。
+   * 文档详见: https://pay.weixin.qq.com/wiki/doc/api/native.php?chapter=6_4
+   * 
+ * @param productId 产品Id + * @return 生成的二维码URL连接 + */ + String createScanPayQrcodeMode1(String productId); /** *
diff --git a/weixin-java-pay/src/main/java/com/github/binarywang/wxpay/service/impl/WxPayServiceImpl.java b/weixin-java-pay/src/main/java/com/github/binarywang/wxpay/service/impl/WxPayServiceImpl.java
index dea7a7e8..b480a5f3 100644
--- a/weixin-java-pay/src/main/java/com/github/binarywang/wxpay/service/impl/WxPayServiceImpl.java
+++ b/weixin-java-pay/src/main/java/com/github/binarywang/wxpay/service/impl/WxPayServiceImpl.java
@@ -382,37 +382,44 @@ public class WxPayServiceImpl implements WxPayService {
 
   @Override
   public byte[] createScanPayQrcodeMode1(String productId, File logoFile, Integer sideLength) {
-    //weixin://wxpay/bizpayurl?sign=XXXXX&appid=XXXXX&mch_id=XXXXX&product_id=XXXXXX&time_stamp=XXXXXX&nonce_str=XXXXX
+    String content = createScanPayQrcodeMode1(productId);
+    return createQrcode(content, logoFile, sideLength);
+  }
+  
+  @Override
+  public String createScanPayQrcodeMode1(String productId){
+	//weixin://wxpay/bizpayurl?sign=XXXXX&appid=XXXXX&mch_id=XXXXX&product_id=XXXXXX&time_stamp=XXXXXX&nonce_str=XXXXX
     StringBuilder codeUrl = new StringBuilder("weixin://wxpay/bizpayurl?");
     Map params = Maps.newHashMap();
     params.put("appid", this.getConfig().getAppId());
     params.put("mch_id", this.getConfig().getMchId());
     params.put("product_id", productId);
-    params.put("time_stamp", String.valueOf(System.currentTimeMillis()));
+    params.put("time_stamp", String.valueOf(System.currentTimeMillis() / 1000));//这里需要秒,10位数字
     params.put("nonce_str", String.valueOf(System.currentTimeMillis()));
 
     String sign = this.createSign(params);
     params.put("sign", sign);
 
+    
     for (String key : params.keySet()) {
       codeUrl.append(key + "=" + params.get(key) + "&");
     }
 
     String content = codeUrl.toString().substring(0, codeUrl.length() - 1);
-    if (sideLength == null || sideLength < 1) {
-      return QrcodeUtils.createQrcode(content, logoFile);
-    }
-
-    return QrcodeUtils.createQrcode(content, sideLength, logoFile);
+    log.debug("扫码支付模式一生成二维码的URL:{}",content);
+    return  content;
   }
 
   @Override
   public byte[] createScanPayQrcodeMode2(String codeUrl, File logoFile, Integer sideLength) {
-    if (sideLength == null || sideLength < 1) {
-      return QrcodeUtils.createQrcode(codeUrl, logoFile);
+    return createQrcode(codeUrl, logoFile, sideLength);
+  }
+  
+  private byte[] createQrcode(String content, File logoFile, Integer sideLength) {
+	if (sideLength == null || sideLength < 1) {
+      return QrcodeUtils.createQrcode(content, logoFile);
     }
-
-    return QrcodeUtils.createQrcode(codeUrl, sideLength, logoFile);
+    return QrcodeUtils.createQrcode(content, sideLength, logoFile);
   }
 
   public void report(WxPayReportRequest request) throws WxErrorException {