国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 開(kāi)發(fā) > Java > 正文

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

2024-07-14 08:41:38
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

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

1、maven項(xiàng)目的pom.xml中添加如下jar包:

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

2、編寫(xiě)WeWxConfig類(lèi):

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 */@Componentpublic class WeWxConfig implements WXPayConfig {  @Value("${wechat.public.appid}")  private String appId;  @Value("${wechat.merchant}")  private String mchId;  @Value("${wechat.public.apikey}")  private String apiKey;   /**   * 公眾賬號(hào)ID:微信支付分配的公眾賬號(hào)ID(企業(yè)號(hào)corpid即為此appId)   *   * @return   */  @Override  public String getAppID() {    return appId;  }   /**   * 商戶(hù)號(hào):微信支付分配的商戶(hù)號(hào)   *   * @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、編寫(xiě)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 */@Servicepublic 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;  }   /**   * 訂單查詢(xún)   *   * @param orderNo:訂單號(hào)   * @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", "上屏名稱(chēng)");    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)下單,并得到二維碼返回給用戶(hù) */Map<String, String> resData = weWxPayService.unifiedOrder(product, order);

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

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持VeVb武林網(wǎng)。


注:相關(guān)教程知識(shí)閱讀請(qǐng)移步到JAVA教程頻道。
發(fā)表評(píng)論 共有條評(píng)論
用戶(hù)名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 大庆市| 鹤山市| 昭平县| 芒康县| 黄石市| 额尔古纳市| 库尔勒市| 红桥区| 黄龙县| 锡林郭勒盟| 吉林市| 清流县| 兴城市| 新竹县| 双鸭山市| 永顺县| 陵川县| 合作市| 梁山县| 图们市| 太康县| 广平县| 抚远县| 泗洪县| 周口市| 乾安县| 页游| 东城区| 广河县| 西峡县| 荃湾区| 普格县| 永川市| 时尚| 麦盖提县| 远安县| 万年县| 甘德县| 洪洞县| 邯郸市| 商丘市|