潘橋鎮(zhèn)企業(yè)轉(zhuǎn)賬到用戶接口的開(kāi)通

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

企業(yè)轉(zhuǎn)賬到用戶接口的開(kāi)通

這次給大家?guī)?lái)企業(yè)轉(zhuǎn)賬到用戶接口的開(kāi)通,企業(yè)轉(zhuǎn)賬到用戶接口開(kāi)通的注意事項(xiàng)有哪些,下面就是實(shí)戰(zhàn)案例,一起來(lái)看一下。
在微信公眾號(hào)支付的API中沒(méi)有這個(gè)接口,如果企業(yè)需要給用戶轉(zhuǎn)賬,或者讓用戶提現(xiàn)或者給用戶發(fā)紅包等需要再商戶平臺(tái)中的產(chǎn)品中心分別開(kāi)通。
一、開(kāi)通功能開(kāi)通就是點(diǎn)擊一下,很簡(jiǎn)單。
但需要注意的是支持向用戶轉(zhuǎn)賬的賬戶和收到用戶付款的賬戶不是同一個(gè),而為了滿足此功能,你需要先用財(cái)付通進(jìn)行充值(交易中心--資金管理--充值)。
二、下載證書(shū)證書(shū)下載在賬戶中心--API安全,現(xiàn)在需要手機(jī)驗(yàn)證碼和商戶平臺(tái)登錄密碼。
下載之后再window上進(jìn)行安裝,安裝的密碼是商戶號(hào)。
安裝之后并將證書(shū)放在網(wǎng)站目錄下,用于下一步在代碼中進(jìn)行驗(yàn)證。
三、轉(zhuǎn)賬微信現(xiàn)在提供的demo中沒(méi)有這一塊,下面就根據(jù)官方的demo做一些修改。
和之前的例子類似,我們都需要用WxPayData對(duì)象來(lái)操作我們的參數(shù)。
定義一個(gè)TransfersPay對(duì)象。
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中已經(jīng)包含了公眾號(hào)支付的相關(guān)方法。
再增加一個(gè)Transfers的方法用來(lái)轉(zhuǎn)賬:
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);
//公眾賬號(hào)ID inputData.SetValue("mchid", WxPayConfig.MCHID);
//商戶號(hào) inputData.SetValue("nonce_str", WxPayApi.GenerateNonceStr());
//隨機(jī)字符串 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);
//測(cè)速上報(bào) return result;
}
稍微需要注意下的地方就是幾個(gè)默認(rèn)參數(shù)的名字和別的方法不一樣,比如appid和mch_id。
轉(zhuǎn)賬中是mch_appid和mchid,紅包中又叫wxappid和mch_id。
然后注意到httpService.post方法第三個(gè)參數(shù)是帶true的。
也就是會(huì)使用到證書(shū)。
進(jìn)入post方法中我們可以看到:
//是否使用證書(shū) 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");
}
這里使用到了證書(shū)的路徑和密碼,密碼即商戶號(hào)。
這一切準(zhǔn)備好之后就可以controller中進(jìn)行轉(zhuǎn)賬了:
   [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());
}
得到結(jié)果這樣就實(shí)現(xiàn)了轉(zhuǎn)賬/提現(xiàn)的功能。
發(fā)布在正式的環(huán)境中,我們需要先創(chuàng)建自己的訂單,然后向微信請(qǐng)求轉(zhuǎn)賬,成功之后對(duì)自己的訂單進(jìn)行處理。
CashTransfers方法稍作調(diào)整。
[LoginValid] public ActionResult CashTransfers(string orderNumber) {
var user = _workContext.CurrentUser;
var order = _paymentService.GetOrderByOrderNumber(orderNumber);
if (string.IsNullOrEmpty(user.OpenId)) {
return Json(new PortalResult("請(qǐng)用微信登錄!"));
}
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()));
}
另外一個(gè)要注意的是,發(fā)布之后老是出現(xiàn)操作超時(shí)的錯(cuò)誤,建議就是修改超時(shí)時(shí)間為30秒。
默認(rèn)的6秒容易超時(shí)。
統(tǒng)一下單的時(shí)候也是。
public static WxPayData Transfers(WxPayData inputData, int timeOut = 30)如果企業(yè)賬戶的錢沒(méi)了,會(huì)出現(xiàn)以下提示:
相信看了本文案例你已經(jīng)掌握了方法,更多精彩請(qǐng)關(guān)注php中文網(wǎng)其它相關(guān)文章!推薦閱讀:
webpack自動(dòng)刷新與解析的使用H5的緩存Manifest的使用以上就是企業(yè)轉(zhuǎn)賬到用戶接口的開(kāi)通的詳細(xì)內(nèi)容,更多請(qǐng)關(guān)注php中文網(wǎng)其它相關(guān)文章!
微信
分享相關(guān)標(biāo)簽:
開(kāi)通 接口 用戶本文原創(chuàng)發(fā)布php中文網(wǎng),轉(zhuǎn)載請(qǐng)注明出處,感謝您的尊重!
上一篇:
關(guān)于微信支付接口調(diào)研分享
下一篇:
公眾號(hào)支付接口的開(kāi)發(fā)相關(guān)文章相關(guān)視頻修改微信號(hào)有什么影響嗎?微信中共享實(shí)時(shí)位置什么意思數(shù)據(jù)庫(kù)設(shè)計(jì)的基本原則是什么?微信小程序調(diào)用圖片安全API企業(yè)轉(zhuǎn)賬到用戶接口的開(kāi)通Eclipse 創(chuàng)建 Java 接口C++ 接口(抽象類)C# 接口(Interface)Java 接口在線支付的接口說(shuō)明 [溫州做微信公眾號(hào)]