溫州仰山鄉(xiāng)企業(yè)轉賬到用戶接口的開通

閱讀 36932  ·  發(fā)布日期 2020-08-24 17:26  ·  溫州優(yōu)光網(wǎng)絡科技有限公司|建站|APP小程序制作|做網(wǎng)站SEO推廣優(yōu)化
【摘要】 這次給大家?guī)砥髽I(yè)轉賬到用戶接口的開通,企業(yè)轉賬到用戶接口開通的注意事項有哪些,下面就是實戰(zhàn)案例,一起來看一下。在微信公眾號支付的API中沒有這個接口,如果企業(yè)需要給用戶轉賬,或者讓用戶提現(xiàn)或者給用戶發(fā)紅包等需要再商戶平臺中的產品中心分別開通。 一、開通功能開通就是點擊一下,很簡單。但需要注意的是支持向用戶轉賬的賬戶和... 【溫州小程序開發(fā),溫州微信公眾號,平陽做網(wǎng)站,平陽網(wǎng)站建設公司,平陽小程序商城制作,昆陽萬全做網(wǎng)站,鰲江水頭小程序,蕭江騰蛟微信公眾號,山門順溪南雁海西南麂鳳臥麻步懷溪網(wǎng)絡網(wǎng)店服務,政采云網(wǎng)店管理服務】...

企業(yè)轉賬到用戶接口的開通

這次給大家?guī)砥髽I(yè)轉賬到用戶接口的開通,企業(yè)轉賬到用戶接口開通的注意事項有哪些,下面就是實戰(zhàn)案例,一起來看一下。
在微信公眾號支付的API中沒有這個接口,如果企業(yè)需要給用戶轉賬,或者讓用戶提現(xiàn)或者給用戶發(fā)紅包等需要再商戶平臺中的產品中心分別開通。
一、開通功能開通就是點擊一下,很簡單。
但需要注意的是支持向用戶轉賬的賬戶和收到用戶付款的賬戶不是同一個,而為了滿足此功能,你需要先用財付通進行充值(交易中心--資金管理--充值)。
二、下載證書證書下載在賬戶中心--API安全,現(xiàn)在需要手機驗證碼和商戶平臺登錄密碼。
下載之后再window上進行安裝,安裝的密碼是商戶號。
安裝之后并將證書放在網(wǎng)站目錄下,用于下一步在代碼中進行驗證。
三、轉賬微信現(xiàn)在提供的demo中沒有這一塊,下面就根據(jù)官方的demo做一些修改。
和之前的例子類似,我們都需要用WxPayData對象來操作我們的參數(shù)。
定義一個TransfersPay對象。
public class TransfersPay {
public string openid {
get;
set;
}
public int amount {
get;
set;
}
public string partner_trade_no {
get;
set;
}
public string re_user_name {
get;
set;
}
public string spbill_create_ip {
get;
set;
}
public WxPayData GetTransfersApiParameters() {
WxPayData apiParam = new WxPayData();
apiParam.SetValue("partner_trade_no", partner_trade_no);
apiParam.SetValue("openid", openid);
apiParam.SetValue("check_name", "NO_CHECK");
apiParam.SetValue("amount", amount);
apiParam.SetValue("desc", "提現(xiàn)");
apiParam.SetValue("spbill_create_ip", spbill_create_ip);
apiParam.SetValue("re_user_name", re_user_name);
return apiParam;
}
}
在官方demo中的WxpayApi中已經包含了公眾號支付的相關方法。
再增加一個Transfers的方法用來轉賬:
public static WxPayData Transfers(WxPayData inputData, int timeOut = 6) {
var url = "https://api.mch.weixin.qq.com/mmpaymkttransfers/promotion/transfers";
inputData.SetValue("mch_appid", WxPayConfig.APPID);
//公眾賬號ID inputData.SetValue("mchid", WxPayConfig.MCHID);
//商戶號 inputData.SetValue("nonce_str", WxPayApi.GenerateNonceStr());
//隨機字符串 inputData.SetValue("sign", inputData.MakeSign());
//簽名 string xml = inputData.ToXml();
var start = DateTime.Now;
string response = HttpService.Post(xml, url, true, timeOut);
// Portal.MVC.Logger.Info("WxPayApi"+ "UnfiedOrder response : " + response);
var end = DateTime.Now;
int timeCost = (int)((end - start).TotalMilliseconds);
WxPayData result = new WxPayData();
result.FromXml(response);
ReportCostTime(url, timeCost, result);
//測速上報 return result;
}
稍微需要注意下的地方就是幾個默認參數(shù)的名字和別的方法不一樣,比如appid和mch_id。
轉賬中是mch_appid和mchid,紅包中又叫wxappid和mch_id。
然后注意到httpService.post方法第三個參數(shù)是帶true的。
也就是會使用到證書。
進入post方法中我們可以看到:
//是否使用證書 if (isUseCert) {
string path = HttpContext.Current.Request.PhysicalApplicationPath;
X509Certificate2 cert = new X509Certificate2(path + WxPayConfig.SSLCERT_PATH, WxPayConfig.SSLCERT_PASSWORD);
request.ClientCertificates.Add(cert);
Log.Debug("WxPayApi", "PostXml used cert");
}
這里使用到了證書的路徑和密碼,密碼即商戶號。
這一切準備好之后就可以controller中進行轉賬了:
   [LoginValid] public ActionResult CashTransfers(string orderNumber) {
//var order = new Order(){
Amount = 1}
;
// var openid = "oBSBmwQjqwjfzQlKsFNjxFLSixxx";
var user = _workContext.CurrentUser;
var order = _paymentService.GetOrderByOrderNumber(orderNumber);
var transfer = new TransfersPay {
openid = user.OpenId, amount = (int) order.Amount*100, partner_trade_no = order.OrderNumber, re_user_name = "stoneniqiu", spbill_create_ip = _webHelper.GetCurrentIpAddress() }
;
var data = transfer.GetTransfersApiParameters();
var result = WxPayApi.Transfers(data);
return Content(result.ToPrintStr());
}
得到結果這樣就實現(xiàn)了轉賬/提現(xiàn)的功能。
發(fā)布在正式的環(huán)境中,我們需要先創(chuàng)建自己的訂單,然后向微信請求轉賬,成功之后對自己的訂單進行處理。
CashTransfers方法稍作調整。
[LoginValid] public ActionResult CashTransfers(string orderNumber) {
var user = _workContext.CurrentUser;
var order = _paymentService.GetOrderByOrderNumber(orderNumber);
if (string.IsNullOrEmpty(user.OpenId)) {
return Json(new PortalResult("請用微信登錄!"));
}
if (order == null || order.OrderState != OrderState.Padding) {
return Json(new PortalResult("訂單有誤!"));
}
var transfer = new TransfersPay {
openid = user.OpenId, amount = (int) order.Amount*100, partner_trade_no = order.OrderNumber, re_user_name = "stoneniqiu", spbill_create_ip = _webHelper.GetCurrentIpAddress() }
;
var data = transfer.GetTransfersApiParameters();
var result = WxPayApi.Transfers(data);
if (result.GetValue("result_code").ToString() == "SUCCESS") {
return Json(new PortalResult(true, "提現(xiàn)成功"));
}
return Json(new PortalResult(false, result.GetValue("return_msg").ToString()));
}
另外一個要注意的是,發(fā)布之后老是出現(xiàn)操作超時的錯誤,建議就是修改超時時間為30秒。
默認的6秒容易超時。
統(tǒng)一下單的時候也是。
public static WxPayData Transfers(WxPayData inputData, int timeOut = 30)如果企業(yè)賬戶的錢沒了,會出現(xiàn)以下提示:
相信看了本文案例你已經掌握了方法,更多精彩請關注php中文網(wǎng)其它相關文章!推薦閱讀:
webpack自動刷新與解析的使用H5的緩存Manifest的使用以上就是企業(yè)轉賬到用戶接口的開通的詳細內容,更多請關注php中文網(wǎng)其它相關文章!
微信
分享相關標簽:
開通 接口 用戶本文原創(chuàng)發(fā)布php中文網(wǎng),轉載請注明出處,感謝您的尊重!
上一篇:
關于微信支付接口調研分享
下一篇:
公眾號支付接口的開發(fā)相關文章相關視頻修改微信號有什么影響嗎?微信中共享實時位置什么意思數(shù)據(jù)庫設計的基本原則是什么?微信小程序調用圖片安全API企業(yè)轉賬到用戶接口的開通Eclipse 創(chuàng)建 Java 接口C++ 接口(抽象類)C# 接口(Interface)Java 接口在線支付的接口說明 [溫州做微信公眾號]