还在为调用第三方支付接口头疼吗?还在为应用程序重复开发支付功能吗?给大家推荐一款好用的开源收付款软件
简介
交易宝是管理订单支付的软件系统,可对多个应用的支付业务进行统一管理和运营,为你节省时间和精力,让你专注于核心业务,实现更高的效率和利润。
特点:无需开发,开箱即用,统一管理支付订单,支持个人支付宝微信支付线上收款
架构
项目结构
整个项目的目录结构大致如下:
.
├── README.md # 说明文档
├── Rswl.Payment.Web.dll # 主应用
├── wwwroot
│ └── cashier # 收银台系统目录
│ └── admin # 订单管理系统目录
├── cert # 第三方支付证书文件路径
├── appsettings.json # 系统配置
└── pay.json # 支付配置
配置
下载交易宝程序包,准备好申请的第三方支付参数信息和mysql数据库
1. 配置数据库
使用提供的mysql脚本创建数据库
编辑根目录下的
appsettings.json
文件 变更节点ConnectionStrings:DefaultConnection
值为真实的数据库连接json"ConnectionStrings": { "DefaultConnection": "Server=127.0.0.1;uid=root;pwd=123456;database=rswl_payment;port=3306;", },
默认使用内存消息队列发消息,可修改成实际使用的消息队列服务
json"MQ":{ "Name":"InMemory", //当前使用的消息队列 ,可选值:InMemory,RabbitMQ,Nats,RedisStreams,Kafka "Storage":"MySql" //默认使用mysql存储mq消息 }
2. 配置支付信息
- 编辑根目录下
pay.json
文件 - 填写真实的第三方支付参数json
{ "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 } ], }
部署
交易宝支持windows,linux系统,可在安装.net6以上的sdk的环境中运行 可参考这篇文章安装.net环境,之后上传文件到网站根目录,配置你的网站
使用
参考实例:查看订单二维码演示
场景一:有订单
应用生成业务订单信息,并将订单参数传给交易宝,由交易宝生成预支付订单,调用第三方支付
步骤:
- 业务系统生成业务订单
- 业务系统拼接预支付订单url
- 用户扫码完成支付
生成预支付订单的参数:
${cashierUrl}#/order/base?appid=${appId}&payee=软商网络&orderNo=${orderNo}&orderName=技术服务费&payAmount=${payAmount}&openId=$
url参数名称 | 参数说明 | 必填 |
---|---|---|
cashierUrl | 收银台地址,例:https://pay.rscode.cn/cashier/index.html | 是 |
appId | appid应用id | 是 |
payee | 收款方名称 | 否 |
orderNo | 订单号 | 是 |
orderName | 订单名称 | 是 |
payAmount | 支付金额 | 是 |
openId | 微信支付用 户openid | 否 |
场景二:无订单
如果业务应用不提供订单信息,用户可以自己输入金额支付,完成远程收款
自定义金额的订单url规则
https://xxx/cashier/index.html?orderType=2&payee=软商网络
可以将生成的预支付订单生成二维码,供用户扫码支付
场景三:使用个人收款码完成线上业务
下载AI工具箱,运行AI工具箱协助线上业务
二次开发
应用需要向交易宝系统提供业务订单创建与拉取接口,可在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
进行修改