建站软件免费试用好看的团队官网源码
建站软件免费试用,好看的团队官网源码,wordpress主题结构图,怎么维护好网站支付基本上是很多产品都必须的一个模块#xff0c;大家最熟悉的应该就是微信和支付宝支付了#xff0c;不过更多的可能还是停留在直接sdk的调用上#xff0c;甚至和业务系统高度耦合#xff0c;网上也存在各种解决方案#xff0c;但大多形式各异#xff0c;东拼西凑而成。… 支付基本上是很多产品都必须的一个模块大家最熟悉的应该就是微信和支付宝支付了不过更多的可能还是停留在直接sdk的调用上甚至和业务系统高度耦合网上也存在各种解决方案但大多形式各异东拼西凑而成。所以这里我介绍下OSS.PayCenter开源跨平台支付组件 及其框架设计。并对常用支付模式进行一个全面介绍方便大家开发以及跨平台使用。这篇文章主要围绕以下几个模块 1. 微信和支付宝对比 2. 支付模式介绍 3. OSS.PayCenter框架设计 4. 调用示例 5. 注意事项 一. 微信和支付宝对比 这两者现在已经占领了移动支付的90%市场支付形式也都大抵相同只是在实现细节上略微不同。这里之所以要专门对比是因为有些接口的不同在后边的框架的设计中也会有所影响。主要集中在以下几个方面 1. 支付方式上 a. 支付宝多了一个声波支付 b. 手机端H5支付方式中 微信只支持微信内部浏览器 c. 微信用户扫码方式中除了正常下单返回支付二维码还提提供了回调下单模式即扫描的二维码并不是支付二维码而是商品二维码微信会回调商户指定地址才真实下单 2. 接口安全 a. 微信不同接口安全等级不一样涉及付款等接口加密相对简单MD5SHA1涉及到退款发送红包等接口需要使用双向证书验证 b. 支付宝所有接口统一使用RSA加密验证需要公私钥验证。 3. 接口协议 a. 微信使用的xml协议所有参数基本都在同一层级。 b. 支付宝使用json协议核心参数放在biz_content字段中。 二. 支付模式介绍 1. 完整支付的流程 随着时间的发展线上线下的支付场景都已经比较完善各支付平台虽然接口不同但是两者在业务流程都有着相似之处。这里我用一个流程图来展示核心的业务流程线上线下主要是指在用户在线下单还是线下商户辅助下单 以上流程图将线上和线下集中支付形式做了一个概要的说明两个支付平台在具体的细节上可能或有略微不同不过基本上都在这个流程范围之内。 注其中微信的扫码支付中除了正常的返回支付二维码支付还可以直接扫描商品二维码通过微信后台回调商家接口在回调中完成支付请求唤起客户端支付。 2. 支付方式介绍 首先线上支付 1. 用户扫码支付 这个一般应用在在线PC网站支付中用户在商户系统下单后选择自己方便的支付平台由商户系统向支付平台发起支付请求返回对应的支付二维码完成支付。微信提供两种形式其中可以直接扫描商品二维码回调处理这个可以方便应用在线下活动推广中由微信后台间接帮助完成下单。 2. 手机端支付 这个一般应用在H5站点或者app中商户系统下单后后台直接发起下单请求唤起手机支付平台客户端完成支付。微信的H5支付只能在微信内部浏览器中唤起。 其次线下支付这个主要集中在超市商场等。常见的如 1. 商户发起扫码支付 这个基本在餐饮超市商场等。客流量较大服务员需要快速完成收付操作商户后台下单后直接扫码。如果用户扫码在多人同时操作时容易出现错单错误等问题 2. 声波支付支付宝 这个一般出现自动贩售机或者聚会相互付款等不需要用户扫来扫去按住开关就可发现周边设备。暂时只有支付提供 3. 支付结果及后续处理 上述介绍了支付主要流程线上支付时由于是客户端同步返回支付结果且是在页面直接跳转完成所以这个支付结果不能作为实际的支付结果以防止前端的恶意攻击或者支付平台内部处理异常导致的支付失败。 正确的支付结果需要以后台的异步通知为准。 如果当前订单在一定时间内一直未支付建议调用取消支付请求订单接口以防止后续出现错误支付或者订单支付异常问题。 三. OSS.PayCenter框架设计 1. 框架流程 了解了以上的几种支付方式之后那么具体的调用什么接口其实已经比较清晰了那么我们纵向的来看一下接口调用的流程。如果把一个请求当做一个生命周期以发起一个POST请求为例在OSS.PayCenter中主要流程如下 在这个框架中分为两个部分 下层为基类完成 签名》内容协议格式化》请求》响应内容协议格式化》全局错误处理。其中提供了两个基本请求方法PostApiAsync-为当前请求签名封装xml内容调用网络请求。 RestCommonAsync-执行当前请求并对结果格式化和全局错误处理。 上层为子类具体各个接口名称和对应的请求内容参数。注退款付款在单独的子类中和其他接口做了物理隔离 2. 框架介绍 当前项目都基于.Net标准库项目也就是说同步支持.Net Framework和.Net Core每个项目中都会有SysTools文件夹主要存放当前类库的辅助类。 1. 基础配置 两个类库中最底层基类中都提供了DefaultConfig 静态属性可以方便在程序全局入口中就设置好对应的支付平台配置信息。 同时如果你存在多租户情况可以在具体的接口类构造函数中传入不同租户支付平台配置信息。 2. 命名规则 当前项目中主要接口都已经实现完毕但是如果你需要自己重新实现或者个别特殊未实现的接口可以参照各个子类的实现 实体的命名规则 平台名称动作名称 接口名称 Req/Resp 如微信下单接口WxAddPayUniOrderReq实体都会继承至对应的BaseReq/BaseResp具体可参见源码。 在当前的框架中分为OSS.PayCenter.WX微信和OSS.PayCenter.ZFB支付宝两个项目两者在接口协议和参数格式上都完全不同所以对应底层基类细节也会有所不同详情请阅读具体代码。 四. 调用示例 这里以支付宝回调结果解析为例 这个示例展示了主要个三个步骤当前仅仅是解析回调结果没有发起网络请求下边再给出一个发起支付请求的示例 凡是涉及到网络请求的接口都会返回一个异步Task对象如果需要同步使用使用.WaitResult()扩展方法即可这个我在OSS.Http文章中已经介绍。 五. 注意事项 1. 在微信项目中同时提供有发送红包企业付款代金券等接口详情可参见具体类。 2. 由于.net standard类库当前还并不是十分完整有两个地方需要注意一下。下个月.net standard 2.0版本发布后估计应该会完善了 a。在wx项目中使用到了请求的双向证书绑定.net core 和.net frameword中已经实现标准库中暂时还没有所以在微信配置实体中我公开了一个SetCertificata属性调用时只需要如下赋值即可
config.SetCertificata (handler, cert) {handler.ServerCertificateCustomValidationCallback (msg, c, chain, sslErrors) true;handler.ClientCertificates.Add(cert);}; b. 支付宝的加解密使用的RSA本身提供的方法依赖于Windows系统的“crypt32.dll”和“advapi32.dll”两个组件所以我重写了整个签名加密模块隔离系统的依赖。但是在当前标准库版本下RSACryptoServiceProvider类内部的linux平台版本依然没有具体实现也就是说支付宝当前项目可以运行windows系统中.net core下linux下暂时不可以看2.0版本更新情况如何吧。
如果你还有其他问题欢迎关注公众号OSSCoder
原文地址http://www.cnblogs.com/osscoder/p/6708222.html.NET社区新闻深度好文微信中搜索dotNET跨平台或扫描二维码关注
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/87880.shtml
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!