微信小程序支付之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库还是自己写代码?
Jan 28 Javascript
Web前端设计模式  制作漂亮的弹出层
Oct 29 Javascript
javascript开发随笔二 动态加载js和文件
Nov 25 Javascript
用jquery实现点击栏目背景色改变
Dec 10 Javascript
JavaScript基础篇之变量作用域、传值、传址的简单介绍与实例
Jun 29 Javascript
关于JS中二维数组的声明方法
Sep 24 Javascript
谈谈VUE种methods watch和compute的区别和联系
Aug 01 Javascript
微信小程序之分享页面如何返回首页的示例
Mar 28 Javascript
对layui中表单元素的使用详解
Aug 15 Javascript
详解如何在webpack中做预渲染降低首屏空白时间
Aug 22 Javascript
vuejs router history 配置到iis的方法
Sep 20 Javascript
vue用BMap百度地图实现即时搜索功能
Sep 26 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中10个不常见却非常有用的函数
2010/03/21 PHP
php 检查电子邮件函数(自写)
2014/01/16 PHP
redis+php实现微博(一)注册与登录功能详解
2019/09/23 PHP
TNC vs BOOM BO3 第三场2.13
2021/03/10 DOTA
js 对联广告、漂浮广告封装类(IE,FF,Opera,Safari,Chrome
2009/11/26 Javascript
jquery 插件实现图片延迟加载效果代码
2010/02/06 Javascript
location.href 在IE6中不跳转的解决方法与推荐使用代码
2010/07/08 Javascript
JavaScript(JS) 压缩 / 混淆 / 格式化 批处理工具
2010/12/10 Javascript
Javascript学习笔记 delete运算符
2011/09/13 Javascript
js实现带搜索功能的下拉框实时搜索实时匹配
2013/11/05 Javascript
JavaScript+html5 canvas绘制缤纷多彩的三角形效果完整实例
2016/01/26 Javascript
基于javascript实现九宫格大转盘效果
2020/05/28 Javascript
Ionic如何创建APP项目
2016/06/03 Javascript
MUI实现上拉加载和下拉刷新效果
2017/06/30 Javascript
JavaScript基于面向对象实现的猜拳游戏
2018/01/03 Javascript
详解组件库的webpack构建速度优化
2018/06/18 Javascript
微信小程序监听用户登录事件的实现方法
2019/11/11 Javascript
浅谈JavaScript中的“!!”作用
2020/08/03 Javascript
[41:13]完美世界DOTA2联赛PWL S2 Forest vs Rebirth 第一场 11.20
2020/11/20 DOTA
初步解析Python中的yield函数的用法
2015/04/03 Python
python logging 日志轮转文件不删除问题的解决方法
2016/08/02 Python
python使用TensorFlow进行图像处理的方法
2018/02/28 Python
多个应用共存的Django配置方法
2018/05/30 Python
python根据url地址下载小文件的实例
2018/12/18 Python
python实现图片上添加图片
2019/11/26 Python
Python实现企业微信机器人每天定时发消息实例
2020/02/25 Python
python数字类型math库原理解析
2020/03/02 Python
使用python接受tgam的脑波数据实例
2020/04/09 Python
集世界奢侈品和设计师品牌的意大利精品买手店:Tessabit
2019/08/17 全球购物
某公司的.net工程师面试题笔试题
2013/11/22 面试题
眼镜促销方案
2014/03/15 职场文书
体育口号大全
2014/06/18 职场文书
基层党建工作汇报材料
2014/08/15 职场文书
简易离婚协议书范本2014
2014/10/15 职场文书
小学见习报告
2014/10/31 职场文书
幼儿园新学期开学寄语
2015/05/27 职场文书