微信小程序支付之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 BS,dialog控件自适应大小
Jul 06 Javascript
Jquery操作Select 简单方便 一个js插件搞定
Nov 12 Javascript
jquery 与NVelocity 产生冲突的解决方法
Jun 13 Javascript
浅谈Javascript变量作用域问题
Dec 16 Javascript
jquery可定制的在线UEditor编辑器
Nov 17 Javascript
微信小程序 高德地图SDK详解及简单实例(源码下载)
Jan 11 Javascript
vue实现app页面切换动画效果实例
May 23 Javascript
用node-webkit把web应用打包成桌面应用(windows环境)
Feb 01 Javascript
Vue使用vue-area-linkage实现地址三级联动效果的示例
Jun 27 Javascript
如何为vue的项目添加单元测试
Dec 19 Javascript
详解微信小程序之scroll-view的flex布局问题
Jan 16 Javascript
Element的el-tree控件后台数据结构的生成以及方法的抽取
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世纪万年历
2006/12/06 PHP
让codeigniter与swfupload整合的最佳解决方案
2014/06/12 PHP
ThinkPHP公共配置文件与各自项目中配置文件组合的方法
2014/11/24 PHP
php项目开发中用到的快速排序算法分析
2016/06/25 PHP
PHP实现用session来实现记录用户登陆信息
2018/10/15 PHP
Dom 是什么的详细说明
2010/10/25 Javascript
用JS实现一个TreeMenu效果分享
2011/08/28 Javascript
jQuery EasyUI API 中文文档 - ProgressBar 进度条
2011/09/29 Javascript
DOM2非标准但却支持很好的几个属性小结
2012/01/21 Javascript
js鼠标点击事件在各个浏览器中的写法及Event对象属性介绍
2013/01/24 Javascript
zTree插件之多选下拉菜单实例代码
2013/11/06 Javascript
JavaScript中一个奇葩的IE浏览器判断方法
2014/04/16 Javascript
javascript获取本机操作系统类型的方法
2015/08/13 Javascript
深入浅析JS的数组遍历方法(推荐)
2016/06/15 Javascript
Vue.js中用v-bind绑定class的注意事项
2016/12/13 Javascript
Angular4实现动态添加删除表单输入框功能
2017/08/11 Javascript
前端路由&webpack基础配置详解
2019/06/10 Javascript
如何基于layui的laytpl实现数据绑定的示例代码
2020/04/10 Javascript
vue打包静态资源后显示空白及static文件路径报错的解决
2020/09/02 Javascript
Python实现保证只能运行一个脚本实例
2015/06/24 Python
python通过百度地图API获取某地址的经纬度详解
2018/01/28 Python
对Python subprocess.Popen子进程管道阻塞详解
2018/10/29 Python
实例详解Python装饰器与闭包
2019/07/29 Python
python requests模拟登陆github的实现方法
2019/12/26 Python
开启Django博客的RSS功能的实现方法
2020/02/17 Python
Python socket处理client连接过程解析
2020/03/18 Python
完美解决pycharm 不显示代码提示问题
2020/06/02 Python
利用Node实现HTML5离线存储的方法
2020/10/16 HTML / CSS
雅诗兰黛旗下走天然植物路线的彩妆品牌:Prescriptives
2016/08/14 全球购物
选购世界上最好的美妆品:Cult Beauty
2017/11/03 全球购物
美国购物网站:Clickhere2shop
2021/01/28 全球购物
市场营销专业毕业生求职信
2014/07/21 职场文书
我的1919观后感
2015/06/03 职场文书
幼儿园托班开学寄语(2016春季)
2015/12/03 职场文书
总结Python常用的魔法方法
2021/05/25 Python
Python基础教程,Python入门教程(超详细)
2021/06/24 Python