微信小程序支付之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_05_原型继承原理
Oct 13 Javascript
基于jquery的从一个页面跳转到另一个页面的指定位置的实现代码(带平滑移动的效果)
May 24 Javascript
JavaScript cookie的设置获取删除详解
Feb 11 Javascript
JavaScript二维数组实现的省市联动菜单
May 08 Javascript
JS+CSS实现美化的下拉列表框效果
Aug 11 Javascript
jquery制做精致的倒计时特效
Jun 13 Javascript
Javascript实现登录记住用户名和密码功能
Mar 22 Javascript
vue.js语法及常用指令
Oct 29 Javascript
详解angularjs实现echart图表效果最简洁教程
Nov 29 Javascript
d3.js实现自定义多y轴折线图的示例代码
May 30 Javascript
jQuery中常用动画效果函数知识点整理
Aug 19 jQuery
js实现小球在页面规定的区域运动
Jun 16 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/07/05 PHP
使用GDB调试PHP代码,解决PHP代码死循环问题
2015/03/02 PHP
PHP实现一个按钮点击上传多个图片操作示例
2020/01/23 PHP
jQuery AjaxQueue改进步骤
2011/10/06 Javascript
jquery的$getjson调用并获取远程的JSON字符串问题
2012/12/10 Javascript
javascript:;与javascript:void(0)使用介绍
2013/06/05 Javascript
基于Jquery+Ajax+Json实现分页显示附效果图
2014/07/30 Javascript
node.js中的fs.readdirSync方法使用说明
2014/12/17 Javascript
js实现可得到不同颜色值的颜色选择器实例
2015/02/28 Javascript
js实现楼层效果的简单实例
2016/07/15 Javascript
js仿京东轮播效果 选项卡套选项卡使用
2017/01/12 Javascript
使用bootstraptable插件实现表格记录的查询、分页、排序操作
2017/08/06 Javascript
详解Node.js中的Async和Await函数
2018/02/22 Javascript
JS将网址url转化为JSON格式的方法
2018/07/02 Javascript
微信小程序显示倒计时功能示例【测试可用】
2018/12/03 Javascript
详解Angular Forms中自定义ngModel绑定值的方式
2018/12/10 Javascript
layer关闭弹出窗口触发表单提交问题的处理方法
2019/09/25 Javascript
微信小程序实现单个卡片左滑显示按钮并防止上下滑动干扰功能
2019/12/06 Javascript
Python with用法实例
2015/04/14 Python
对numpy中布尔型数组的处理方法详解
2018/04/17 Python
python模拟表单提交登录图书馆
2018/04/27 Python
python自动发送邮件脚本
2018/06/20 Python
PyCharm代码提示忽略大小写设置方法
2018/10/28 Python
Python列表常见操作详解(获取,增加,删除,修改,排序等)
2019/02/18 Python
详解python中list的使用
2019/03/15 Python
Python使用selenium + headless chrome获取网页内容的方法示例
2019/10/16 Python
Python高级property属性用法实例分析
2019/11/19 Python
Python configparser模块应用过程解析
2020/08/14 Python
军训的自我鉴定
2013/12/10 职场文书
学生自我评价范文
2014/02/02 职场文书
初中作文评语大全
2014/04/23 职场文书
2014政府领导班子对照检查材料思想汇报(3篇)
2014/09/26 职场文书
杨善洲电影观后感
2015/06/04 职场文书
导游词之秦皇岛燕塞湖
2020/01/03 职场文书
如何通过一篇文章了解Python中的生成器
2022/04/02 Python
Python实现文字pdf转换图片pdf效果
2022/04/03 Python