使用开源库MAGICODES.WECHAT.SDK进行微信公众号支付开发
概要
博客使用Word发博,发布后,排版会出现很多问题,敬请谅解。可加群获取原始文档。
本篇主要讲解微信支付的开发流程,相关业务基于MAGICODES.WECHAT.SDK实现。通过本篇教程,您可以很方便的快速完成微信公众号支付的开发。
关于Magicodes.WeChat.SDK
MAGICODES.WECHAT.SDK为心莱团队封装的轻量级微信SDK,现已全部开源,开源库地址为:https://github.com/xin-lai/Magicodes.WeChat.SDK
更多介绍,请关注后续博客。
官方博客:http://www.cnblogs.com/codelove/
相关开源库地址:https://github.com/xin-lai
微信公众号支付
用户已有商城网址,用户通过微信消息、微信扫描二维码、微信自定义菜单等操作在微信内打开网页时,可以调用微信支付完成下单购买流程。
支付流程
微信的支付流程图太复杂,这里我画了一个相对简单的:
开发实践
开发流程图
配置微信支付授权目录
- 首先,需要登录公众号后台,然后进入【微信支付】页面
- 设置【开发配置】
发起支付的页面目录必须与设置的精确匹配。并将支付链接发到对应的公众号会话窗口中才能正常发起支付测试。注意正式目录一定不能与测试目录设置成一样,否则支付会出错。
注意:如果是使用测试目录的地址,一定要记得把个人测试微信号添加到白名单。另外,请注意红框内说明,否则很容易掉坑里。
配置OAUTH域名以及JSSDK
使用微信支付,需要通过OAUTH获取用户的OPENID,因为要调用JS API,那么JSSDK授权也是需要的。
相关配置界面如下:
引用Magicodes.WeChat.SDK并且注册相关配置
Magicdoes.WeChat.SDK可以通过Nuget包来引用,引用之后,需要先做一些初始化设置。
- 初始化SDK配置
这里初始化了SDK配置,并且注册了相关函数。比如获取支付配置函数,这里可以编写自己的获取支付配置的逻辑。
如果是使用Magicodes.WeiChat或者是Magicodes.Shop,那么可以在相关设置界面设置微信支付相关参数,如下所示:
- 设置微信配置
打开Magicodes.WeiChat设置界面,配置微信支付相关参数。支付配置模型如下所示:
public interface IWeChatPayConfig
{
/// <summary>
/// 证书相对路径
/// </summary>
string PayCertPath { get; set; }
/// <summary>
/// 证书密钥(与微信商户平台商户MchID一致)
/// </summary>
string CertPassword { get; set; }
/// <summary>
/// 支付密钥
/// </summary>
string TenPayKey { get; set; }
/// <summary>
/// 商户Mch_ID
/// </summary>
string MchId { get; set; }
/// <summary>
/// 支付完成后的回调处理页面
/// </summary>
string Notify { get; set; }
}
添加支付页,设置支付参数
在开始支付之前,我们需要创建一个支付页。并且生成支付相关参数,如下面代码所示:
关于OPENID的获取,Magicodes.WeiChat可以通过在Action上添加[WeChatOAuth]来获取粉丝信息,包括OPENID。
调用JS Api进行支付
微信页面,我们需要编写业务逻辑并调用JS API进行支付,相关JS代码如下所示:
注意:调用JS api需要JSSDK权限。Magicodes.WeiChat用户只需使用"ViewBag.UseJSSDK=true"即可启用并注册JSSDK权限。
然后,我们只需要绑定JS按钮事件即可,如:
$('#btnPay').on('click',function(){
callpay();
});
接收微信服务器事件通知,处理支付业务
微信支付完毕后,微信服务器会异步通知我们的Web服务器,通知地址我们在上面的支付配置中已经配置过了。
使用Magicodes.WeChat.SDK的话,处理起来比较简单,相关关键代码如下所示:
在支付成功的函数中,我们可以编写成功逻辑,比如订单状态的变更,支付日志的记录等等。
至此,整个微信公众号开发均已完成。
使用开源库MAGICODES.WECHAT.SDK进行微信公众号支付开发的更多相关文章
- 到处是坑的微信公众号支付开发(java)
之前公司项目开发中支付是用阿里的支付做的,那叫一个简单,随意:悲催的是,现在公司开发了微信公众号,所以我步入了全是坑的微信支付开发中... ------------------------------ ...
- 微信公众号支付开发全过程 --JAVA
按照惯例,开头总得写点感想 ------------------------------------------------------------------ 业务流程 这个微信官网说的还是很详细的 ...
- 微信公众号支付开发当前URL未注册解决办法
微信公众号支付,则需要现在微信支付商户后台,预先添加支付网址才可以.否则会出现“当前URL未注册”字样的报错. 方法/步骤 1. 报错实例如下,手机端微信调起微信支付框时弹出 2. 首先需要登录微信支 ...
- 开源库Magicodes.WeChat.SDK总体介绍
目录 1 概要 1 2 主要特点 2 3 架构图 8 3.1 构造器——WeChatSDKBuilder 8 3.2 函数管理器——WeChatF ...
- 微信公众号支付开发全过程(Java 版)
一.微信官方文档微信支付开发流程(公众号支付) 首先我们到微信支付的官方文档的开发步骤部分查看一下需要的设置. [图片上传失败...(image-5eb825-1531014079742)] 因为微信 ...
- 微信支付-微信公众号支付,微信H5支付,微信APP支付,微信扫码支付
在支付前,如果使用第三方MVC框架,则使用重写模式,服务器也需要配置该项 if (!-e $request_filename){ rewrite ^/(.*)$ /index.php/$ last; ...
- 微信公众号支付提示mch_id参数格式错误
背景: .Net MVC微信公众号支付功能 问题: 今天在做网站微信支付的时候,一直提示“微信公众号支付提示mch_id参数格式错误” ! 解决方法: 其实这个问题一般并不是说你配置有错,首先它提示你 ...
- vue项目使用微信公众号支付总结
微信公众号支付 1. 使用jssdk调用微信支付,具体查看开发文档: 使用的vuex,在mutations中 wechatPay (state, data) { state.payObject = d ...
- 微信公众号支付调用chooseWXPay提示“errmsg choosewxpay fail”
微信公众号支付一直提示“errmsg choosewxpay fail”,也没有提示具体错误信息,签名没有问题(签名验证地址:https://pay.weixin.qq.com/wiki/doc/ap ...
随机推荐
- svn ignore
工程名为simple,采用maven进行依赖管理,在check in时我不想工程下maven产生的target目录被提交到SVN(包括目录下所有文件和目录本身). 解决方法: 要被忽略的目录必须是未版 ...
- 数据库执行sql报错Got a packet bigger than 'max_allowed_packet' bytes及重启mysql
准备在mysql上使用数据库A,但mysql5经过重装后,上面的数据库已丢失,只得通过之前备份的A.sql重新生成数据库A. 1.执行sql报错 在执行A.sql的过程中,出现如下错误:Got a p ...
- RTP在。net中的使用(资料)
开源组件:lumisoft 网址:http://www.lumisoft.ee/lswww/download/downloads/Examples/ 非开源的免费组建:rtp.net (微软推荐)
- mysql的数据转换
在sql语句中完成对数字类型的数据转换成字符类型的数据.像这次将读取出来的float类型的数据,在进行jsonObject.fromObject(object).toString();这个方法,并没有 ...
- 【转】Nginx服务器详细配置含注释
#使用的用户和组 user www www; #指定工作衍生进程数(一般等于CPU的总核数或总核数的两倍) worker_processes 8; #指定错误日志存放的路径,错误日志的记录级别可为de ...
- 京东2017校园招聘笔试题 【第K个幸运数】
题目描述 4和7是两个幸运数字,我们定义,十进制表示中,每一位只有4和7两个数的正整数都是幸运数字. 前几个幸运数字为:4,7,44,47,74,77,444,447... 现在输入一个数字K,输出第 ...
- C# 微信v3退款
1.退款需要退款证书.C#都是用p12的证书,双击证书导入,密码是mch_id(商户号) 2.调用微信退款接口进行退款操作 string resp=string.Empty string cert = ...
- tmpfs介绍
tmpfs 前几天发现服务器的内存(ram)和swap使用率非常低,于是就想这么多的资源不用岂不浪费了?google了一下,认识了tmpfs,总的来说tmpfs是一种虚拟内存文件系统正如这个定义它最大 ...
- 【线段树】bzoj1018 [SHOI2008]堵塞的交通traffic
线段树的每个叶子节点存一列. 每个节点维护六个域,分别是左上左下.左上右上.左上右下.左下右上.左下右下.右上右下在区间内部的连通性,不考虑绕出去的情况. 初始每个叶子的左上左下.右上右下是连通的. ...
- Microsoft.Office.Interop.Excel 程序集引用 ,Microsoft.Office.Interop.Excel.ApplicationClass 无法嵌入互操作类型
using Microsoft.Office.Interop.Excel 添加程序集引用 方法:在引用--程序集--扩展中,添加引用Microsoft.Office.Interop.Excel,此 ...