微信小程序支付之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 设置标题的自动翻转
Oct 03 Javascript
浅谈关于JavaScript的语言特性分析
Apr 11 Javascript
基于JavaScript 声明全局变量的三种方式详解
May 07 Javascript
laytpl 精致巧妙的JavaScript模板引擎
Aug 29 Javascript
JavaScript兼容浏览器FF/IE技巧
Aug 14 Javascript
JS实现动态增加和删除li标签行的实例代码
Oct 16 Javascript
基于jQuery和Bootstrap框架实现仿知乎前端动态列表效果
Nov 09 Javascript
Bootstrap Search Suggest使用例子
Dec 21 Javascript
JS浅拷贝和深拷贝原理与实现方法分析
Feb 28 Javascript
用node撸一个监测复联4开售短信提醒的实现代码
Apr 10 Javascript
Windows下安装 node 的版本控制工具 nvm
Feb 06 Javascript
React中使用Vditor自定义图片详解
Dec 25 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
全文搜索和替换
2006/10/09 PHP
php实现设计模式中的单例模式详解
2014/10/11 PHP
CI(CodeIgniter)模型用法实例分析
2016/01/20 PHP
ThinkPHP表单令牌错误的相关解决方法分析
2016/05/20 PHP
PHP实现数据分页显示的简单实例
2016/05/26 PHP
[原创]PHP正则匹配中英文、数字及下划线的方法【用户名验证】
2017/08/01 PHP
PHP实现验证码校验功能
2017/11/16 PHP
jquery实现隐藏与显示动画效果/输入框字符动态递减/导航按钮切换
2013/07/01 Javascript
JavaScript页面模板库handlebars的简单用法
2015/03/02 Javascript
Javascript中的方法链(Method Chaining)介绍
2015/03/15 Javascript
JS/Jquery判断对象为空的方法
2015/06/11 Javascript
jquery  实现轮播图详解及实例代码
2016/10/12 Javascript
如何学JavaScript?前辈的经验之谈
2016/12/28 Javascript
详解微信小程序设置底部导航栏目方法
2017/06/29 Javascript
vue组件间通信六种方式(总结篇)
2019/05/15 Javascript
初学vue出现空格警告的原因及其解决方案
2019/10/31 Javascript
javascript设计模式 ? 状态模式原理与用法实例分析
2020/04/22 Javascript
python中将阿拉伯数字转换成中文的实现代码
2011/05/19 Python
Python通过matplotlib画双层饼图及环形图简单示例
2017/12/15 Python
python flask框架实现传数据到js的方法分析
2019/06/11 Python
python使用matplotlib绘制雷达图
2019/10/18 Python
django数据模型(Model)的字段类型解析
2019/12/25 Python
Python @property原理解析和用法实例
2020/02/11 Python
Keras实现支持masking的Flatten层代码
2020/06/16 Python
如何使用python socket模块实现简单的文件下载
2020/09/04 Python
Elasticsearch py客户端库安装及使用方法解析
2020/09/14 Python
美国学校用品、教室和教学商店:Discount School Supply
2018/04/04 全球购物
MAC彩妆英国官网:M·A·C UK
2018/05/30 全球购物
澳大利亚在线奢侈品时尚零售平台:Azura Runway
2021/01/13 全球购物
自我评价优秀范文分享
2013/11/30 职场文书
销售主管的自我评价分享
2014/01/03 职场文书
办公室务虚会发言材料
2014/10/20 职场文书
2014年行政执法工作总结
2014/12/11 职场文书
班主任工作经验交流会总结
2015/11/02 职场文书
Jackson 反序列化时实现大小写不敏感设置
2021/06/29 Java/Android
Java字符缓冲流BufferedWriter
2022/04/09 Java/Android