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;
}
没有合适的资源?快使用搜索试试~ 我知道了~
WxPayApi(C#).zip
共85个文件
cs:45个
aspx:12个
dll:8个
需积分: 19 25 下载量 178 浏览量
2019-07-21
17:16:29
上传
评论 4
收藏 2.82MB ZIP 举报
温馨提示
.net(c#)版,微信支付API,内含DEMO,下载后直接包含到项目中,按注释修改和调用即可。
资源推荐
资源详情
资源评论
收起资源包目录
WxPayApi(C#).zip (85个子文件)
WxPayAPI
WxPayAPI.csproj 10KB
lib
HttpService.cs 8KB
RandomGenerator.cs 1KB
DemoConfig.cs 3KB
Data.cs 11KB
IConfig.cs 2KB
Exception.cs 239B
Log.cs 2KB
Config.cs 609B
SafeXmlDocument.cs 209B
WxPayApi.cs 25KB
Notify.cs 2KB
jsapi_load.txt 6KB
Web.Release.config 1KB
business
RefundQuery.cs 2KB
ResultNotify.cs 3KB
DownloadBill.cs 1KB
Refund.cs 2KB
NativePay.cs 3KB
NativeNotify.cs 4KB
MicroPay.cs 7KB
JsApiPay.cs 11KB
OrderQuery.cs 1KB
Scripts
jquery-1.7.1.intellisense.js 150KB
jquery-1.7.1.min.js 92KB
jquery-1.7.1.js 242KB
Properties
AssemblyInfo.cs 1KB
example
NativeNotifyPage.aspx.cs 444B
MicroPayPage.aspx.designer.cs 2KB
MicroPayPage.aspx.cs 2KB
NativePayPage.aspx 865B
MakeQRCode.aspx.designer.cs 799B
NativePayPage.aspx.cs 1KB
NativeNotifyPage.aspx 423B
JsApiPayPage.aspx.cs 2KB
RefundPage.aspx.designer.cs 2KB
ProductPage.aspx 3KB
MakeQRCode.aspx 411B
ProductPage.aspx.designer.cs 2KB
DownloadBillPage.aspx.cs 1KB
MakeQRCode.aspx.cs 1KB
ProductPage.aspx.cs 3KB
MicroPayPage.aspx 1KB
RefundPage.aspx.cs 2KB
JsApiPayPage.aspx.designer.cs 807B
OrderQueryPage.aspx.designer.cs 1KB
NativePayPage.aspx.designer.cs 1KB
DownloadBillPage.aspx.designer.cs 1KB
DownloadBillpage.aspx 1KB
ResultNotifyPage.aspx.designer.cs 805B
OrderQueryPage.aspx.cs 1KB
RefundQueryPage.aspx 2KB
NativeNotifyPage.aspx.designer.cs 805B
ResultNotifyPage.aspx 423B
RefundPage.aspx 2KB
RefundQueryPage.aspx.cs 2KB
RefundQueryPage.aspx.designer.cs 2KB
JsApiPayPage.aspx 2KB
ResultNotifyPage.aspx.cs 451B
OrderQueryPage.aspx 1KB
Web.Debug.config 1KB
default.aspx.cs 426B
third
ThoughtWorks.QRCode.dll 5.92MB
RestSharp.dll 157KB
QuickMark.dll 6KB
LitJson.dll 52KB
default.aspx.designer.cs 460B
obj
Debug
WxPayAPI.pdb 18KB
WxPayAPI.csprojResolveAssemblyReference.cache 62KB
WxPayAPI.csproj.FileListAbsolute.txt 798B
WxPayAPI.dll 45KB
WxPayAPI.csproj.CoreCompileInputs.cache 41B
WxPayAPI.csproj.CopyComplete 0B
Default.aspx 3KB
bin
WxPayAPI.pdb 18KB
ThoughtWorks.QRCode.dll 5.92MB
WxPayAPI.dll 45KB
LitJson.dll 52KB
Web.config 2KB
WxPayAPI.sln 993B
.vs
WxPayAPI
xs
UserPrefs.xml 4KB
sqlite3
storage.ide-wal 3.94MB
storage.ide-shm 32KB
storage.ide 792KB
db.lock 0B
共 85 条
- 1
资源评论
goyqf
- 粉丝: 0
- 资源: 2
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功