微信支付接口调用H5(C#)

H5支付是指商户在微信客户端外的移动端网页展示商品或服务,用户在前述页面确认使用微信支付时,商户发起本服务呼起微信客户端进行支付。主要用于触屏版的手机浏览器请求微信支付的场景。可以方便的从外部浏览器唤起微信支付。

//微信H5支付
public string WeChatH5Pay(string OrderID, string Total)/ /这里的OrderID是我传过来的订单号,Total是订单金额。
{
OrderID = OrderID + DateTime.Now.ToString("fff");
//微信配置的参数
WXConfig wx = new WXConfig();
string url2 = "http://wap.ilife.cn";
//换算金额,以分为单位
int TotalMoney = Convert.ToInt32(Convert.ToDecimal(Total) * 100);
//string redirect_uri = HttpUtility.UrlEncode(url);
string redirect_uri = HttpUtility.UrlEncode(url2);
Senparc.Weixin.MP.TenPayLibV3.RequestHandler packageReqHandler = new Senparc.Weixin.MP.TenPayLibV3.RequestHandler(null);
//APPID
packageReqHandler.SetParameter("appid", wx.GetAppID());
//商户号
packageReqHandler.SetParameter("mch_id", wx.GetMchID());
//随机字符串
packageReqHandler.SetParameter("nonce_str", TenPayUtil.GetNoncestr());
//body商品描述
packageReqHandler.SetParameter("body", "商品描述");
//订单号
packageReqHandler.SetParameter("out_trade_no", OrderID);
//金额,以分为单位
packageReqHandler.SetParameter("total_fee", TotalMoney.ToString());
//终端IP
packageReqHandler.SetParameter("spbill_create_ip", GetIP());
//回调地址
packageReqHandler.SetParameter("notify_url", "回调地址");
//微信内部为JSAPI 微信H5为MWEB
packageReqHandler.SetParameter("trade_type", "MWEB");
//注:key为商户平台设置的密钥key
packageReqHandler.SetParameter("sign", packageReqHandler.CreateMd5Sign("key", wx.GetKey()));
string data = packageReqHandler.ParseXML();
var urlFormat = "https://api.mch.weixin.qq.com/pay/unifiedorder";
var result2 = Common.HttpHelper.HttpPost(urlFormat, null, packageReqHandler.ParseXML());
//获取微信支付的mweb_url
string mweb_url = "";
var res = XDocument.Parse(result2);
if (res.Element("xml").Element("return_code").Value == "SUCCESS")
{
mweb_url = res.Element("xml").Element("mweb_url").Value;

}
else
{
return res.ToString();
}
//string parameters = GetJsApiParameters(prepay_id);
return mweb_url;

}

这里返回的 mweb_url 就是调用微信支付的的url

具体的流程参考微信开发文档 https://pay.weixin.qq.com/wiki/doc/api/H5.php?chapter=15_4

猜你喜欢

转载自www.cnblogs.com/Lance88/p/10234787.html