成人午夜视频全免费观看高清-秋霞福利视频一区二区三区-国产精品久久久久电影小说-亚洲不卡区三一区三区一区

springboot整合微信支付sdk過程的示例分析

這篇文章主要為大家展示了“springboot整合微信支付sdk過程的示例分析”,內(nèi)容簡而易懂,條理清晰,希望能夠幫助大家解決疑惑,下面讓小編帶領(lǐng)大家一起研究并學(xué)習(xí)一下“springboot整合微信支付sdk過程的示例分析”這篇文章吧。

金湖網(wǎng)站建設(shè)公司創(chuàng)新互聯(lián),金湖網(wǎng)站設(shè)計制作,有大型網(wǎng)站制作公司豐富經(jīng)驗(yàn)。已為金湖近千家提供企業(yè)網(wǎng)站建設(shè)服務(wù)。企業(yè)網(wǎng)站搭建\成都外貿(mào)網(wǎng)站制作要多少錢,請找那個售后服務(wù)好的金湖做網(wǎng)站的公司定做!

前言

之前做的幾個微信小程序項目,大部分客戶都有要在微信小程序前端提現(xiàn)的需求。提現(xiàn)功能的實(shí)現(xiàn),自然使用企業(yè)付款接口,不過這個功能開通比較麻煩,要滿足3個條件;

之前實(shí)現(xiàn)過幾個微信支付的接口,不過都是自己碼的代碼,從網(wǎng)上找找拼湊,覺得看起來不舒服~_~ 于是乎找到了微信官方提供的支付sdk。這里用的是java版本,springboot整合java

下載sdk,引入項目

這里可以直接下載官方提供的sdk,然后將幾個java類拷貝到你的項目,也可以直接引入maven依賴,這里是直接將Java類拷貝到我項目的。

<!-- https://mvnrepository.com/artifact/com.github.wxpay/WXPay-SDK-Java -->
<dependency>
 <groupId>com.github.wxpay</groupId>
 <artifactId>WXPay-SDK-Java</artifactId>
 <version>0.0.4</version>
</dependency>

如圖,打開sdk項目,會有以下幾個文件

springboot整合微信支付sdk過程的示例分析

配置config文件

通過它的readme文件,可以看到幾個demo。但是首先我們需要配置相關(guān)的信息。新建一個java類繼承原先的配置類。

package com.github.wxpay.sdk;
import java.io.InputStream;
/**
 * @author Ean
 * @date 2019/7/2
 */
public class MyConfig extends WXPayConfig {
 /**
  * 獲取 App ID
  *
  * @return App ID
  */
 @Override
 String getAppID() {
  return "wxdb70c7c6b******";
 }
 /**
  * 獲取 Mch ID
  *
  * @return Mch ID
  */
 @Override
 String getMchID() {
  return "1522050000";
 }
 /**
  * 獲取 API 密鑰
  *
  * @return API密鑰
  */
 @Override
 String getKey() {
  return "xxxxxxxxxxxxxxxx";
 }
 /**
  * 獲取商戶證書內(nèi)容
  * 這里是讀取resources根目錄下面的證書文件
  * @return 商戶證書內(nèi)容
  */
 @Override
 InputStream getCertStream() {
  InputStream certStream = Thread.currentThread().getContextClassLoader().getResourceAsStream("apiclient_cert.p12");
  return certStream;
 }
 /**
  * 獲取WXPayDomain, 用于多域名容災(zāi)自動切換
  * 實(shí)現(xiàn)這個接口
  * @return
  */
 @Override
 public IWXPayDomain getWXPayDomain() {
  IWXPayDomain iwxPayDomain = new IWXPayDomain() {
   public void report(String domain, long elapsedTimeMillis, Exception ex) {
   }
   public DomainInfo getDomain(WXPayConfig config) {
    return new IWXPayDomain.DomainInfo(WXPayConstants.DOMAIN_API, true);
   }
  };
  return iwxPayDomain;
 }
}

提現(xiàn)接口開發(fā)

寫一個提現(xiàn)接口,傳入提現(xiàn)相關(guān)的參數(shù)

 /**
  *@描述 提現(xiàn)接口
  *@參數(shù) [param]
  *@創(chuàng)建人 Eangaie
  *@創(chuàng)建時間 2019/7/2
  */
 @PostMapping("despot")
 public Result despot(@RequestBody Map<String,Object> param) throws Exception {
  MyConfig config = new MyConfig();
  WXPay wxpay = new WXPay(config,1);
  SortedMap<String, String> sendData;
  sendData=getDespData(param);
  sendData.put("sign", WXPayUtil.generateSignature(sendData,key , WXPayConstants.SignType.MD5));
  Map<String,String> resData=wxpay.despot(sendData,config.getHttpConnectTimeoutMs(),config.getHttpReadTimeoutMs());
  return ResultUtil.success(resData);
 } 
 private SortedMap<String, String> getDespData(Map<String, Object> param) {
  SortedMap<String, String> params = new TreeMap<String, String>();
  String nonce_str=commonUtil.gen32RandomString();
  String partner_trade_no=commonUtil.createNo();
  String openid= String.valueOf(param.get("openid"));
  String check_name="NO_CHECK";
  String amount= String.valueOf(param.get("amount"));
  String desc="用戶提現(xiàn)";
  String spbill_create_ip= String.valueOf(param.get("spbill_create_ip"));
  params.put("mch_appid",mch_appid);
  params.put("mchid",mchid);
  params.put("nonce_str",nonce_str);
  params.put("partner_trade_no",partner_trade_no);
  params.put("openid",openid);
  params.put("check_name",check_name);
  params.put("amount", amount);
  params.put("desc", desc);
  params.put("spbill_create_ip", spbill_create_ip);
  return params;
 }

這里的一些變量,比如商戶id,appid這些直接通過spring掃描application配置文件自動注入,接口參數(shù)主要是傳過來openid,跟提現(xiàn)金額。其實(shí)這個spbill_create_ip字段也可以固定的。

一開始是因?yàn)殚_發(fā)一直遇到IP不允許訪問的問題,最后發(fā)現(xiàn)。。是商戶號配置鍋,商戶號記得把配置允許IP訪問這個地方關(guān)了!,不然就一直不能訪問接口

提現(xiàn)成功返回,但是程序也會報500,因?yàn)閜rocessResponseXml這個函數(shù)里面有校驗(yàn)返回值。但是提現(xiàn)這里用不到,可以注釋掉代碼。

 else if (return_code.equals(WXPayConstants.SUCCESS)) {
   return respData;
//   if (this.isResponseSignatureValid(respData)) {
//    return respData;
//   }
//   else {
//    throw new Exception(String.format("Invalid sign value in XML: %s", xmlStr));
//   }
  }

至此,提現(xiàn)接口完成。。

以上是“springboot整合微信支付sdk過程的示例分析”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對大家有所幫助,如果還想學(xué)習(xí)更多知識,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道!

標(biāo)題名稱:springboot整合微信支付sdk過程的示例分析
網(wǎng)站地址:http://jinyejixie.com/article32/pshppc.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供關(guān)鍵詞優(yōu)化、全網(wǎng)營銷推廣、網(wǎng)站收錄、網(wǎng)頁設(shè)計公司、動態(tài)網(wǎng)站、自適應(yīng)網(wǎng)站

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

搜索引擎優(yōu)化
夏津县| 洛阳市| 曲麻莱县| 资兴市| 太原市| 奉节县| 乃东县| 宝清县| 裕民县| 辽中县| 陆良县| 九龙县| 油尖旺区| 怀安县| 贵德县| 香格里拉县| 西贡区| 清苑县| 原平市| 五台县| 华亭县| 武隆县| 绥滨县| 蒲城县| 井冈山市| 通化市| 丽水市| 石阡县| 绥化市| 昭通市| 嘉定区| 澄迈县| 汉中市| 孙吴县| 于都县| 西宁市| 锦州市| 大余县| 黎川县| 株洲市| 忻城县|