栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

.net微信JSAPIPay记录

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

.net微信JSAPIPay记录

本人开发时已有微信公众平台和微信商户平台的账号和密码,申请这些账号的步骤宝宝就省啦
一.前期准备
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 //在微信里,这个页面点击立即支付就可以调用微信支付了
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/231950.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号