交易宝订单系统使用心得

简介

交易宝是管理订单支付的软件系统,可对多个应用的支付业务进行统一管理和运营,为你节省时间和精力,让你专注于核心业务,实现更高的效率和利润。

特点:无需开发,开箱即用,统一管理支付订单

架构

在这里插入图片描述

项目结构

整个项目的目录结构大致如下:

.
├── README.md                         # 说明文档
├── Rswl.Payment.Web.dll              # 主应用
├── wwwroot                          
│     └── cashier                     # 收银台系统目录
│     └── admin                       # 订单管理系统目录
├── cert                              # 第三方支付证书文件路径
├── appsettings.json                  # 系统配置
└── pay.json                          # 支付配置

配置

下载交易宝程序包,准备好申请的第三方支付参数信息和mysql数据库

1. 配置数据库

  1. 使用提供的mysql脚本创建数据库

  2. 编辑根目录下的appsettings.json文件
    变更节点 ConnectionStrings:DefaultConnection值为真实的数据库连接

      "ConnectionStrings": {
        "DefaultConnection": "Server=127.0.0.1;uid=root;pwd=123456;database=rswl_payment;port=3306;",
      },
    

2. 配置支付信息

  1. 编辑根目录下pay.json文件

  2. 填写真实的第三方支付参数

    {
     "Default": {
       "TenpayMchId": "",                               //默认使用的微信支付商户id
       "AppId": ""                                      //默认使用的Appid
     },
     "Payment": [
       {
          "PaymentChannel": 1,                          //1表示微信支付
          "PaymentStatus": true,                        //true表示己启用
          "MchType": 0,
          "MchId": "",                                  //微信商户号
          "Rate": 0.6,                                  //微信支付费率
          "APIKey": "",                                 //微信支付APIKEY
          "APIKeyV3": "",                               //微信支付apikey v3版
          "PublicKey": "",                              //不填
          "PrivateKey": "cert/xxxx/apiclient_cert.p12", //微信P12证书路径,保在根目录cert文件夹中
          "CertPassword": "",                           //商户号
          "NotifyUrl": "https://xxx/api/tenpay/notify"  //微信支付回调地址
       },
       {
          "PaymentStatus": true,                        //true表示己启用
          "PaymentChannel": 2,                          //2表示支付宝
          "Rate": 0.6,                                  //支付宝费率
          "MchId": "",                                  //支付宝商户号
          "PrivateKey": "",                             //转换后的私钥
          "PublicKey": "cert/alipay/appCertPublicKey_xx4.crt", //应用公钥
          "PlatformPublicKey": "cert/alipay/alipayCertPublicKey_RSA2.crt", //支付宝平台公钥证书
          "PlatformRootCert": "cert/alipay/alipayRootCert.crt", //支付宝平台根证书
          "NotifyUrl": "https://xxx/api/alipay/notify",//支付宝回调地址
          "MchType": "0"
        }
     ],
     "App": [
       {
         "AppId": "",  //应用id
         "MchId": "1487740992", //app使用的商户号
         "Token": "",               
         "AppSecret": "ab5a2daa9",
         "PayChannel": 1,
         "Description": "weihuo mp",
         "AppType": 1
       }
     ],
    }
    
  3. 支付证书
    将证书保存至根目录cert文件夹下,并与pay.json配置填写的一致

部署

交易宝支持windows,linux系统,可在安装.net6以上的sdk的环境中运行
可参考这篇文章安装.net环境,之后上传文件到网站根目录,配置你的网站

使用

订单管理地址为 https://xxx/admin/index.html 默认帐号admin 密码admin123321

参考实例:查看订单二维码演示

场景一:有订单

应用生成业务订单信息,并将订单参数传给交易宝,由交易宝生成预支付订单,调用第三方支付

步骤:

  1. 业务系统生成业务订单
  2. 业务系统拼接预支付订单url
  3. 用户扫码完成支付

生成预支付订单的参数:

KaTeX parse error: Expected 'EOF', got '#' at position 13: {cashierUrl}#̲/order/base?app…{appId}&payee=软商网络&orderNo=KaTeX parse error: Expected 'EOF', got '&' at position 10: {orderNo}&̲orderName=技术服务费…{payAmount}&openId=${openId}

url参数名称参数说明必填
cashierUrl收银台地址,例:https://pay.rscode.cn/cashier/index.html
appIdappid应用id
payee收款方名称
orderNo订单号
orderName订单名称
payAmount支付金额
openId微信支付用 户openid

场景二:无订单

如果业务应用不提供订单信息,用户可以自己输入金额支付,完成远程收款

自定义金额的订单url规则

https://xxx/cashier/index.html#/order/base?orderType=2&payee=软商网络

可以将生成的预支付订单生成二维码,供用户扫码支付

二次开发

应用需要向交易宝系统提供业务订单创建与拉取接口,可在appsettings.json自定义接口地址

appsettings.json文件

"jyb": {
  "OrderCreateUrl": "https://xxx/api/order/create", //业务系统创建订单接口 post
  "OrderFetchUrl": "https://xxx/api/order/info"     //业务系统拉取订单接口 post
},

业务系统返回订单JSON字符串格式

{
    "orderno":'',
    "order_name":'',
    "pay_amount":0,
    "order_status":0,
}

正确配置业务系统拉取订单接口,因为交易宝收银台验证金额时会用到

特殊需求,可以通过修改交易宝源码 AppOrderController进行修改

事件

内部事件:
支付成功事件 PaySuccessEvent

{
  mchId:'',
  appId:'',
  orderNo:'',
  paymentChannel:1,
  payAmount:1,
  tradeNo:'',
  attach:'',
  buyerId:''
}

支付失败事件 PayFailEvent

事件的发布者:支付宝,微信支付,抖音支付
事件的订阅者:订单,收到成功消息发送CAP消息

cap事件:
支付成功 ORDERS.TRANSACTION.SUCCESS
内容与内部事件内容一致

退款

退款成功RefundSuccessEvent

mchid:'',
payChannel:1,
transaction_id:'',
out_trade_no:'',
out_refund_no:'',
amount:1

CAP事件 ORDERS.REFUND.SUCCESS

转帐

外部事件
rswl.tenpay.transfer.create 微信转帐
参数


rswl.alipay.transfer.create 支付宝转帐

order_no:'' //业务单号
product_code:'' 
trans_amount:'' 交易金额元
alipay_user_id:''  支付宝帐号
remark:''   备注

业务系统生成转帐单,支付系统记录该笔交易

内部事件:
转帐成功 TransferSuccessEvent

orderNo:'',
tradeNo:'',
payChannel:1,
amount:1

转帐失败 TransferFailEvent

orderNo:'',
errMsg:''

cap事件
ORDERS.TRANSFER.SUCCESS 返回内容:

orderNo:'',
tradeNo:'',
payChannel:1,
amount:1

ORDERS.TRANSFER.FAIL 返回内容:

orderNo:'',
errMsg:''

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/180555.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【运动规划】191 自适应跟踪kinodynamicrrt的路径

分层法: two layer approach 自适应控制,跟随轨迹。运动规划:扩展自由空间(基于速度约束缩小自由空间)为控制部分留余量,确保安全。 控制设计: 考虑平移和旋转,速度环控制&#xff…

什么是多要素自动气象监测设备?

WX-CQ12 随着科技的发展,我们对天气的预测和监测能力也在不断提高。其中,多要素自动气象监测设备正成为一种革命性的工具,帮助我们更好地理解和预测天气变化。 一、什么是多要素自动气象监测设备? 多要素自动气象监测设备是一种…

查看sql语句执行计划并重建索引

晚上cpu报警显示当前cpu使用率达到90%以上,不到10%的空闲 先查询当前sql: #(ORACLE) SQL > set line 200 pages 1000 col event for a30 col program for a30 col username for a12 col sql_id for a15 col INST_ID for 9999 …

【数据结构初阶(4)】栈的基本操作实现

文章目录 Ⅰ 概念及结构1. 栈的概念2. 栈的操作 Ⅱ 基本操作实现1. 栈的定义2. 初始化栈3. 元素入栈4. 元素出栈5. 获取栈顶元素6. 获取栈中有效元素个数7. 判断栈空8. 销毁栈 Ⅰ 概念及结构 1. 栈的概念 栈:栈是一种特殊的线性表,其只允许在固定的一端…

SAP QA11/QA32质检放行时,如何处理产生记账更改通知单时

前提:启用SAP wms仓库管理 场景: 当做移动类型321质检放行的时候,有时候会产生记账更改通知单,这个时候怎么处理? 解决办法: 使用事务码LU04,查看未清的记账更改通知单,进入清单列表之后&…

【深度学习】卷积神经网络(CNN)的参数优化方法

著名: 本文是从 Michael Nielsen的电子书Neural Network and Deep Learning的深度学习那一章的卷积神经网络的参数优化方法的一些总结和摘录,并不是我自己的结论和做实验所得到的结果。我想Michael的实验结果更有说服力一些。本书在github上有中文翻译的…

蓝桥杯每日一题2023.11.23

题目描述 题目分析 本题使用递归模拟即可,将每一个大格子都可以拆分看成几个小格子,先将最开始的数字进行填入,使每一个对应小格子的值都为大格子对应的数,搜索找到符合要求的即可 (答案:50 33 30 41&am…

分布式篇---第二篇

系列文章目录 文章目录 系列文章目录前言一、你知道哪些分布式事务解决方案?二、什么是二阶段提交?三、什么是三阶段提交?前言 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站,这篇文章男女通用,看懂了就去分享给你…

第十七章:数据库操作

数据库基础 SQL语言 1、select 语句 select 语句用于从数据中检索数据。语法如下: SELECT 搜选字段列表 FROM 数据表名 WHERE 条件表达式 GROUP BY 字段名 HAVING 条件表达式(指定分组的条件) ORDER BY 字段名[ASC|DESC] 2、insert 语句 insert 语句用于向表中插入…

PTA-用天平找小球

三个球A、B、C,大小形状相同且其中有一个球与其他球重量不同。要求找出这个不一样的球。 输入格式: 输入在一行中给出3个正整数,顺序对应球A、B、C的重量。 输出格式: 在一行中输出唯一的那个不一样的球。 输入样例&#xff…

【8】Spring Boot 3 集成组件:安全组件 spring security【官网概念篇】

目录 【8】Spring Boot 3 集成组件:安全组件 spring securitySpring Security 简介先决条件引入依赖身份验证密码存储密码存储历史DelegatingPasswordEncoder密码存储格式密码加解密类自定义密码存储 体系结构 ArchitectureServlet 过滤器DelegatingFilterProxyFilt…

基于element-plus定义表单配置化扩展表单按钮

文章目录 前言一、新增btn.vue组件二、使用总结如有启发&#xff0c;可点赞收藏哟~ 前言 在后台管理系统一般都存在列表查询&#xff0c;且可输入数据进行查询 基于element-plus定义表单配置化 新增按钮配置化 一、新增btn.vue组件 <template><template v-for&qu…

java协程操作mysql数据库

我的项目&#xff1a; nanshaws/nettyWeb: 复习一下netty&#xff0c;并打算做一个web项目出来 (github.com) 最近在项目中分别添加了虚拟线程操作mysql数据库&#xff0c;和用协程操作mysql数据库 同理先跟我这个博客操作一下前面的&#xff1a;就单纯代码的时候进行修改&a…

2014年12月22日 Go生态洞察:Go语言中的代码生成

&#x1f337;&#x1f341; 博主猫头虎&#xff08;&#x1f405;&#x1f43e;&#xff09;带您 Go to New World✨&#x1f341; &#x1f984; 博客首页——&#x1f405;&#x1f43e;猫头虎的博客&#x1f390; &#x1f433; 《面试题大全专栏》 &#x1f995; 文章图文…

Sui第七轮资助:八个项目共获得超过50万美元的资助

今日&#xff0c;Sui基金会宣布了本月获得资助的项目方&#xff0c;他们将获得超过50万美元的资助金&#xff0c;用于构建项目&#xff0c;推动Sui的采用和发展。要获得资助&#xff0c;项目必须提交提案&#xff0c;详细说明他们正在构建的内容、预算明细、关键里程碑、团队经…

Vue环境的搭建

1.Vue开发的两种方式 &#xff08;1&#xff09;核心包传统开发模式 基于html/css/js文件&#xff0c;直接引入和辛堡&#xff0c;开发Vue。 &#xff08;2&#xff09;工程化开发模式&#xff1a; 主要是基于构建工具&#xff08;例如,webpack&#xff09;的环境中开发Vue…

SpringBoot——感谢尚硅谷官方文档

SpringBoot——感谢尚硅谷官方文档 1 Spring与SpringBoot1、Spring能做什么1.1、Spring的能力1.2、Spring的生态1.3、Spring5重大升级1.3.1、响应式编程1.3.2、内部源码设计 2、为什么用SpringBoot2.1、SpringBoot优点2.2、SpringBoot缺点 3、时代背景3.1、微服务3.2、分布式分…

数据科学导论——数据预处理

第1关:引言-根深之树不怯风折,泉深之水不会涸竭 第2关:数据清理-查漏补缺 import numpy as np import pandas as pd import matplotlib.pyplot as plt def student():train = pd.read_csv(Task1/diabetes_null.csv, na_values=[#NAME?])train[Insulin] = train[Insulin].f…

Linux运行jmeter报错java.sql.SQLException:Cannot create PoolableConnectionFactory

在性能测试过程中遇见1个问题&#xff0c;终于解决了&#xff0c;具体问题如下。 问题 在windows电脑写jmeter脚本连接数据库连接成功 然后把该脚本放到Linux服务器上面&#xff0c;并把jmeter mysql驱动放到服务器上面&#xff0c;修改jmeter的mysql驱动路径信息 注意&…

并行与分布式计算 第9章 算法设计

文章目录 并行与分布式计算 第9章 算法设计9.1 设计过程9.1.1 PCAM设计过程9.1.2 划分9.1.3 通信9.1.4 组合9.1.5 映射 8.2 设计方法8.2.1 划分技术9.2.2 分治9.2.3 平衡树技术9.2.4倍增技术9.2.5 流水线技术9.2.6 破对称技术 并行与分布式计算 第9章 算法设计 9.1 设计过程 …