微信JSAPI支付

微信支付H5和JSAPI s: 证书序列号,在 账户中心 ▶ API安全 ▶ 管理证书 中可以看见,如果有多个证书,找到自己正在使用的证书序列号。-f: 微信商户API私钥文件目录,也就是第二步申请商户证书里面生成的 apiclient_key.pem 路径。原著:https://www.cnblogs.com/tinygeeker/p/17620498.html。平台证书跟上面申请的商户证书不是同一个东西,在后期请求中,平台证书和商户证书都要带上。-k: apiv3 秘钥,上面自己设置的32位数的密钥。 阅读详情

1.登录微信公众平台:
1.1设置密钥
1.2设置服务器需要访问的IP
1.3设置服务器配置(上篇文章写到)
1.4查看APPID
在这里插入图片描述
2.登录商户平台
2.1申请和微信公众平台进行绑定
2.2域名回调地址
2.3查看API密钥(注意是V2版本还是V3版本)
2.4查看商户号

3.代码编写
3.1进行统一下单接口 (代码如下)
3.2返回的参数给前端,由前端进行调起微信支付
3.3后端设置回调地址和接口,进行设置订单的状态。

 var tenPayData = new TenPayRequestData(
                entity.AppId,
                entity.MchNo,
                "微信支付通知",
                outTradeNo,
                payMoney,
                ConfigurationManager.AppSettings["IP"],
                notifyUrl,
                (TenPayV3Type)Enum.Parse(typeof(TenPayV3Type), payType, true),
                openID,
                entity.MchKey,
                WeixinHelper.Tools.GetNonceStr(),
                attach,
                string.Empty
            );

            var unifiedordeResult = WeixinHelper.Pay.Unifiedorder(tenPayData);

public TenPayRequestData(string appId, string mchId, string body, string outTradeNo, decimal totalFee, string spbillCreateIp, string notifyUrl, TenPayV3Type tradeType, string openid, string key, string nonceStr, string attach, string product_id)
        {
            AppId = appId;
            MchId = mchId;
            NonceStr = nonceStr;
            Body = body ?? "Senparc TenpayV3";
            OutTradeNo = outTradeNo;
            TotalFee = totalFee;
            SpbillCreateIP = spbillCreateIp;
            NotifyUrl = notifyUrl;
            TradeType = tradeType;
            OpenId = openid;
            Key = key;
            Attach = attach;
            Product_id = product_id;

            #region 设置RequestHandler

            //创建支付应答对象
            PackageRequestHandler = new RequestHandler(null);
            //初始化
            PackageRequestHandler.Init();

            this.Body = Body = Body.Length > 128 ? Body.Substring(0, 120) + "..." : Body;

            //设置package订单参数
            PackageRequestHandler.SetParameter("appid", this.AppId);          //公众账号ID
            PackageRequestHandler.SetParameter("attach", this.Attach);
            PackageRequestHandler.SetParameter("mch_id", this.MchId);         //商户号
            PackageRequestHandler.SetParameter("nonce_str", this.NonceStr);                    //随机字符串
            PackageRequestHandler.SetParameter("body", this.Body);    //商品信息
            PackageRequestHandler.SetParameter("out_trade_no", this.OutTradeNo);      //商家订单号
            PackageRequestHandler.SetParameter("total_fee", (this.TotalFee * 100).ToString().Replace(".00", string.Empty).Replace(".0", string.Empty));                    //商品金额,以分为单位(money * 100).ToString()
            PackageRequestHandler.SetParameter("spbill_create_ip", this.SpbillCreateIP);   //用户的公网ip,不是商户服务器IP
            PackageRequestHandler.SetParameter("notify_url", this.NotifyUrl);          //接收财付通通知的URL
            PackageRequestHandler.SetParameter("trade_type", this.TradeType.ToString());                        //交易类型
            PackageRequestHandler.SetParameter("openid", this.OpenId);
            PackageRequestHandler.SetParameter("product_id", this.Product_id);
            Sign = PackageRequestHandler.CreateMd5Sign("key", this.Key);
            PackageRequestHandler.SetParameter("sign", Sign);                       //签名
            #endregion
        }

 var handle = WeixinHelper.Pay.GetJsPaySign(
                            entity.AppId,
                            WeixinHelper.Tools.GenerateTimeStamp().ToString(),
                            WeixinHelper.Tools.GetNonceStr(),
                            "prepay_id=" + unifiedordeResult.prepay_id,
                            entity.MchKey
                            );

                    var result = handle.GetAllParameters();
                    return Result.GetSuccess(result);

 public static RequestHandler GetJsPaySign(string appId, string timeStamp, string nonceStr, string package, string key,
                string signType = "MD5")
            {
                //设置支付参数
                RequestHandler paySignReqHandler = new RequestHandler(null);
                paySignReqHandler.SetParameter("appId", appId);
                paySignReqHandler.SetParameter("timeStamp", timeStamp);
                paySignReqHandler.SetParameter("nonceStr", nonceStr);
                paySignReqHandler.SetParameter("package", package);
                paySignReqHandler.SetParameter("signType", "MD5");
                var paySign = paySignReqHandler.CreateMd5Sign("key", key);
                paySignReqHandler.SetParameter("paySign", paySign);

                return paySignReqHandler;
            }

回调代码模块

 public ActionResult WeiXinPayNotify()
        {
            try
            {
                FixResponseHandler resHandler = new FixResponseHandler(HttpContext);
                resHandler.Init();

                string return_code = resHandler.GetParameter("return_code");
                string return_msg = resHandler.GetParameter("return_msg");

                string res = null;

                LogHelper.Info("微信支付回调:" + resHandler.ParseXML());

                resHandler.SetKey(H5Config.MichScript);

                //验证请求是否从微信发过来(安全)
                if (resHandler.IsTenpaySign())
                {
                    res = Handle(resHandler.GetParameter("out_trade_no"), resHandler.GetParameter("attach"));
                }
                else
                {
                    res = "wrong";
                }

                string xml = string.Format(@"<xml>
                                            <return_code><![CDATA[{0}]]></return_code>
                                            <return_msg><![CDATA[{1}]]></return_msg>
                                            </xml>", return_code, return_msg);

                LogHelper.Info("微信支付处理结果:" + res);

                return Content(xml, "text/xml");
            }
            catch (Exception ex)
            {
                LogHelper.Info("Result_Error:" + ex.ToString());

                return null;
            }
        }
        private Dictionary<string, string> GetRequestPost()
        {
            Dictionary<string, string> sArray = new Dictionary<string, string>();

            if (HttpContext.Request.Method.ToUpper() == "POST" && HttpContext.Request.HasFormContentType)
            {
                foreach (KeyValuePair<string, StringValues> item in HttpContext.Request.Form)
                {
                    sArray.Add(item.Key, item.Value[0]);
                }
            }

            foreach (KeyValuePair<string, StringValues> item2 in HttpContext.Request.Query)
            {
                sArray.Add(item2.Key, item2.Value[0]);
            }

            return sArray;

        }

        private string Handle(string out_trade_no,string memberCode)
        {
            var service = IocProxyFactory.GetService<IH5Service>();

            LogHelper.Info("微信支付流水号:" + out_trade_no);

            var result = service.SetWxFinishPayCallback(out_trade_no,memberCode);

            if (result)
            {
                return "success";
            }
            else
            {
                return "wrong";
            }
        }

微信JSAPI支付PHP源码 微信支付,开发过的小朋友都踩过坑,在此附上jsapi源码,希望帮到小伙伴们。 1、支付授权目录设置 2、公众平台,用户在网页授权页同意授权给公众号后,微信会将授权数据传给一个回调页面,回调页面需在此域名下,以确保安全可靠。 3、PHP代码 控制器: <?php namespace app\wxpay\controller; class JsapiController { pu... 阅读详情

相关推荐

微信支付(JSAPI支付)接入流程

JSAPI支付是指商户通过调用微信支付提供的JSAPI接口,在支付场景中调起微信支付模块完成收款。

weixin_44777680的博客 5120

微信JSAIP支付(调起支付)paySign签名,超详情

【代码】微信JSAIP支付(调起支付)paySign签名,超详情。

分享 AI Agent、大模型与后端开发实战; 空门技术栈。 1万+

微信内置h5浏览器 JSAPI 支付

getBrandWCPayRequest是一种基于微信公众号和微信支付平台的支付方式。它为商户提供了一种便捷的方式来处理用户的付款请求。通过getBrandWCPayRequest支付,用户可以在微信客户端快速完成支付过程,无需再次输入支付信息。WeixinJSBridge是微信内置浏览器提供的JavaScript桥接工具,开发者可以使用它在web页面中调用微信客户端的接口和功能。通过使用WeixinJSBridge,开发者可以实现更多定制化的功能,提升用户体验。

每天都要努力学习哦~~ 6033

亲测全套支付可用(微信支付宝)复制粘贴即可跑

亲测全套支付可用(微信支付宝)复制粘贴即可跑 /** * @Auther: Mike * @Date: 2018/8/30 15:11 * @Description: 支付宝后台接口 */ @Slf4j @RestController @RequestMapping(value = "/pay") @Api(value="支付", tags="支付模块") public class PayController { @Autowired AliPayService aliPaySe

weixin_43285931的博客 1万+

PHP微信支付JSAPI网页支付Native原生支付

PHP对接Paypal支付,其中还对接了支付宝支付,微信支付,微信JSAPI支付,统统搞定!

小木木的开发日常 4294

SpringBoot Vue 微信 JSAPI 微信支付

如果用户在微信客户端中访问第三方网页,服务号可以通过微信网页授权机制,来获取用户基本信息,进而实现业务逻辑,参考。WeixinJSBridge.invoke的返回参数。后端:配置WeixinJSBridge参数。前端:配置weixin-js-sdk参数。后端:预支付prepay_id。wx.config的返回参数。前端:获取授权码code。后端:获取openid。

风信子 968

微信 JSAPI 支付流程

微信支付分为5种: Jsapi支付,二维码支付,H5支付,小程序支付,App支付 Jsapi支付流程: (1) 通过oauth协议获取open_id a.第一步:用户同意授权,获取code 在确保微信公众账号拥有授权作用域(scope参数)的权限的前提下(服务号获得高级接口后,默认拥有scope参数中的snsapi_base和snsapi_userinfo),引导关注者打开如下页面: https:...

Yan 小铁匠 1万+

Seurat 单细胞转录组测序数据分析教程(三)——python(scanpy)

文章参考至,做了一个更详细的解读。本教程探讨了 scanpy 的可视化可能性,分为三个部分:嵌入的散点图(例如 UMAP、t-SNE)使用已知标记基因鉴定簇差异表达基因的可视化在本教程中,我们将使用来自 10x 的数据集,其中包含来自PBMC的 68k 个细胞。Scanpy 在其分布中包括该数据集的简化样本,该数据集仅包含 700 个细胞和 765 个高度可变的基因。该数据集已经过预处理和 UMAP 计算。在本教程中,我们还将使用以下文献标记:B细胞:CD79A、MS4A1。

coffeeii的博客 5828

微信支付之JSAPI支付

微信支付之jsapi支付

wg666888的博客 5791

Mask2former自定义数据集实现滑坡语义分割

先介绍一下这次用的数据集:Bijie Landslide Dataset,是武汉大学在Triplesat卫星上裁剪的数据集,包含770张滑坡(image、mask、dem、边界坐标txt)和2003张非滑坡数据(dem、image)。直接在ade20k修改,按照路径和设置将预处理数据放好,该步骤很快就能结束,打开的图片是全黑的,因为0和1在图片上肉眼较难区分。bijie的数据集可以直接使用,接下去的步骤是1、预处理数据。配置文件修改训练类别和训练类型,由于我们分割的是滑坡,所以进行语义分割。

weixin_57812838的博客 2216

Python调用Google Trends官方数据接口实战指南

Google Trends作为全球最权威的搜索热度分析工具,其数据本质是公开、结构化、可编程访问的时序指标,而非需爬取的网页内容。其底层基于标准HTTP协议与JSON API交互,核心原理在于复现用户浏览器行为——通过/explore接口获取token,再凭token请求/widgetdata/multiline等端点获取归一化(0-100)时间序列数据。该技术路径规避了Selenium渲染依赖与非官方库的脆弱性,具备高稳定性、易调试、可监控等工程优势,广泛应用于竞品监测、内容选题验证、地域营销策略制定等业

weixin_29789925的博客 421

微信支付集成实战:基于wechat3 SDK的JSAPI支付开发指南

微信支付作为主流的移动支付方式,已成为众多开发者的必备技能。本文将为你介绍如何使用wechat3 SDK快速实现JSAPI支付功能,从环境准备到代码实现,让你轻松掌握微信支付开发的核心要点。 ## 1. 环境准备与安装 ### 1.1 安装wechat3 SDK 首先,你需要通过Composer安装wechat3 SDK。在项目根目录下执行以下命令: ```bash composer re

gitblog_01139的博客 696

从零开始学华为设备:手把手教你用ENSP搭建OSPF实验环境(附拓扑文件)

本文详细介绍了如何使用华为ENSP模拟器从零开始搭建OSPF多区域网络实验环境,包括拓扑规划、设备配置、OSPF参数优化及故障排查技巧。通过实战案例和配置示例,帮助网络工程师快速掌握华为设备的OSPF协议配置,提升企业网络环境中的实战能力。

weixin_29305313的博客 286

〔支付接入〕微信的 h5 支付和 jsapi 支付

学会微信支付,打开你的财富之门

国内某知名游戏公司小菜鸡工程师 9549

上海计算机学会2020年5月月赛C++乙组T2经济普查

中国正在以前所未有的力度推进脱贫攻坚,国家计划在2020年使得在现行标准下的贫困人口实现全面脱贫,为此,需要对居民的经济状况进行普查。 题目描述 给定一个正整数n,表示人口数量。一开始,每个居民拥有的财产记为a1​,a2​,⋯,an​,财产可能发生两种变化: 一种来源于个体,由某个居民的经济活动而产生。在某个时刻,某个居民的财产会直接变成某个数值,可能升高也可能降低。 一种来源于政策,在某个时刻,国家会对财产低于某个标准线全部的居民,实施政策支持,使得他们的财产全部正好到达标准线。 给定这些变

长春高老师编程 911

手把手教你学Simulink--基于Simulink的近端策略优化(PPO)路径规划仿真建模

本文详细介绍了如何利用Simulink进行近端策略优化(PPO)路径规划的仿真建模。首先,文章概述了PPO路径规划的特点和挑战,强调了其在连续或离散动作空间问题中的高效性和稳定性。接着,列出了所需的工具和环境,包括MATLAB/Simulink、Reinforcement Learning Toolbox等。随后,文章分步骤详细讲解了从定义任务需求到验证与分析的整个仿真建模过程,包括创建Simulink项目、集成智能体模型、构建环境模型、编写PPO路径规划逻辑、将逻辑集成到Simulink模型中以及最终的验

MHD0815的博客 166

微信JSAPI支付教程

@author StormMa @date 2017-05-23 01:41 生命不息,奋斗不止! 最近一个项目中用到了微信开发,之前没有做过支付相关的东西,算是拿这个来练练手,刚开始接触支付时候很懵逼,加上微信支付开发文档本来就讲得不清楚,我是彻底蒙圈了,参考了很多代码之后,算是有一点思路了。 用户认证获取openId 如果你知识关注支付流程,这块可以跳过,因为我知道这些你已经做过了

StormMaybin的博客 3143

别再被 SerialPort 坑了!C# 串口通信的 3 大隐形陷阱与工业级解决方案

NET的SerialPort类更适合实验室调试,而非工业现场——它的设计目标是“能用”,而非“稳定”。工业级串口通信的核心,是在SerialPort基础上构建一层“防护壳”,用主动轮询对抗事件失效,用硬件级操作解决缓冲区谎言,用原子性流程避免关闭死锁。本文提供的类已在30+工业项目中验证(包括汽车生产线、智能仓储、环境监测),可直接替换原生SerialPort,解决90%以上的“玄学问题”。记住:工业场景的“稳定”,从来都不是靠运气,而是靠对每个细节的偏执把控。

这里只有干货:从 Modbus 通信到 MES 对接,从 YOLO 训练到工控机部署,带你搞定工业软件开发全流程。 745

微信小程序实现支付功能——微信jsapi支付

微信小程序jsapi支付的实现涉及多个步骤,主要包括前端请求订单信息、后端处理订单并返回支付参数、前端调用jsapi进行支付等。

种一棵树,最好的时间是十年前,其次是现在。 6005

万字长文:YOLOv5+RK3588 NPU多线程加速全攻略——从理论到部署的终极优化

RK3588 NPU多线程加速优化教程摘要 本教程深入讲解了如何利用线程池技术优化RK3588 NPU上的YOLO目标检测模型推理性能。RK3588内置3个NPU核心,理论算力达6TOPS,为多线程优化提供了硬件基础。教程详细解析了线程池的核心组件(任务队列、工作线程、同步机制)和实现架构,包括类设计、初始化流程、工作线程逻辑(任务获取、NPU推理、结果存储三个阶段)以及任务提交/获取机制。通过预分配模型实例、线程绑定、流量控制等优化手段,实现了从单线程28FPS到多线程120FPS的显著性能提升,为边缘A

LXY_LOVE36的博客 1101

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

微信jsapi支付对接

微信jsapi对接首先需要获取code传给后台以获取用户的openid 刚进入页面需要判断是否是在微信app内部打开你页面的连接 var is_weixin = (function(){return navigator.userAgent.toLowerCase().indexOf('micromessenger') !== -1})(); 当页面加载完成(){ if(is_weixin){ ...

LI_YICHAO的博客 1629

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

H5网站接入微信支付(H5支付+JSAPI支付)

最近开发H5项目,需要接入微信支付,这里记录一下。 场景 项目是 H5 项目,这里踩坑了,以为接入 H5 支付就可以了,后面发现 H5 支付只能在微信外调用,所以后面连忙加入 JSAPI 支付 H5支付 H5支付是指商户在微信客户端外的移动端网页展示商品或服务,用户在前述页面确认使用微信支付时,商户发起本服务呼起微信客户端...

砷碲 - Shendi 1万+

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

微信 JSAPI 支付流程

微信支付

java13992394428的博客 7177

JAVA开发微信支付(JSAPI支付)

最近开发完了微信支付功能模块,下面就趁热打铁整理下微信支付(JSAPI支付)相关的知识。 1、JSAPI支付 JSAPI支付是用户在微信中打开商户的H5页面,商户在H5页面通过调用微信支付提供的JSAPI接口调起微信支付模块完成支付。应用场景有: (1)用户在微信公众账号内进入商家公众号,打开某个主页面,完成支付 (2)用户的好友在朋友圈、聊天窗口等分享商家页面连接,用户点击链接打开商家页面,完成支付 (3) 将商户页面转换成二维码,用户扫描二维码后在微信浏览器中打开页面后完成支付 微信支付..

明静致远 4867

微信支付开发总结(JSAPI支付)

微信支付开发总结 其实整体来讲做微信支付不难,由于第一次开发,前面一两天需要阅读它官方的开发文档和下载sdk看看它官方提供的源码,不得不吐槽一下,官方文档做的不是很好,有些问题讲得不够详细,并且提供的sandbox测试,一直出现网络超时的问题,只有让测试方用真实支付进行测试 首先是看微信的文档,了解它支付的整个流程 官方网址:https://pay.weixin.qq.com/wiki/doc/a...

wj6060的博客 3189
上一篇: 关于微信公众平台服务器配置Token
下一篇: 关于微信JSAPI支付验证签名失败
Stupid_Insect
博客等级 码龄7年 5粉丝 48原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值