if (Request.QueryString["code"] == null || Request.QueryString["code"] == "")
{
string host = Request.Url.Host;
string path = Request.Path;
string redirect_uri = HttpUtility.UrlEncode("http://" + host + path);
Log.Debug(this.GetType().ToString(), "Current page URL : " + redirect_uri);
WxPayData data = new WxPayData();
data.SetValue("appid", WxPayConfig.APPID);
data.SetValue("redirect_uri", redirect_uri);
data.SetValue("response_type", "code");
data.SetValue("scope", "snsapi_base");
data.SetValue("state", "STATE" + "#wechat_redirect");
string url = "https://open.weixin.qq.com/connect/oauth2/authorize?" + data.ToUrl();
Log.Debug(this.GetType().ToString(), "Will Redirect to URL : " + url);
Response.Redirect(url);
//System.Environment.Exit(0);
Response.End();
Log.Debug(this.GetType().ToString(), "If print this sentence, it is error!!!");
}
else
{
string code = Request.QueryString["code"];
Log.Debug(this.GetType().ToString(), "Get code : " + code);
//构造获取openid及access_token的url
WxPayData data3 = new WxPayData();
data3.SetValue("appid", WxPayConfig.APPID);
data3.SetValue("secret", WxPayConfig.APPSECRET);
data3.SetValue("code", code);
data3.SetValue("grant_type", "authorization_code");
string url3 = "https://api.weixin.qq.com/sns/oauth2/access_token?" + data3.ToUrl();
//请求url以获取数据
HttpWebRequest objRequest = (HttpWebRequest)WebRequest.Create(url3);
objRequest.Method = "GET";
WebProxy proxy = new WebProxy(); //定义一个网关对象
proxy.Address = new Uri("http://10.152.18.220:8080"); //网关服务器端口:端口
objRequest.Proxy = proxy;
string result = "";
HttpWebResponse objResponse = (HttpWebResponse)objRequest.GetResponse();
using (StreamReader sr = new StreamReader(objResponse.GetResponseStream()))
{
result = sr.ReadToEnd();
sr.Close();
}
Log.Debug(this.GetType().ToString(), "Get access_token : " + result);
//保存access_token,用于收货地址获取
JsonData jd = JsonMapper.ToObject(result);
string access_token = (string)jd["access_token"];
string openid = (string)jd["openid"];
Log.Debug(this.GetType().ToString(), "Get openid : " + openid);
//统一下单
WxPayData data2 = new WxPayData();
data2.SetValue("body", "test");//
data2.SetValue("attach", "test");
data2.SetValue("out_trade_no", WxPayApi.GenerateOutTradeNo());
data2.SetValue("total_fee", 1);
data2.SetValue("time_start", DateTime.Now.ToString("yyyyMMddHHmmss"));
data2.SetValue("time_expire", DateTime.Now.AddMinutes(10).ToString("yyyyMMddHHmmss"));
data2.SetValue("goods_tag", "test");
data2.SetValue("trade_type", "JSAPI");
data2.SetValue("openid", openid);
WxPayData result2 = WxPayApi.UnifiedOrder(data2);
if (!result2.IsSet("appid") || !result2.IsSet("prepay_id") || result2.GetValue("prepay_id").ToString() == "")
{
Log.Error(this.GetType().ToString(), "UnifiedOrder response error!");
throw new WxPayException("UnifiedOrder response error!");
}
WxPayData jsApiParam = new WxPayData();
jsApiParam.SetValue("appId", result2.GetValue("appid"));
jsApiParam.SetValue("timeStamp", WxPayApi.GenerateTimeStamp());
jsApiParam.SetValue("nonceStr", WxPayApi.GenerateNonceStr());
jsApiParam.SetValue("package", "prepay_id=" + result2.GetValue("prepay_id"));
jsApiParam.SetValue("signType", "MD5");
jsApiParam.SetValue("paySign", jsApiParam.MakeSign());
string parameters = jsApiParam.ToJson();
Log.Info(this.GetType().ToString(), "Get jsApiParam : " + parameters);
wxJsApiParam = parameters;
//获取收货地址
string parameter2 = null;
try
{
WxPayData signData = new WxPayData();
signData.SetValue("appid", WxPayConfig.APPID);
signData.SetValue("url", Request.Url.ToString());
signData.SetValue("timestamp", WxPayApi.GenerateTimeStamp());
signData.SetValue("nonce_str", WxPayApi.GenerateNonceStr());
signData.SetValue("accesstoken", access_token);
string param = signData.ToUrl();
Log.Info(this.GetType().ToString(), "GetEditAddressParam param : " + param);
string addrSign = FormsAuthentication.HashPasswordForStoringInConfigFile(param, "SHA1");
WxPayData afterData = new WxPayData();
afterData.SetValue("appId", WxPayConfig.APPID);
afterData.SetValue("scope", "jsapi_address");
afterData.SetValue("signType", "sha1");
afterData.SetValue("addrSign", addrSign);
afterData.SetValue("timeStamp", signData.GetValue("timestamp"));
afterData.SetValue("nonceStr", signData.GetValue("nonce_str"));
parameter2 = afterData.ToJson();
}
catch (Exception ex)
{
Log.Error(this.GetType().ToString(), ex.ToString());
}
Log.Info(this.GetType().ToString(), "Get EditAddressParam : " + parameter2);
wxEditAddrParam = parameter2;
}
没有合适的资源?快使用搜索试试~ 我知道了~
C#.NET版微信支付API官方demo修改版
共117个文件
cs:44个
aspx:24个
dll:11个
5星 · 超过95%的资源 需积分: 3 369 下载量 191 浏览量
2015-12-18
09:14:23
上传
评论 13
收藏 2.1MB RAR 举报
温馨提示
官方下载的demo,众所周知官方版本一步一个坑,这个版本是我自己修改好的,只要在config.cs里配置好相关参数就能支付成功,当然你的公众平台网站上配置也不能错。
资源推荐
资源详情
资源评论
收起资源包目录
C#.NET版微信支付API官方demo修改版 (117个子文件)
ProductPage.aspx 3KB
ProductPage.aspx 3KB
Default.aspx 3KB
Default.aspx 3KB
JsApiPayPage.aspx 2KB
JsApiPayPage.aspx 2KB
RefundQueryPage.aspx 2KB
RefundQueryPage.aspx 2KB
RefundPage.aspx 2KB
RefundPage.aspx 2KB
DownloadBillpage.aspx 1KB
DownloadBillPage.aspx 1KB
MicroPayPage.aspx 1KB
MicroPayPage.aspx 1KB
OrderQueryPage.aspx 1KB
OrderQueryPage.aspx 1KB
NativePayPage.aspx 865B
NativePayPage.aspx 865B
NativeNotifyPage.aspx 423B
ResultNotifyPage.aspx 423B
NativeNotifyPage.aspx 423B
ResultNotifyPage.aspx 423B
MakeQRCode.aspx 411B
MakeQRCode.aspx 411B
WxPayAPI.csprojResolveAssemblyReference.cache 10KB
DesignTimeResolveAssemblyReferencesInput.cache 8KB
DesignTimeResolveAssemblyReferencesInput.cache 8KB
WxPayAPI.dll.config 1KB
Web.config 1KB
Web.config 1KB
Web.config 1KB
Web.config 1KB
Web.Release.config 1KB
Web.config 1KB
Web.Debug.config 1KB
WxPayApi.cs 23KB
JsApiPay.cs 11KB
Data.cs 9KB
HttpService.cs 8KB
MicroPay.cs 7KB
NativeNotify.cs 4KB
ProductPage.aspx.cs 3KB
NativePay.cs 3KB
ResultNotify.cs 3KB
JsApiPayPage.aspx.cs 3KB
Log.cs 2KB
Config.cs 2KB
Notify.cs 2KB
RefundQueryPage.aspx.designer.cs 2KB
RefundPage.aspx.designer.cs 2KB
RefundPage.aspx.cs 2KB
MicroPayPage.aspx.cs 2KB
ProductPage.aspx.designer.cs 2KB
MicroPayPage.aspx.designer.cs 2KB
RefundQuery.cs 2KB
Refund.cs 2KB
RefundQueryPage.aspx.cs 2KB
OrderQueryPage.aspx.designer.cs 1KB
DownloadBillPage.aspx.designer.cs 1KB
OrderQueryPage.aspx.cs 1KB
MakeQRCode.aspx.cs 1KB
DownloadBillPage.aspx.cs 1KB
AssemblyInfo.cs 1KB
DownloadBill.cs 1KB
OrderQuery.cs 1KB
NativePayPage.aspx.designer.cs 1KB
NativePayPage.aspx.cs 1KB
JsApiPayPage.aspx.designer.cs 807B
ResultNotifyPage.aspx.designer.cs 805B
NativeNotifyPage.aspx.designer.cs 805B
MakeQRCode.aspx.designer.cs 799B
default.aspx.designer.cs 465B
ResultNotifyPage.aspx.cs 451B
NativeNotifyPage.aspx.cs 444B
default.aspx.cs 426B
Exception.cs 239B
TemporaryGeneratedFile_036C0B5B-1481-4323-8D20-8F5ADCB23D92.cs 0B
TemporaryGeneratedFile_E7A71F73-0F8D-4B9B-B56E-8E70B10BC5D3.cs 0B
TemporaryGeneratedFile_5937a670-0e60-4077-877b-f7221da3dda1.cs 0B
WxPayAPI.csproj 10KB
ThoughtWorks.QRCode.dll 5.92MB
ThoughtWorks.QRCode.dll 5.92MB
RestSharp.dll 157KB
LitJson.dll 52KB
LitJson.dll 52KB
WxPayAPI.dll 43KB
WxPayAPI.dll 41KB
WxPayAPI.dll 41KB
WxPayAPI.dll 41KB
QuickMark.dll 6KB
QuickMark.dll 6KB
jquery-1.7.1.js 242KB
jquery-1.7.1.js 242KB
jquery-1.7.1.intellisense.js 150KB
jquery-1.7.1.intellisense.js 150KB
jquery-1.7.1.min.js 92KB
jquery-1.7.1.min.js 92KB
jweixin-1.0.0.js 9KB
2015-04-26.log 30KB
2015-04-21.log 5KB
共 117 条
- 1
- 2
米迷
- 粉丝: 8
- 资源: 2
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
- 1
- 2
- 3
- 4
前往页