微信小程序支付之c#后台实现方法


Posted in Javascript onOctober 19, 2017

微信小程序支付c#后台实现

今天为大家带来比较简单的支付后台处理

首先下载官方的c#模板(WxPayAPI),将模板(WxPayAPI)添加到服务器上,然后在WxPayAPI项目目录中添加两个“一般处理程序” (改名为GetOpenid.ashx、pay.ashx)

之后打开business目录下的JsApiPay.cs,在JsApiPay.cs中修改如下两处

微信小程序支付之c#后台实现方法

然后在GetOpenid.ashx中加入代码如下:

public class GetOpenid : IHttpHandler 
  { 
    public string openid { get; set; } 
 
    public void ProcessRequest(HttpContext context) 
    { 
       
      string code = HttpContext.Current.Request.QueryString["code"]; 
      WxPayData data = new WxPayData(); 
      data.SetValue("appid", WxPayConfig.APPID); 
      data.SetValue("secret", WxPayConfig.APPSECRET); 
      data.SetValue("code", code); 
      data.SetValue("grant_type", "authorization_code"); 
      string url = "https://api.weixin.qq.com/sns/oauth2/access_token?" + data.ToUrl(); 
 
      //请求url以获取数据 
      string result = HttpService.Get(url); 
 
      Log.Debug(this.GetType().ToString(), "GetOpenidAndAccessTokenFromCode response : " + result); 
 
      //保存access_token,用于收货地址获取 
      JsonData jd = JsonMapper.ToObject(result); 
      //access_token = (string)jd["access_token"]; 
 
      //获取用户openid 
      openid = (string)jd["openid"]; 
      context.Response.Write(openid);//获取H5调起JS API参数 
      
    }

在pay.ashx中加入代码如下:

public class pay : IHttpHandler 
  { 
    
    public void ProcessRequest(HttpContext context) 
    {        
      context.Response.ContentType = "text/plain"; 
      
      string openid = HttpContext.Current.Request.QueryString["openid"]; 
      string total_fee = HttpContext.Current.Request.QueryString["total_fee"]; 
      JsApiPay jsApiPay = new JsApiPay(context); 
      jsApiPay.openid = openid; 
      jsApiPay.total_fee = int.Parse(total_fee); 
      WxPayData unifiedOrderResult = jsApiPay.GetUnifiedOrderResult(); 
      context.Response.Write(jsApiPay.GetJsApiParameters());//获取H5调起JS API参数 
    }

 然后发布就可以了(记得将相关的信息appid等填好)

 微信小程序的代码如下:

wxpay: function () { 
  var that = this 
  //登陆获取code 
  wx.login({ 
   success: function (res) { 
    console.log(res.code) 
    //获取openid 
    that.getOpenId(res.code) 
   } 
  }); 
 }, 
 getOpenId: function (code) { 
//获取openID 
   
  var that = this; 
  wx.request({ 
   url: 'http://*******/WxPayAPI/GetOpenid.ashx?code='+ code , //改为自己的域名
   data: {}, 
  // method: 'GET', 
   success: function (res) { 
   var a12=res.data 
   that.generateOrder(a12) 
   //console.log(a12) 
   }, 
   fail: function () { 
    // fail 
   }, 
   complete: function () { 
    // complete 
   } 
  }) 
 }, 
/**生成商户订单 */ 
 generateOrder: function (openid) { 
  var that = this; 
  //console.log(openid) 
  //统一支付 
  wx.request({ 
   url: 'http://*******/WxPayAPI/pay.ashx', //改为自己的域名
   //method: 'GET', 
   data: { 
    total_fee: 1,//1分 
    openid: openid, 
   }, 
   header: { 
    'content-type': 'application/json' 
   }, 
  
   success: function (res) { 
  
    var pay = res.data 
    //发起支付 
      
    var timeStamp = pay.timeStamp; 
    var packages = pay.package; 
    var paySign = pay.paySign; 
    var nonceStr = pay.nonceStr; 
    var param = { "timeStamp": timeStamp, "package": packages, "paySign": paySign, "signType": "MD5", "nonceStr": nonceStr }; 
     
    that.pay(param) 
   }, 
  }) 
 }, 
  
 /* 支付  */ 
 pay: function (param) { 
  
  wx.requestPayment({ 
   timeStamp: param.timeStamp, 
   nonceStr: param.nonceStr, 
   package: param.package, 
   signType: param.signType, 
   paySign: param.paySign, 
   success: function (res) { 
    // success 
     
    wx.navigateBack({ 
     delta: 1, // 回退前 delta(默认为1) 页面 
     success: function (res1) { 
      wx.showToast({ 
       title: '支付成功', 
       icon: 'success', 
       duration: 2000 
      }); 
       
     }, 
     fail: function () { 
      // fail 
        
     }, 
     complete: function () { 
        
     } 
    }) 
   }, 
   fail: function (res) { 
    // fail 
   }, 
   complete: function () { 
    // complete 
   } 
  }) 
 },

如有疑问请留言或者到本站社区交流讨论,感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

Javascript 相关文章推荐
JavaScript 内置对象属性及方法集合
Jul 04 Javascript
让人印象深刻的10个jQuery手风琴效果应用
May 08 Javascript
基于javascript 闭包基础分享
Jul 10 Javascript
JavaScript字符串对象substr方法入门实例(用于截取字符串)
Oct 16 Javascript
Bootstrap零基础入门教程(三)
Jul 18 Javascript
Three.js学习之Lamber材质和Phong材质
Aug 04 Javascript
原生JS实现网页手机音乐播放器 歌词同步播放的示例
Feb 02 Javascript
jQuery实现获取form表单内容及绑定数据到form表单操作分析
Jul 03 jQuery
Vue中div contenteditable 的光标定位方法
Aug 25 Javascript
JavaScript的console命令使用实例
Dec 03 Javascript
jQuery 实现DOM元素拖拽交换位置的实例代码
Jul 14 jQuery
代码块高亮可复制显示js插件highlight.js+clipboard.js整合
Feb 15 Javascript
JS实现点击链接切换显示隐藏内容的方法
Oct 19 #Javascript
bootstrap日期插件daterangepicker使用详解
Oct 19 #Javascript
微信小程序的生命周期的详解
Oct 19 #Javascript
python爬取安居客二手房网站数据(实例讲解)
Oct 19 #Javascript
js 两个日期比较相差多少天的实例
Oct 19 #Javascript
Angular弹出模态框的两种方式
Oct 19 #Javascript
vue使用axios跨域请求数据问题详解
Oct 18 #Javascript
You might like
fleaphp crud操作之find函数的使用方法
2011/04/23 PHP
php禁止浏览器使用缓存页面的方法
2014/11/07 PHP
php自动获取关键字的方法
2015/01/06 PHP
php中文繁体和简体相互转换的方法
2015/03/21 PHP
php实现的统计字数函数定义与使用示例
2017/07/26 PHP
laravel + vue实现的数据统计绘图(今天、7天、30天数据)
2018/07/31 PHP
js计数器代码
2006/11/04 Javascript
基于JQuery制作的产品广告效果
2010/12/08 Javascript
关于COOKIE个数与大小的问题
2011/01/17 Javascript
Tab切换组件(选项卡功能)实例代码
2013/11/21 Javascript
使用javascript提交form表单方法汇总
2015/06/25 Javascript
JavaScript生成带有缩进的表格代码
2016/06/15 Javascript
jQuery Validate 数组 全部验证问题
2017/01/12 Javascript
原生javascript移动端滑动banner效果
2017/03/10 Javascript
JS排序之冒泡排序详解
2017/04/08 Javascript
解决JSON.stringify()自动将中文转译成unicode的问题
2018/01/05 Javascript
vue中添加mp3音频文件的方法
2018/03/02 Javascript
Vue结合路由配置递归实现菜单栏功能
2020/06/16 Javascript
python实现将汉字转换成汉语拼音的库
2015/05/05 Python
django 创建过滤器的实例详解
2017/08/14 Python
Python+tkinter使用40行代码实现计算器功能
2018/01/30 Python
Numpy数组转置的两种实现方法
2018/04/17 Python
Python使用dict.fromkeys()快速生成一个字典示例
2019/04/24 Python
解决pycharm 安装numpy失败的问题
2019/12/05 Python
Tensorflow tf.dynamic_partition矩阵拆分示例(Python3)
2020/02/07 Python
CSS3教程:边框属性border的极致应用
2009/04/02 HTML / CSS
在求职信中如何凸显个人优势
2013/10/30 职场文书
给水工程专业毕业生自荐信
2014/01/28 职场文书
高中军训感想300字
2014/03/04 职场文书
个人遵守党的政治纪律情况对照检查材料思想汇报
2014/09/25 职场文书
2015年材料员工作总结
2015/04/30 职场文书
2015年社区工会工作总结
2015/05/26 职场文书
2016年学校“3.12”植树节活动总结
2016/03/16 职场文书
HTML速写之Emmet语法规则的实现
2021/04/07 HTML / CSS
解决pytorch 损失函数中输入输出不匹配的问题
2021/06/05 Python
docker 制作mysql镜像并自动安装
2022/05/20 Servers