c#发起微信支付

简介: c#发起微信支付

1.项目引用 Senparc.Weixin.TenPay  v1.6.400版本

2.服务端代码

using Senparc.Weixin.TenPay;
using Senparc.Weixin.TenPay.V3;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
namespace zzzili
{    
    public class WXPay
    {
        /// <summary>
        /// 
        /// </summary>
        /// <param name="appId">appid</param>
        /// <param name="mchId">商户id</param>
        /// <param name="body">商品描述</param>
        /// <param name="outTradeNo">第三方订单号</param>
        /// <param name="totalFee">总金额分</param>
        /// <param name="spbillCreateIp">客户端ip</param>
        /// <param name="notifyUrl">通知地址</param>
        /// <param name="openid">用户openid</param>
        /// <param name="key">商户API密钥</param>
        /// <returns></returns>
        public static Dictionary<string, object> startPay(string appId, string mchId, string body, string outTradeNo, int totalFee, string spbillCreateIp, string notifyUrl, string openid, string key)
        {
            var timeStamp = TenPayV3Util.GetTimestamp();//时间戳
            var nonceStr = TenPayV3Util.GetNoncestr();//随机字符串           
            TenPayV3UnifiedorderRequestData tenPayV3 = new TenPayV3UnifiedorderRequestData(appId, mchId, body, outTradeNo, totalFee, spbillCreateIp, notifyUrl, Senparc.Weixin.TenPay.TenPayV3Type.JSAPI, openid, key, nonceStr);
            //提交支付接口
            UnifiedorderResult result = TenPayV3.Unifiedorder(tenPayV3);
            string package = "prepay_id=" + result.prepay_id;
            Dictionary<string, object> payEntity = new Dictionary<string, object>();
            payEntity.Add("timeStamp", timeStamp);
            payEntity.Add("nonceStr", nonceStr);
            payEntity.Add("package", package);
            payEntity.Add("signType", "MD5");
            payEntity.Add("paySign", TenPayV3.GetJsPaySign(appId, timeStamp, nonceStr, package, key, "MD5"));
            return payEntity;
        }
    }
}

3.小程序端代码

              wx.requestPayment({
                "timeStamp": res.data.Data.timeStamp,
                "nonceStr": res.data.Data.nonceStr,
                "package": res.data.Data.package,
                "signType": res.data.Data.signType,
                "paySign": res.data.Data.paySign,
                "success": function(res) {
                  console.log(res);
                },
                "fail": function(res) {
                  console.log(res);
                },
                "complete": function(res) {
                  console.log(res);
                }
              });

3.支付结果通知

[HttpGet]
        [HttpPost]
        public string paynotify()
        {
            try
            {
                YFLog.logInfo("PayNotify==========================start");
                ResponseHandler resHandler = new ResponseHandler(HttpContext.Current);
                string return_code = resHandler.GetParameter("return_code");
                string return_msg = resHandler.GetParameter("return_msg");
                resHandler.SetKey(wx_key);//商户APIkey
                if (resHandler.IsTenpaySign() && return_code.ToUpper() == "SUCCESS")
                {
                    //直到这里,才能认为交易真正成功了,可以进行数据库操作,但是别忘了返回规定格式的消息!
                    string out_trade_no = resHandler.GetParameter("out_trade_no");
                    string transaction_id = resHandler.GetParameter("transaction_id");
                    string total_fee = resHandler.GetParameter("total_fee");
                    YFLog.logInfo("PayNotifyUrl回调", "支付成功");
                }
                else
                {
                    YFLog.logInfo("PayNotifyUrl回调", "支付失败");
                }
                return string.Format(@"<xml><return_code><![CDATA[{0}]]></return_code><return_msg><![CDATA[{1}]]></return_msg></xml>", return_code, return_msg);
            }
            catch (Exception ex)
            {
                YFLog.logInfo(ex.Message);
                throw;
            }
        }
相关文章
|
6月前
|
移动开发 JavaScript 安全
C# 实现微信自定义分享
C# 实现微信自定义分享
|
6月前
|
小程序 前端开发 C#
C#微信公众号HIS预约挂号系统源码
微信公众号预约挂号系统、支付宝小程序预约挂号系统主要是让自费、医保患者在手机上就能实现就医全过程,实时预约挂号、自费、医保结算,同时还可以查询检查检验报告等就诊信息,真正实现了让信息“多跑路”,让群众“少跑腿”。系统与HIS对接,通过医院微信公众号,患者用身份证注册以后,可以预约看诊的时间、医生挂号缴费。预约成功后,会收到预约码或二维码,患者可以在预约的时间段,前往医院看诊。既可以节约患者的等待时间,又可以降低医院的负荷。 一、开发环境 ❀技术架构:net     ❀开发语言:C# ❀开发工具:VS2019     ❀前端框架:uni-app     ❀后端框架:net     ❀数 据
141 1
|
6月前
|
人工智能 机器人 C#
Windows编程课设(C#)——基于WPF和.net的即时通讯系统(仿微信)
一款参考QQ、微信的即时通讯软件。采用CS结构,客户端基于.Net与WPF开发,服务端使用Java开发。
|
6月前
|
C#
C# 实现微信退款及对帐
C# 实现微信退款及对帐
|
小程序 算法 API
可能是全网最完整的 C# 版微信 SDK
可能是全网最完整的 C# 版微信 SDK
425 0
|
API C#
C# 企业微信消息推送对接
C# 企业微信消息推送对接
987 0
C# 企业微信消息推送对接
|
XML JSON C#
C# 微信海报
最近悟出来一个道理,在这儿分享给大家:学历代表你的过去,能力代表你的现在,学习代表你的将来。我们都知道计算机技术发展日新月异,速度惊人的快,你我稍不留神,就会被慢慢淘汰!因此:每日不间断的学习是避免被淘汰的不二法宝。
1399 0
|
JavaScript 程序员 C#
一个C#程序员学习微信小程序的笔记
一个C#程序员学习微信小程序的笔记 客户端打开小程序的时候,就将代码包下载到本地进行解析,首先找到了根目录的 app.json ,知道了小程序的所有页面。 在这个Index页面就是我们的首页,客户端在启动的时候,将首页的代码装载进来,通过微信的机制,就渲染出来了页面。
2525 0
|
C#
C# 实现生成带二维码的专属微信公众号推广海报
原文:C# 实现生成带二维码的专属微信公众号推广海报 很多微信公众号中需要生成推广海报的功能,粉丝获得专属海报后可以分享到朋友圈或发给朋友,为公众号代言邀请好友即可获取奖励的。海报自带渠道二维码,粉丝长按二维码即可关注微信公众号,从而达到吸粉的目的。
2360 0
|
存储 监控 C#
基于C#简单实现的微信网页版接口
曾经,碎碎念的烦弃微信各种功能,无法拒绝语音消息,讨厌的微商,讨厌的领导,蛋疼的界面
3338 0