微信小程序支付之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 程序编码规范
Nov 23 Javascript
Javascript单元测试框架QUnitjs详细介绍
May 08 Javascript
window.open()详解及浏览器兼容性问题示例探讨
May 29 Javascript
实例讲解js验证表单项是否为空的方法
Jan 09 Javascript
正则表达式,替换所有HTML标签的简单实例
Nov 28 Javascript
jQueryUI 拖放排序遇到滚动条时有可能无法执行排序的小bug及解决方案
Dec 19 Javascript
js实现做通讯录的索引滑动显示效果和滑动显示锚点效果
Feb 18 Javascript
详谈js中标准for循环与foreach(for in)的区别
Nov 02 Javascript
利用Angular2 + Ionic3开发IOS应用实例教程
Jan 15 Javascript
element 结合vue 在表单验证时有值却提示错误的解决办法
Jan 22 Javascript
ES6 对象的新功能与解构赋值介绍
Feb 05 Javascript
Vue中fragment.js使用方法小结
Feb 17 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 park、unpark、ord 函数使用方法(二进制流接口应用实例)
2010/10/19 PHP
表格展示无限级分类(PHP版)
2012/08/21 PHP
PHP编写RESTful接口的方法
2016/02/21 PHP
php 使用fopen函数创建、打开文件详解及实例代码
2016/09/24 PHP
php数组实现根据某个键值将相同键值合并生成新二维数组的方法
2017/04/26 PHP
用js得到网页中所有的div的id
2020/10/19 Javascript
js ondocumentready onmouseover onclick onmouseout 样式
2010/07/22 Javascript
js 数据类型转换总结笔记
2011/01/17 Javascript
JQuery选择器特辑 详细小结
2012/05/14 Javascript
简介JavaScript中的setDate()方法的使用
2015/06/11 Javascript
浅谈JavaScript中的string拥有方法的原因
2015/08/28 Javascript
JavaScript实现in-place思想的快速排序方法
2016/08/07 Javascript
bootstrap table动态加载数据示例代码
2017/03/25 Javascript
Vue2.0 组件传值通讯的示例代码
2017/08/01 Javascript
使用MUI框架模拟手机端的下拉刷新和上拉加载功能
2017/09/04 Javascript
Popup弹出框添加数据实现方法
2017/10/27 Javascript
解决option标签selected="selected"属性失效的问题
2017/11/06 Javascript
详解vue中使用微信jssdk
2019/04/19 Javascript
Vue项目中使用flow做类型检测的方法
2020/03/18 Javascript
[03:36]DOTA2完美大师赛coL战队趣味视频——我演你猜
2017/11/23 DOTA
python3爬虫之设计签名小程序
2018/06/19 Python
使用pandas实现csv/excel sheet互相转换的方法
2018/12/10 Python
Python字典对象实现原理详解
2019/07/01 Python
超实用的 30 段 Python 案例
2019/10/10 Python
python实现大战外星人小游戏实例代码
2019/12/26 Python
Python 统计位数为偶数的数字代码详解
2020/03/15 Python
html5的canvas元素使用方法介绍(画矩形、画折线、圆形)
2014/04/14 HTML / CSS
电信专业毕业生推荐信
2013/11/18 职场文书
老师自我鉴定范文
2013/12/25 职场文书
人事任命书格式
2014/06/05 职场文书
农民工讨薪标语
2014/06/26 职场文书
幼儿园见习报告
2014/10/30 职场文书
离婚协议书范本
2015/01/26 职场文书
新店开业策划方案怎么书写?
2019/07/05 职场文书
为什么中国式养孩子很累?
2019/08/07 职场文书
nginx 配置缓存
2022/05/11 Servers