微信小程序支付之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的可以控制左右滚动及自动滚动效果的代码
Jul 25 Javascript
ASP.NET jQuery 实例16 通过控件CustomValidator验证RadioButtonList
Feb 03 Javascript
Javascript/Jquery——简单定时器的多种实现方法
Jul 03 Javascript
关于JS中的闭包浅谈
Aug 23 Javascript
Jquery自定义button按钮的几种方法
Jun 11 Javascript
js计算德州扑克牌面值的方法
Mar 04 Javascript
Bootstrap每天必学之导航条
Nov 27 Javascript
js调用刷新界面的几种方式
May 03 Javascript
详解vue 实例方法和数据
Oct 23 Javascript
React注册倒计时功能的实现
Sep 06 Javascript
如何让node运行es6模块文件及其原理详解
Dec 11 Javascript
解决Idea、WebStorm下使用Vue cli脚手架项目无法使用Webpack别名的问题
Oct 11 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位字符代码
2009/03/26 PHP
php实现简单爬虫的开发
2016/03/28 PHP
PHP实现腾讯与百度坐标转换
2017/08/05 PHP
用XMLDOM和ADODB.Stream实现base64编码解码实现代码
2010/11/28 Javascript
JQuery处理json与ajax返回JSON实例代码
2014/01/03 Javascript
JavaScript使用Replace进行字符串替换的方法
2015/04/14 Javascript
javascript数据类型验证方法
2015/12/31 Javascript
js实现页面跳转的五种方法推荐
2016/03/10 Javascript
Angular和百度地图的结合实例代码
2016/10/19 Javascript
微信小程序引用公共js里的方法的实例详解
2017/08/17 Javascript
jquery操作ul的一些操作笔记整理(干货)
2017/08/31 jQuery
谈谈vue中mixin的一点理解
2017/12/12 Javascript
搭建vue开发环境
2018/07/19 Javascript
详解ES6 Promise对象then方法链式调用
2018/10/20 Javascript
微信小程序配置服务器提示验证token失败的解决方法
2019/04/03 Javascript
Vue实现购物车的全选、单选、显示商品价格代码实例
2019/05/06 Javascript
vue路由中前进后退的一些事儿
2019/05/18 Javascript
[01:07:53]RNG vs VG 2019国际邀请赛小组赛 BO2 第一场 8.15
2019/08/17 DOTA
Python计算三维矢量幅度的方法
2015/06/15 Python
CentOS安装pillow报错的解决方法
2016/01/27 Python
浅谈编码,解码,乱码的问题
2016/12/30 Python
python 划分数据集为训练集和测试集的方法
2018/12/11 Python
详解python 3.6 安装json 模块(simplejson)
2019/04/02 Python
python批量识别图片指定区域文字内容
2019/04/30 Python
python自制包并用pip免提交到pypi仅安装到本机【推荐】
2019/06/03 Python
PyQt5根据控件Id获取控件对象的方法
2019/06/25 Python
用Python实现定时备份Mongodb数据并上传到FTP服务器
2021/01/27 Python
高清屏下canvas重置尺寸引发的问题的解决
2019/10/14 HTML / CSS
中专毕业自我鉴定
2013/10/16 职场文书
电气技术员岗位职责
2013/11/19 职场文书
食品安全检查制度
2014/02/03 职场文书
美术指导助理求职信
2014/04/20 职场文书
汉语言文学专业自荐信
2014/06/11 职场文书
公司收款委托书范本
2014/09/20 职场文书
小学数学国培研修日志
2015/11/13 职场文书
小公司融资,商业计划书的8切记
2019/07/15 职场文书