微信小程序支付之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的键盘控制事件说明
Apr 15 Javascript
JavaScript下申明对象的几种方法小结
Oct 02 Javascript
小型js框架veryide.librar源代码
Mar 05 Javascript
原生JavaScript+LESS实现瀑布流
Dec 12 Javascript
JavaScript实现自动生成网页元素功能(按钮、文本等)
Nov 21 Javascript
js制作网站首页图片轮播特效代码
Aug 30 Javascript
JavaScript 中Date对象的格式化代码方法汇总
Sep 06 Javascript
20行JS代码实现粘贴板复制功能
Feb 06 Javascript
JS实现的全选、全不选及反选功能【案例】
Feb 19 Javascript
vue项目从node8.x升级到12.x后的问题解决
Oct 25 Javascript
js+audio实现音乐播放器
Sep 13 Javascript
vue项目两种方式实现竖向表格的思路分析
Apr 28 Vue.js
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
各种战术和打法的原创者
2020/03/04 星际争霸
php不用内置函数对数组排序的两个算法代码
2010/02/08 PHP
YII2 实现多语言配置的方法分享
2017/01/11 PHP
js异常捕获方法介绍
2013/04/10 Javascript
让input框实现类似百度的搜索提示(基于jquery事件监听)
2014/01/31 Javascript
js实现正则匹配中文标点符号的方法
2015/12/23 Javascript
Ajax跨域实现代码(后台jsp)
2017/01/21 Javascript
利用js定义一个导航条菜单
2017/03/14 Javascript
Angular.js实现动态加载组件详解
2017/05/28 Javascript
angular指令笔记ng-options的使用方法
2017/09/18 Javascript
深入理解Angular4订阅(Subscribe)与取消
2017/11/22 Javascript
vue-router 源码之实现一个简单的 vue-router
2018/07/02 Javascript
解决vue.js 数据渲染成功仍报错的问题
2018/08/25 Javascript
JS Math对象与Math方法实例小结
2019/07/05 Javascript
Node.js学习之内置模块fs用法示例
2020/01/22 Javascript
python抓取最新博客内容并生成Rss
2015/05/17 Python
Python logging管理不同级别log打印和存储实例
2018/01/19 Python
Python SqlAlchemy动态添加数据表字段实例解析
2018/02/07 Python
使用python远程操作linux过程解析
2019/12/04 Python
Python实现密码薄文件读写操作
2019/12/16 Python
pycharm 关闭search everywhere的解决操作
2021/01/15 Python
检测浏览器对HTML5和CSS3支持度的方法
2015/06/25 HTML / CSS
英国花园家具中心:Garden Furniture Centre
2017/08/24 全球购物
全球知名的珠宝首饰品牌:Kay Jewelers
2018/02/11 全球购物
英国在线药房:Express Chemist
2019/03/28 全球购物
新西兰最大的连锁超市:Countdown
2020/06/04 全球购物
六道php面试题附答案
2014/06/05 面试题
商得四方公司面试题(gid+)
2014/04/30 面试题
描述RIP和OSPF区别以及特点
2015/01/17 面试题
销售员求职个人的自我评价
2014/02/19 职场文书
中秋节主持词
2014/04/02 职场文书
一位农村小子的自荐信
2014/04/07 职场文书
竞选学习委员演讲稿
2014/04/28 职场文书
物业消防安全责任书
2014/07/23 职场文书
高中学校对照检查材料
2014/08/31 职场文书
领导班子三严三实心得体会
2014/10/13 职场文书