微信小程序支付之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实现倒计时按钮功能代码分享
Sep 03 Javascript
15款jQuery分布引导插件分享
Feb 04 Javascript
jQuery中extend函数详解
Feb 13 Javascript
你知道setTimeout是如何运行的吗?
Aug 16 Javascript
通过bootstrap全面学习less
Nov 09 Javascript
laydate.js日期时间选择插件
Jan 04 Javascript
jQuery插件版本冲突的处理方法分析
Jan 16 Javascript
浅析vue component 组件使用
Mar 06 Javascript
jQuery实现鼠标经过显示动画边框特效
Mar 24 jQuery
玩转Koa之koa-router原理解析
Dec 29 Javascript
JavaScript TAB栏切换效果的示例
Nov 05 Javascript
vue前端工程的搭建
Mar 31 Vue.js
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
虫族 Zerg 历史背景
2020/03/14 星际争霸
PHP 页面跳转到另一个页面的多种方法方法总结
2009/07/07 PHP
php inc文件使用的风险和注意事项
2013/11/12 PHP
PHP模板引擎Smarty内建函数foreach,foreachelse用法分析
2016/04/11 PHP
PHP进程通信基础之信号量与共享内存通信
2017/02/19 PHP
PHP编程实现的TCP服务端和客户端功能示例
2018/04/13 PHP
Laravel框架中缓存的使用方法分析
2019/09/06 PHP
windows系统php环境安装swoole具体步骤
2021/03/04 PHP
json简单介绍
2008/06/10 Javascript
IE6下JS动态设置图片src地址问题
2010/01/08 Javascript
js select常用操作控制代码
2010/03/16 Javascript
Javascript实现的鼠标经过时播放声音
2010/05/18 Javascript
JavaScript定义类的几种方式总结
2014/01/06 Javascript
jquery 构造函数在表单提交过程中修改数据
2015/05/25 Javascript
Nodejs抓取html页面内容(推荐)
2016/08/11 NodeJs
bootstrap中的 form表单属性role="form"的作用详解
2017/01/20 Javascript
js使用swiper实现层叠轮播效果实例代码
2018/12/12 Javascript
vue element-ui el-date-picker限制选择时间为当天之前的代码
2019/11/07 Javascript
小程序简单两栏瀑布流效果的实现
2019/12/18 Javascript
JS相册图片抖动放大展示效果的示例代码
2021/01/29 Javascript
Python and、or以及and-or语法总结
2015/04/14 Python
python异常和文件处理机制详解
2016/07/19 Python
Python实现一个转存纯真IP数据库的脚本分享
2017/05/21 Python
python3实现跳一跳点击跳跃
2018/01/08 Python
浅谈Series和DataFrame中的sort_index方法
2018/06/07 Python
Django组件cookie与session的具体使用
2019/06/05 Python
Pandas DataFrame数据的更改、插入新增的列和行的方法
2019/06/25 Python
pyqt5、qtdesigner安装和环境设置教程
2019/09/25 Python
10个Python面试常问的问题(小结)
2019/11/20 Python
django中ImageField的使用详解
2020/12/21 Python
python re模块常见用法例举
2021/03/01 Python
HelloFresh奥地利:立即订购烹饪盒
2019/02/22 全球购物
仓库门卫岗位职责
2013/12/22 职场文书
领导四风问题整改措施思想汇报
2014/10/13 职场文书
小学三八妇女节活动总结
2015/02/06 职场文书
寒假安全保证书
2015/02/28 职场文书