本人开发时已有微信公众平台和微信商户平台的账号和密码,申请这些账号的步骤宝宝就省啦
一.前期准备
1.微信公众平台: 接口权限-网页授权-下设置网页授权域名
2.我只写到域名,下载下来的文件放在网站根目录下
3.微信公众平台:获取APPID、设置AppSecret
4.在微信商户平台-账户中心-API安全设置API秘钥-key
5.微信公众平台 设置微信支付授权目录,MVC项目一定要写到具体的控制器,否则会出现当前url未注册问题
下载了微信支付.net C#的SDK
宝宝是MVC项目,和demo大同小异,对于理解微信支付的过程是很有帮助的
https://pay.weixin.qq.com/wiki/doc/api/download/WxPayAPI_CS_v3.zip
其中主要用到的就是这几个文件
HttpServices.cs
Log.cs
WxPayException.cs
WxPayApi.cs:
-------------以上四个文件可以直接使用,以下三个文件需要修改--------------
JsApiPay.cs:
这个文件里GetUnifiedOrderResult()这个方法是用来下单的,其中很多参数都是test,需要自己传入参数
WXPayConfig.cs:
这个配置文件主要是信息,比如APPID,key之类的全部修改成自己的
WxPayData.cs:
WxPayData()这个方法注释掉,这个文件的方法主要是将参数设置值、格式、排序,微信的接口接收参数一定要是A-Z排序的
这些文件里出现的Page都去掉,MVC木有的啦,
MVC获取路径的方法和demo的方法也有所不同,应该明白的,修改一下就ok
整个过程简单说就是
1.获取用户的openid,
2.然后通过统一下单接口下个单得到prepay_id,
3.将一些参数传到前台,js调用微信浏内置的微信支付请求的方法
//访问这个页面的时候获取openID等信息
#region 产品页
public ActionResult Product()
{
//调用【网页授权获取用户信息】接口获取用户的openid和access_token
JsApiPay jsApi = new JsApiPay();
jsApi.GetOpenidAndAccessToken();
//获取收货地址js函数入口参数
ViewData["openid"] = jsApi.openid;
ViewData["wxEditAddrParam"] = jsApi.GetEditAddressParameters();
return View();
}
#endregion
//Product 页面主要的JS
#region WXPay
//oID是我传到前台页面传回来的openID
public ActionResult WXPay(string oID,,string fee)
{
JsApiPay jsapi = new JsApiPay();
jsapi.openid = oID;
jsapi.total_fee = int.Parse(fee);
//检测是否给当前页面传递了相关参数
if (string.IsNullOrEmpty(oID) )
{
Response.Write("" + "页面传参出错,请返回重试" + "");
Log.Error(this.GetType().ToString(), "This page have not get params, cannot be inited, exit...");
}
//微信只接收整数的金钱,且单位为分,所以1元要传100给微信哦
jsapi.total_fee =Convert.ToInt32(1*100);
//JSAPI支付预处理
try
{
string OutTradeNo = "";
WXpayData unifiedOrderResult = jsapi.GetUnifiedOrderResult(MOD.Name,out OutTradeNo);
//这里是统一下单,然后微信返回了unifiedOrderResult 这里面prepay_id参数很重要
//获取H5调起JS的 API参数
string wxJsApiParam = jsapi.GetJsApiParameters(unifiedOrderResult);
ViewData["wxEditAddrParam"] = wxJsApiParam;
Log.Debug(this.GetType().ToString(), "wxJsApiParam : " + wxJsApiParam);
ViewData["out_trade_no"] = OutTradeNo;
//在页面上显示订单信息
//Response.Write("订单详情:
");
//Response.Write("" + unifiedOrderResult.ToPrintStr() + "");
}
catch (Exception ex)
{
Response.Write("" + "下单失败,请返回重试" + "");
// submit.Visible = false;
}
return View();
}
#endregion
//在微信里,这个页面点击立即支付就可以调用微信支付了



