
在上一篇文章“微信和支付宝支付模型的详细说明和实现”之后,到现在已经半年了. 在此期间,许多朋友在公共帐户上留下了有关付款相关问题的消息. 最近,他们还处理与公司付款相关的对接. 撰写本文以进行进一步介绍,并提供基于主要付款方式的实施案例. 我希望能帮助有需要的学生. 内容主要分为两个模块:
1. 微信和支付宝付款方式明细
1)付款方式比较
2)接口实现形式
2. 案例执行(OSS.PaySdk)
1)多模式配置支持
2)实现不同的支付方式界面
1. 微信和支付宝付款方式明细
在过去的六个月中,微信增加了H5支付和applet支付界面. 支付宝的界面没有太大变化,但是文档中界面的描述已经过调整和分类(仍然很混乱). 因此,在这里我将对“微信和支付宝支付模型的详细说明和实现”一文中提到的支付方式进行重新分类和比较.
1. 付款方式比较

1). 扫描二维码付款
现在,它在支付宝文档(订单界面的名称: transaction pre-create-alipay.trade.precreate)中被分类为面对面支付.
在这里,我们将介绍微信扫描代码的两种模式. 第一个: 商家首先根据规则生成与产品相关的QR码. 用户扫描代码后,微信会发起一个商户指定地址的请求. 在此请求中,商户系统完成订单,获取预付款信息并退货,然后客户完成付款. 第二种: 用户下单后微信公众号接入支付宝支付,商户系统获取预付款信息,并生成QR码供用户完成付款.
2). H5付款
此微信界面已新增,商家需要申请激活. 在支付宝中被归类为移动网站支付(订单界面名称: mobile web payment-alipay.trade.wap.pay)
3). APP付款
客户启动付款,并且支付宝订单界面名称为: Apppayment-alipay.trade.app.pay
4). 官方帐户付款
移动终端平台中的浏览器直接调用付款. 在微信中,通过官方账户支付. 支付宝主要是一个终身账户,并且接口文档未分类(订单接口的名称: transaction creation-alipay.trade.create)
5). 小程序付款

内部小程序付款,支付宝订单界面名称: App Payment-alipay.trade.app.pay
6). 电脑付款(收银台)
由于历史原因,支付宝仍在同时在PC端提供此付款方式. 它直接跳转到支付宝收银机界面. 用户可以通过支付宝密码直接付款,也可以扫描收银员页面上的代码. 建议以这种方式,在此过程中还有更多步骤. 订单界面名称: 付款页面interface-alipay.trade.page.pay
7). 付款
这主要是由商家发起的,用于扫描用户条形码/ QR码/声音信息. 为了避免与上面的扫描代码付款产生歧义,此操作类似于商家刷卡用户的银行卡,这称为付款.
微信也称为支付,界面名称: 提交支付. 支付宝在面对面支付中被分类为条形码支付,接口名称为: transaction payment-alipay.trade.pay
前六种付款方式通常是付款. 用户和商家不需要直接联系. 我将它们归类为支付. 第七类主要集中在超级市场,大型购物中心等. 我通常将其分类为线下支付.
2. 接口实现形式
在上述付款方式中,除了前五个微信付款界面名称均为[统一订单]外,我没有列出它们. 支付宝基本上是不同的,而且名称很模糊,给人一种相对凌乱的感觉. 微信相对来说比较有序,除了参数属性的一些变化外,订单界面基本上是统一的订单界面. 在这里,我还对接口的实现级别进行了简单的分解,以便每个人都可以理解
1)微信实施表格

微信的界面处理逻辑相对简单. 除卡支付外,其余都需要请求微信支付系统通过统一订单界面获取预付款信息,然后才能进行支付.
如果是公共帐户,小型程序或APP付款,则服务器需要进一步签名并将其移交给前端JS进行调用.
如果是扫描码付款,则将在预付款信息中返回QR码链接,商家可以通过服务器或前端生成相应的图片
如果是H5付款,则预付款将返回到链接地址,浏览器可以跳转到该地址.
如果通过刷卡付款,则在阅读所附条形码上的令牌信息后,直接请求微信系统完成付款
2)支付宝实施表格
支付宝相对减少了请求数量
对于H5,公共帐户和计算机端付款,在组装并签名各个参数后,将生成一个包含表单的HTML,并将form.submit()方法附加到页面上,因此该页面将附加此html自动提交并要求付款.
对于APP和小程序付款,都使用APP付款界面. 签名仍在组装中,但是会生成表单内容,类似于: k1 = v1&k2 = v2,前端客户端sdk方法调用付款.
如果是扫描码付款,它将要求支付宝系统获取预付款信息(包括QR码)并生成图片

如果您使用付款,则与微信相同. 在声波上读取所附的条形码和令牌信息后微信公众号接入支付宝支付,直接请求支付宝系统完成支付
因为诸如查询和退款之类的相关界面被简单地称为,所以在此不再介绍它们.
两个. 案例实现
介绍完上述实现形式后,思考方式基本上没有障碍. 其余的是功能代码以及接互过程中加密和解密的实现. 这两个平台都在服务器端提供了相应的SDK,但都在.net框架框架下. 同时,微信端的SDK功能相对简单,而支付宝的软件包太过膨胀. 特定参数要求调用者生成相应的json字符串. 进入表格. 因此,从年初开始,我个人分别封装了两个平台的接口,这就是这里要介绍的OSS.PaySdk.
当前项目在.Net Standard框架下,也就是说,它同时支持Framework(4.6.1)和Core,基本上涵盖了所有与付款相关的接口,并提供多租户支持.
以下主要是针对该项目下的两个SDK以及上面的付款方式的使用,例如,所有代码都可以在Github上下载.
1. 多模式配置支持
在实现SDK的过程中,除了实现接口功能之外,考虑调用者的各种情况,我将在每个SDK的底部提供三种配置实现方法,并且每个SDK都提供一个A类,后缀ConfigProvider:
1)上下文配置设置方法
此方法适用于多租户形式. 在当前请求上下文中,根据请求信息使用不同的商家编号. 您可以在构造函数中的ConfigProvider下调用SetContextConfig方法,例如:
本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/tongxinshuyu/article-285271-1.html
对于美舰来说这是在闯鬼门关
你不能抱大腿