国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看av不卡

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

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

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 亚洲一区二区三区四区的 | 91成人小视频 | 看a网址| 精品久 | 国产精品久久久久久久 | 午夜成人免费电影 | 久久成人精品视频 | 国产欧美精品一区二区三区 | 黄a在线观看 | 久久精品视频网站 | www.xxx在线观看 | 精品天堂 | 午夜桃色 | 欧美片网站免费 | 亚洲高清视频网站 | 久久妇女高潮片免费观看 | 亚洲视频一区在线播放 | 亚洲一区自拍 | 精品国产乱码久久久久久牛牛 | 久久国产精品视频 | 国产高清自拍视频 | 亚洲男性天堂 | 日韩理论在线 | 亚洲欧美激情精品一区二区 | 成人免费淫片aa视频免费 | 在线国产一级片 | 欧美黄色一级片免费看 | 国产精品久久99 | 日韩国产一区二区三区 | 国产精品成人久久久久 | 亚洲日本va中文字幕 | 亚洲一区二区久久 | 午夜视频在线观看网站 | 国产精品久久久久久久久免费桃花 | 亚洲美女久久 | 国产高清av在线播放 | 中文精品久久 | 亚洲国产一区二区在线观看 | 国产精品久久久久无码av | 日韩欧美精品在线 | 中文字幕一区在线观看视频 |