微信小程序支付之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 相关文章推荐
Jquery 动态添加按钮实现代码
May 06 Javascript
JS高级笔记
Jul 13 Javascript
jquery getScript动态加载JS方法改进详解
Nov 15 Javascript
javascript完美拖拽的实现方法
Sep 29 Javascript
js获取ajax返回值代码
Apr 30 Javascript
HTML页面登录时的JS验证方法
May 28 Javascript
Javascript中的几种URL编码方法比较
Jan 23 Javascript
jQuery动态效果显示人物结构关系图的方法
May 07 Javascript
模仿password输入框的实现代码
Jun 07 Javascript
Angular ng-repeat 对象和数组遍历实例
Sep 14 Javascript
基于twbsPagination.js分页插件使用心得(分享)
Oct 21 Javascript
vue中使用vue-print.js实现多页打印
Mar 05 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
php下将多个数组合并成一个数组的方法与实例代码
2011/02/03 PHP
常见php数据文件缓存类汇总
2014/12/05 PHP
学习php设计模式 php实现合成模式(composite)
2015/12/08 PHP
如何判断php mysqli扩展类是否开启
2016/12/24 PHP
PHP之多条件混合筛选功能的实现方法
2019/10/09 PHP
PhpStorm+xdebug+postman调试技巧分享
2020/09/15 PHP
常用js脚本
2006/12/03 Javascript
jQuery 一个图片切换的插件
2011/10/09 Javascript
javascript实现tabs选项卡切换效果(自写原生js)
2013/03/19 Javascript
使用jQuery validate 验证注册表单实例演示
2013/03/25 Javascript
简单js代码实现selece二级联动(推荐)
2014/02/18 Javascript
ECMAScript6函数默认参数
2015/06/12 Javascript
JavaScript 封装一个tab效果源码分享
2015/09/15 Javascript
Webwork 实现文件上传下载代码详解
2016/02/02 Javascript
功能强大的Bootstrap组件(结合js)
2016/08/03 Javascript
基于JSON格式数据的简单jQuery幻灯片插件(jquery-slider)
2016/08/10 Javascript
Bootstrap实现导航栏的2种方式
2016/11/28 Javascript
javascript基础知识讲解
2017/01/11 Javascript
js实现移动端轮播图效果
2020/12/09 Javascript
jQuery实现鼠标移到某个对象时弹出显示层功能
2018/08/23 jQuery
jquery的$().each和$.each的区别
2019/01/18 jQuery
Node.js path模块,获取文件后缀名操作
2020/11/07 Javascript
[02:02]DOTA2英雄基础教程 斯拉达
2013/12/11 DOTA
Python ORM框架SQLAlchemy学习笔记之安装和简单查询实例
2014/06/10 Python
利用python微信库itchat实现微信自动回复功能
2017/05/18 Python
Python 实现一行输入多个数字(用空格隔开)
2020/04/29 Python
Django中和时区相关的安全问题详解
2020/10/12 Python
自考毕业自我鉴定范文
2013/10/27 职场文书
平面设计求职信
2014/03/10 职场文书
学生干部培训方案
2014/06/12 职场文书
教师党员个人剖析材料
2014/09/29 职场文书
科学育儿宣传标语
2014/10/08 职场文书
教师党的群众路线教育实践活动学习笔记
2014/11/05 职场文书
运动会报道稿大全
2015/07/23 职场文书
创业计划书之都市休闲农庄
2019/12/28 职场文书
SQL Server——索引+基于单表的数据插入与简单查询【1】
2021/04/05 SQL Server