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;
}
没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
我弄了3天才通,其实很简单 10分钟就能配通,前2天一直在研究 “京东微信wap支付”,发现那是一个坑,必须得有腾讯官方的邀请函 才能开通 WAP支付。 JSASP支付 只能在微信浏览器里。 今天2016.6.22配通,官方支付v3版本 这次提供的代码比较简单新,比较简单,不需要引JS。我下载了几个其它人写的Demo 代码比较旧,写法繁琐。
资源推荐
资源详情
资源评论
收起资源包目录
ASP.NET微信支付接口调用Demo JSAPI (122个子文件)
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
WxPayAPI.csprojResolveAssemblyReference.cache 10KB
DesignTimeResolveAssemblyReferencesInput.cache 9KB
DesignTimeResolveAssemblyReferencesInput.cache 7KB
applicationhost.config 84KB
Web.config 1KB
WxPayAPI.dll.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 2KB
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 41KB
WxPayAPI.dll 41KB
WxPayAPI.dll 41KB
WxPayAPI.dll 37KB
QuickMark.dll 6KB
QuickMark.dll 6KB
001.jpg 130KB
002.jpg 113KB
003.jpg 83KB
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
共 122 条
- 1
- 2
马叔
- 粉丝: 11
- 资源: 4
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
- 1
- 2
- 3
前往页