一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - Java教程 - java實現微信企業付款到個人

java實現微信企業付款到個人

2021-06-02 14:17Andyzty Java教程

這篇文章主要為大家詳細介紹了java實現微信企業付款到個人功能,具有一定的參考價值,感興趣的小伙伴們可以參考一下

微信企業付款到個人的php實現代碼,供大家參考,具體內容如下

企業付款實現企業向個人付款,實現付款到用戶零錢。項目實現了企業付款到個人和企業付款個人賬單查詢。代碼包括簽名實現,雙向證書驗證,付款功能等

支付流程

付款功能

企業付款到授權用戶的零錢

企業付款注意注意:
1、所有接口需要雙向證書驗證
2、需要設置接口秘鑰,簽名用

詳細參考:微信企業付款開發文檔

項目結構

和上一篇一樣,需要配置證書以及商戶id、appid等

java實現微信企業付款到個人

支付功能

包含企業轉賬和企業轉賬查詢

 

java" id="highlighter_456200">
?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
package org.andy.wxpay.controller;
 
import java.util.hashmap;
import java.util.map;
 
import javax.servlet.http.httpservletrequest;
import javax.servlet.http.httpservletresponse;
 
import org.andy.wxpay.model.jsonresult;
import org.andy.wxpay.model.responsedata;
import org.andy.wxpay.utils.collectionutil;
import org.andy.wxpay.utils.configutil;
import org.andy.wxpay.utils.httputils;
import org.andy.wxpay.utils.payutil;
import org.andy.wxpay.utils.serializerfeatureutil;
import org.andy.wxpay.utils.stringutil;
import org.andy.wxpay.utils.webutil;
import org.andy.wxpay.utils.xmlutil;
import org.apache.log4j.logger;
import org.springframework.stereotype.controller;
import org.springframework.web.bind.annotation.requestmapping;
import org.springframework.web.bind.annotation.requestmethod;
 
import com.alibaba.fastjson.json;
 
/**
 * 創建時間:2016年11月9日 下午5:49:00
 *
 * @author andy
 * @version 2.2
 */
 
@controller
@requestmapping("/transfer")
public class transfercontroller {
 
 private static final logger log = logger.getlogger(transfercontroller.class);
 
 private static final string transfers_pay = "https://api.mch.weixin.qq.com/mmpaymkttransfers/promotion/transfers"; // 企業付款
 
 private static final string transfers_pay_query = "https://api.mch.weixin.qq.com/mmpaymkttransfers/gettransferinfo"; // 企業付款查詢
 
 private static final string app_id = configutil.getproperty("wx.appid");
 
 private static final string mch_id = configutil.getproperty("wx.mchid");
 
 private static final string api_secret = configutil.getproperty("wx.api.secret");
 
 /**
 * 企業向個人支付轉賬
 * @param request
 * @param response
 * @param openid 用戶openid
 * @param callback
 */
 @requestmapping(value = "/pay", method = requestmethod.post)
 public void transferpay(httpservletrequest request, httpservletresponse response, string openid, string callback) {
 log.info("[/transfer/pay]");
 //業務判斷 openid是否有收款資格
 
 map<string, string> restmap = null;
 try {
  map<string, string> parm = new hashmap<string, string>();
  parm.put("mch_appid", app_id); //公眾賬號appid
  parm.put("mchid", mch_id); //商戶號
  parm.put("nonce_str", payutil.getnoncestr()); //隨機字符串
  parm.put("partner_trade_no", payutil.gettransferno()); //商戶訂單號
  parm.put("openid", openid); //用戶openid
  parm.put("check_name", "no_check"); //校驗用戶姓名選項 option_check
  //parm.put("re_user_name", "安迪"); //check_name設置為force_check或option_check,則必填
  parm.put("amount", "100"); //轉賬金額
  parm.put("desc", "測試轉賬到個人"); //企業付款描述信息
  parm.put("spbill_create_ip", payutil.getlocalip(request)); //服務器ip地址
  parm.put("sign", payutil.getsign(parm, api_secret));
 
  string restxml = httputils.posts(transfers_pay, xmlutil.xmlformat(parm, false));
  restmap = xmlutil.xmlparse(restxml);
 } catch (exception e) {
  log.error(e.getmessage(), e);
 }
 
 if (collectionutil.isnotempty(restmap) && "success".equals(restmap.get("result_code"))) {
  log.info("轉賬成功:" + restmap.get("err_code") + ":" + restmap.get("err_code_des"));
  map<string, string> transfermap = new hashmap<>();
  transfermap.put("partner_trade_no", restmap.get("partner_trade_no"));//商戶轉賬訂單號
  transfermap.put("payment_no", restmap.get("payment_no")); //微信訂單號
  transfermap.put("payment_time", restmap.get("payment_time")); //微信支付成功時間
  webutil.response(response,
   webutil.packjsonp(callback,
    json.tojsonstring(new jsonresult(1, "轉賬成功", new responsedata(null, transfermap)),
     serializerfeatureutil.features)));
 }else {
  if (collectionutil.isnotempty(restmap)) {
  log.info("轉賬失敗:" + restmap.get("err_code") + ":" + restmap.get("err_code_des"));
  }
  webutil.response(response, webutil.packjsonp(callback, json
   .tojsonstring(new jsonresult(-1, "轉賬失敗", new responsedata()), serializerfeatureutil.features)));
 }
 }
 
 /**
 * 企業向個人轉賬查詢
 * @param request
 * @param response
 * @param tradeno 商戶轉賬訂單號
 * @param callback
 */
 @requestmapping(value = "/pay/query", method = requestmethod.post)
 public void orderpayquery(httpservletrequest request, httpservletresponse response, string tradeno,
  string callback) {
 log.info("[/transfer/pay/query]");
 if (stringutil.isempty(tradeno)) {
  webutil.response(response, webutil.packjsonp(callback, json
   .tojsonstring(new jsonresult(-1, "轉賬訂單號不能為空", new responsedata()), serializerfeatureutil.features)));
 }
 
 map<string, string> restmap = null;
 try {
  map<string, string> parm = new hashmap<string, string>();
  parm.put("appid", app_id);
  parm.put("mch_id", mch_id);
  parm.put("partner_trade_no", tradeno);
  parm.put("nonce_str", payutil.getnoncestr());
  parm.put("sign", payutil.getsign(parm, api_secret));
 
  string restxml = httputils.posts(transfers_pay_query, xmlutil.xmlformat(parm, true));
  restmap = xmlutil.xmlparse(restxml);
 } catch (exception e) {
  log.error(e.getmessage(), e);
 }
 
 if (collectionutil.isnotempty(restmap) && "success".equals(restmap.get("result_code"))) {
  // 訂單查詢成功 處理業務邏輯
  log.info("訂單查詢:訂單" + restmap.get("partner_trade_no") + "支付成功");
  map<string, string> transfermap = new hashmap<>();
  transfermap.put("partner_trade_no", restmap.get("partner_trade_no"));//商戶轉賬訂單號
  transfermap.put("openid", restmap.get("openid")); //收款微信號
  transfermap.put("payment_amount", restmap.get("payment_amount")); //轉賬金額
  transfermap.put("transfer_time", restmap.get("transfer_time")); //轉賬時間
  transfermap.put("desc", restmap.get("desc")); //轉賬描述
  webutil.response(response, webutil.packjsonp(callback, json
   .tojsonstring(new jsonresult(1, "訂單轉賬成功", new responsedata(null, transfermap)), serializerfeatureutil.features)));
 }else {
  if (collectionutil.isnotempty(restmap)) {
  log.info("訂單轉賬失敗:" + restmap.get("err_code") + ":" + restmap.get("err_code_des"));
  }
  webutil.response(response, webutil.packjsonp(callback, json
   .tojsonstring(new jsonresult(-1, "訂單轉賬失敗", new responsedata()), serializerfeatureutil.features)));
 }
 }
 
}

其他代碼參考上一篇 微信支付-app支付服務端詳解

支付結果

支付成功后會將金額支付到用戶余額中

java實現微信企業付款到個人

功能實際很簡單,需要自己看一下文檔。

源代碼地址:微信企業付款

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持服務器之家。

原文鏈接:https://blog.csdn.net/fengshizty/article/details/53204566

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 国产亚洲sss在线观看 | 欧美日本一道高清免费3区 欧美人做人爱a全程免费 | 特级夫妻大片免费在线播放 | 四虎最新免费网址 | 日韩视频在线观看中字 | 国产精品欧美亚洲韩国日本 | 4hc44四虎永久地址链接 | 日本特级a禁片在线播放 | 含羞草传媒每天免费一次破解 | 99re这里只有精品视频在线观看 | 毛片大全免费看 | 亚洲第一网色综合久久 | 99九九成人免费视频精品 | 欧美一级特黄特色大片免费 | 天作谜案免费完整版在线观看 | 美女黄金大片视频免费看 | 国产精品密播放国产免费看 | 牧教师| 91免费播放人人爽人人快乐 | 欧美丝袜foot job | 亚洲一区二区三区不卡在线播放 | 亚洲精品tv久久久久久久久久 | 好大好硬好湿好紧h | 动漫美女羞羞 | 四虎影院免费视频 | 99免费精品| 亚欧美色| 成人国产一区二区 | 韩国悲惨事件30无删减在线 | 免费理伦片手机在线播放 | 人人擦 | 窝窝午夜精品一区二区 | 久草草在线视视频 | 99精彩视频在线观看 | 日本视频在线免费看 | 三级伦理在线播放 | 国产精品免费久久久久影院 | 男人疯狂进女人下部视频动漫 | 3d动漫美女被吸乳羞羞视频 | 免费观看无人区完整版 | 91大神第九部红酒气质女 |