企业微信支付方式与普通微信有所不同,而网上的关于c#的企业微信代码又少之又少,问微信客服一问三不知,所幸经过4天研究终于能肝出来算是给自己留档备份,下面是方式:
首先是传统艺能:能拿到的老三样票据: *
APPID:绑定支付的APPID(必须配置)
* MCHID:商户号(必须配置)
* KEY:商户支付密钥,参考开户邮件设置(必须配置)
* APPSECRET:公众帐号secert(仅JSAPI支付的时候需要配置)
*/
public const string APPID = "企业微信的id(企业ID) ";
public const string MCHID = "商户号 “;
public const string KEY = “这个key是公众平台一个xxxlv3的回调key,和平常的不同 “;
public const string APPSECRET = " 企业微信工作台的SECRET,而这个工作台要自己新添加”;
然后在新添加的工作台上设置网页授权(注:一定要设置里面的需完成域名归属验证不然会报错)
然后就是实际使用了,大体上和正常的没什么不同但是很重要的一点是要设置验证,代码如下
function fPostCharge() {
alert(location.href.split(’#’)[0])
var urltest= encodeURIComponent(location.href.split(’#’)[0]);
alert(urltest);
var auuu = location.href.split(’#’)[0];
var vChargeVal = $(”#ChargeVal”).val();
vChargeVal = parseFloat(vChargeVal);
if (vChargeVal > 0) {
$.messager.progress({
title: “”,
msg: “正在调用微信支付接口,请稍后…”,
});
$.ajax({
type: "post",
data: {
totalfee: vChargeVal,
urltest: urltest,
},
url: "/Home/MeterRecharge",
success: function (json) {
$.messager.progress('close');//记得关闭
//var json = eval("(" + msg + ")");//转换后的JSON对象
//onBridgeReady(json); data: "totalfee=" + vChargeVal,
//
wx.config({
debug: true, // 开启调试模式,调用的所有api的返回值会在客户端alert出来
appId: json.appId, // 必填,企业微信的corpID
timestamp: json.timeStamp, // 必填,生成签名的时间戳
nonceStr: json.nonceStr, // 必填,生成签名的随机串
signature: json.signature,// 必填,签名
jsApiList: ['getBrandWCPayRequest']
});
wx.ready(() => {
alert("aooooo");
});
},
error: function () {
$.messager.progress('close');//记得关闭
$.messager.alert("提示", '调用微信支付模块失败,请稍后再试。', 'info')
}
})
}
else {
alert("房间名或者充值金额不可以为空或者为负数,请确认后再试.")
}
}
可以看到,这里有个signature签名,这个是最难的一步,这里安装文档要拿的参数不谈,最重要的是url从前转后要转码,后台拿到以后在解码,组成字符串后,然后再用hsa1组合(注意:sha1一定要去企业微信转码的对照网站对比才能用)
public string Sha1(string str)
{
var buffer = Encoding.UTF8.GetBytes(str);
var data = SHA1.Create().ComputeHash(buffer);
var sb = new StringBuilder();
foreach (var t in data)
{
sb.Append(t.ToString("X2"));
}
return sb.ToString();
}
这个就是组好连接然后扔进sha1的连接,noncestr是随机字符串
var poi = "jsapi_ticket=" + ticket + "&noncestr=6655×tamp=" + times + "&url=" + str;
获取的token之类的连接和普通的公众号我记得也有所不同,要注意点