微信小程序支付之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 跨域访问问题解决方法
Dec 02 Javascript
javascript开发中因空格引发的错误
Nov 08 Javascript
jquery的ajax()函数传值中文乱码解决方法介绍
Nov 08 Javascript
JavaScript中的Web worker多线程API研究
Dec 06 Javascript
js判断登录与否并确定跳转页面的方法
Jan 30 Javascript
JavaScript 2048 游戏实例代码(简单易懂)
Mar 25 Javascript
JavaScript的Ext JS框架中的GridPanel组件使用指南
May 21 Javascript
原生js实现无限循环轮播图效果
Jan 20 Javascript
JS解决IOS中拍照图片预览旋转90度BUG的问题
Sep 13 Javascript
create-react-app使用antd按需加载的样式无效问题的解决
Feb 26 Javascript
Vue实现剪贴板复制功能
Dec 31 Javascript
vue过滤器实现日期格式化的案例分析
Jul 02 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自动加载机制的深入分析
2013/06/08 PHP
PHP资源管理框架Assetic简介
2014/06/12 PHP
php处理抢购类功能的高并发请求
2018/02/08 PHP
微信公众号开发之获取位置信息php代码
2018/06/13 PHP
PHP中散列密码的安全性分析
2019/07/26 PHP
laravel框架模型和数据库基础操作实例详解
2020/01/25 PHP
用javascript实现分割提取页面所需内容
2007/05/09 Javascript
jquery下异步提交表单 异步跨域提交表单
2010/11/17 Javascript
node.js中的fs.readFile方法使用说明
2014/12/15 Javascript
jQuery实现响应鼠标滚动的动感菜单效果
2015/09/21 Javascript
Javascript必知必会(四)js类型转换
2016/06/08 Javascript
JS动态计算移动端rem的解决方案
2016/10/14 Javascript
JS实现间歇滚动的运动效果实例
2016/12/22 Javascript
get  post jsonp三种数据交互形式实例详解
2017/08/25 Javascript
React Native使用fetch实现图片上传的示例代码
2018/03/07 Javascript
Vue实现按钮旋转和移动位置的实例代码
2018/08/09 Javascript
Vue中使用vux配置代码详解
2018/09/16 Javascript
vue页面切换过渡transition效果
2018/10/08 Javascript
对angular4子路由&辅助路由详解
2018/10/09 Javascript
JQuery Ajax如何实现注册检测用户名
2020/09/25 jQuery
[01:09:50]VP vs Pain 2018国际邀请赛小组赛BO2 第二场
2018/08/20 DOTA
机器学习实战之knn算法pandas
2019/06/22 Python
python 缺失值处理的方法(Imputation)
2019/07/02 Python
执行Django数据迁移时报 1091错误及解决方法
2019/10/14 Python
django2.2 和 PyMySQL版本兼容问题
2020/02/17 Python
简单了解Java Netty Reactor三种线程模型
2020/04/26 Python
基于python requests selenium爬取excel vba过程解析
2020/08/12 Python
世界上最好的帽子:Tilley
2016/11/27 全球购物
美国领先的家居装饰和礼品商店:Kirkland’s
2017/01/30 全球购物
求最大连续递增数字串(如"ads3sl456789DF3456ld345AA"中的"456789")
2015/09/11 面试题
医院党员公开承诺书
2014/08/30 职场文书
人身损害赔偿协议书范本
2014/09/27 职场文书
工作失职检讨书500字
2014/10/17 职场文书
2015年教师节活动总结
2015/03/20 职场文书
入党积极分子培养人意见
2015/06/02 职场文书
java实现对Hadoop的操作
2021/07/01 Java/Android