欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

java實現(xiàn)微信掃碼支付功能

 更新時間:2018年07月17日 17:11:37   作者:品學(xué)兼憂  
這篇文章主要為大家詳細(xì)介紹了java實現(xiàn)微信掃碼支付功能,具有一定的參考價值,感興趣的小伙伴們可以參考一下

本文實例為大家分享了java實現(xiàn)微信掃碼支付的具體代碼,供大家參考,具體內(nèi)容如下

1、maven項目的pom.xml中添加如下jar包:

<dependency>
  <groupId>com.github.wxpay</groupId>
  <artifactId>wxpay-sdk</artifactId>
  <version>0.0.3</version>
</dependency>

2、編寫WeWxConfig類:

package com.xx.wxpay;
 
import com.github.wxpay.sdk.WXPayConfig;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;
 
import java.io.InputStream;
 
/**
 * 描述:微信支付配置信息
 *
 * @author ssl
 * @create 2018/04/24 19:25
 */
@Component
public class WeWxConfig implements WXPayConfig {
  @Value("${wechat.public.appid}")
  private String appId;
  @Value("${wechat.merchant}")
  private String mchId;
  @Value("${wechat.public.apikey}")
  private String apiKey;
 
  /**
   * 公眾賬號ID:微信支付分配的公眾賬號ID(企業(yè)號corpid即為此appId)
   *
   * @return
   */
  @Override
  public String getAppID() {
    return appId;
  }
 
  /**
   * 商戶號:微信支付分配的商戶號
   *
   * @return
   */
  @Override
  public String getMchID() {
    return mchId;
  }
 
  /**
   * @return
   */
  @Override
  public String getKey() {
    return apiKey;
  }
 
  @Override
  public InputStream getCertStream() {
    return null;
  }
 
  @Override
  public int getHttpConnectTimeoutMs() {
    return 0;
  }
 
  @Override
  public int getHttpReadTimeoutMs() {
    return 0;
  }
}

3、編寫WeWxPayService:

package com.xx.wxpay;
 
import com.alibaba.fastjson.JSONObject;
import com.github.wxpay.sdk.WXPay;
import com.google.common.collect.Maps;
import com.xx.model.Order;
import com.xx.model.Product;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;
import org.springframework.stereotype.Service;
 
import java.text.MessageFormat;
import java.util.HashMap;
import java.util.Map;
 
/**
 * 描述:
 *
 * @author ssl
 * @create 2018/04/24 20:15
 */
@Service
public class WeWxPayService {
  protected Logger logger = LoggerFactory.getLogger(this.getClass());
  @Value("${project.url}")
  private String projectUrl;
  @Autowired
  private WeWxConfig weWxConfig;
 
 
  /**
   * 統(tǒng)一下單
   *
   * @param product
   * @param order
   * @return
   */
  public Map<String, String> unifiedOrder(Product product, Order order) {
    Map<String, String> data = Maps.newHashMap();
    WXPay wxpay = new WXPay(weWxConfig);
    data.put("body", "XX-" + product.getName());
    data.put("detail", "詳細(xì)信息");
    data.put("out_trade_no", order.getOrderNo());
    data.put("device_info", "WEB");
    data.put("fee_type", "CNY");
    data.put("total_fee", order.getAmount() + "");
    data.put("spbill_create_ip", "127.0.0.1");
    data.put("notify_url", projectUrl + "/base/order/notifyUrl");
    data.put("trade_type", "NATIVE"); // 此處指定為掃碼支付
    data.put("product_id", product.getId() + "");
    try {
      Map<String, String> resp = wxpay.unifiedOrder(data);
      logger.debug(JSONObject.toJSONString(resp));
      return resp;
    } catch (Exception e) {
      e.printStackTrace();
    }
    return null;
  }
 
  /**
   * 訂單查詢
   *
   * @param orderNo:訂單號
   * @return
   */
  public Map<String, String> orderQuery(String orderNo) {
    Map<String, String> reqData = Maps.newHashMap();
    reqData.put("out_trade_no", orderNo);
    WXPay wxpay = new WXPay(weWxConfig);
    try {
      Map<String, String> resp = wxpay.orderQuery(reqData);
      logger.debug(JSONObject.toJSONString(resp));
      return resp;
    } catch (Exception e) {
      e.printStackTrace();
    }
    return null;
  }
 
  public static String getUrl() {
    WXPay wxpay = new WXPay(new WeWxConfig());
    Map<String, String> data = new HashMap<String, String>();
    data.put("body", "上屏名稱");
    data.put("detail", "商品詳情");
    data.put("out_trade_no", "2ab9071b06b9f739b950ddb41db2690d");
    data.put("device_info", "");
    data.put("fee_type", "CNY");
    data.put("total_fee", "1");
    data.put("spbill_create_ip", "218.17.160.245");
    data.put("notify_url", "http://www.example.com/wxpay/notify");
    data.put("trade_type", "NATIVE"); // 此處指定為掃碼支付
    data.put("product_id", "12");
 
    try {
      Map<String, String> resp = wxpay.unifiedOrder(data);
      System.out.println(resp);
    } catch (Exception e) {
      e.printStackTrace();
    }
    return "";
  }
}

4、調(diào)用:

/** 向微信支付系統(tǒng)下單,并得到二維碼返回給用戶 */
Map<String, String> resData = weWxPayService.unifiedOrder(product, order);

5、resData.get("code_url")為微信下單成功后返回的二維碼地址,頁面中用QRCode.js來顯示該二維碼,且該頁面用定時器定時查詢訂單支付狀態(tài)

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • Java zxing生成條形碼和二維嗎代碼實例

    Java zxing生成條形碼和二維嗎代碼實例

    這篇文章主要介紹了java zxing生成條形碼和二維嗎代碼實例,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-03-03
  • 逆波蘭計算器(Java實現(xiàn))

    逆波蘭計算器(Java實現(xiàn))

    這篇文章主要為大家詳細(xì)介紹了Java實現(xiàn)逆波蘭計算器,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-09-09
  • 一文教會你cmd命令運行java程序

    一文教會你cmd命令運行java程序

    這篇文章主要給大家介紹了關(guān)于如何使用cmd命令運行java程序的相關(guān)資料,這是一個非常有用的技能,特別是當(dāng)您需要在沒有集成開發(fā)環(huán)境(IDE)的情況下編寫和運行Java代碼時,需要的朋友可以參考下<BR>
    2024-06-06
  • Java分頁查詢的幾種實現(xiàn)方法舉例

    Java分頁查詢的幾種實現(xiàn)方法舉例

    這篇文章主要給大家介紹了關(guān)于Java分頁查詢的幾種實現(xiàn)方法,分頁是系統(tǒng)中常用到的功能,只要涉及到查詢必定伴隨而來的就是分頁,文中通過實例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2023-06-06
  • Java多線程并發(fā)的指令重排序問題及volatile寫屏障原理詳解

    Java多線程并發(fā)的指令重排序問題及volatile寫屏障原理詳解

    這篇文章主要介紹了Java多線程并發(fā)的指令重排序問題及volatile寫屏障原理詳解,指令重排序是編譯器或處理器為了提高性能而對指令執(zhí)行順序進(jìn)行重新排列的優(yōu)化技術(shù),需要的朋友可以參考下
    2024-01-01
  • Mybatis 動態(tài)sql if 判讀條件等于一個數(shù)字的案例

    Mybatis 動態(tài)sql if 判讀條件等于一個數(shù)字的案例

    這篇文章主要介紹了Mybatis 動態(tài)sql if 判讀條件等于一個數(shù)字的案例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-11-11
  • 解決Java Redis刪除HashMap中的key踩到的坑

    解決Java Redis刪除HashMap中的key踩到的坑

    這篇文章主要介紹了解決Java Redis刪除HashMap中的key踩到的坑,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2021-02-02
  • Java中由substring方法引發(fā)的內(nèi)存泄漏詳解

    Java中由substring方法引發(fā)的內(nèi)存泄漏詳解

    這篇文章主要介紹了Java中由substring方法引發(fā)的內(nèi)存泄漏詳解,涉及substring方法引發(fā)的內(nèi)存泄漏簡介,substring的作用和實現(xiàn)原理等相關(guān)內(nèi)容,具有一定借鑒價值,需要的朋友可以參考下
    2017-12-12
  • Java實現(xiàn)計算器設(shè)計

    Java實現(xiàn)計算器設(shè)計

    這篇文章主要為大家詳細(xì)介紹了Java實現(xiàn)計算器設(shè)計,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-07-07
  • 解決mybatis批量更新(update foreach)失敗的問題

    解決mybatis批量更新(update foreach)失敗的問題

    這篇文章主要介紹了解決mybatis批量更新(update foreach)失敗的問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-11-11

最新評論