目录
- niucloud-saas手册
- 源码下载
- 安装部署
- 二次开发须知
- 二次开发指导
- 二次开发应用插件视频教程
- 二次开发安装视频教程
- 准备工作与创建插件
- 插件目录整体说明
- 插件admin目录
- 插件app目录说明(adminapi、api、验证器)
- 插件app目录(dict、job)
- 插件app目录说明(lang、listener)
- 插件app目录说明(model、service)
- 插件uniapp目录说明
- 插件开发之后台功能开发(代码生成器)
- 插件开发之uniapp功能开发(api)第一节
- 插件开发之uniapp功能开发(api)第二节
- 插件开发之uniapp功能开发(api)第三节
- 插件安装与打包原理
- 消息队列开发
- 计划任务开发
- DIY组件和自定义页面装修开发
- 支付接口开发
- 插件升级包打包流程以及云编译功能
- 常见问题
- 怎么添加菜单,添加了菜单不出现怎么回事
- 怎么配置跨域的问题
- 站点site端(租户端、商家端)和saas管理端(平台端)究竟啥意思,有啥区别
- 框架中是有订单表order,假如开发一个商城插件,请问商城的订单数据是不是重新搞一个订单表shop_order
- 有些支付平台是绑定回调唯一网址或目录,如果有几个开发者开发插件都有支付那这块怎么解决?
- 站点过期,可以登录,这样对吗?
- 计划任务怎么启动啊
- Git多分支开发,切换分支
- 安装应用出现is_dir():报错处理方案
- 绑定授权时出现“请求来源产品与授权产品不一致”解决方案
- “未找到admin源码所在目录”的解决方案
- 页面装修本地开发环境配置
- 接口请求错误处理方案
- 未获取到授权信息问题处理方案
- 腾讯地图配置
- 请求超时问题处理方案
- 下载应用时提示找不到zip解决方案
- 怎么关闭开发调试模式
- 获取数据失败问题处理方案
- 框架安装后,访问域名无法进入admin端(多数发生在本地)
- 底部导航失效问题
- 开放平台小程序审核通过发布失败问题
- 先升级插件后升级框架,导致云编译报debounce的错误
- 微信公众号自动回复不通
- 如何修改访问域名默认跳转端口
- 插件与框架的版本兼容问题处理方案
- 升级提示mkdir()处理方案
- 云编译时node.js内存不足导致内存溢出处理方案
- 报错Allowed memory size of ** bytes exhausted (tried to allocate ** bytes)处理方法
- 代码生成器
- niucloud (服务端)
- admin (后台管理端)
- uni-app(手机端前端)
- web端(PC前端)
- api接口
- 配置手册
第三方支付
niucloud-admin框架已经内置实现支付宝支付、微信支付、微信支付v3。 框架可设置不同端口,对于不同支付方式的配置与开启,以及调整支付方式的优先顺序。
支付配置
return [
//默认驱动
'default' => 'wechatpay',
//驱动
'drivers' => [
//微信
'wechatpay' => [],
//支付宝
'alipay' => [],
]
];
驱动里面可以配置支付的额外参数。default为系统默认支付方法。目前系统并没有调用上述配置的具体的参数。只是为了装载器来装载对应的类(反射)。具体的各个支付方式的参数配置调用都取自数据库表。
装载器加载入口
class PayLoader extends Loader
{
/**
* 空间名
* @var string
*/
protected $namespace = '\\core\\pay\\';
protected $config_name = 'pay';
/**
* 默认驱动
* @return mixed
*/
protected function getDefault()
{
return config('pay.default');
}
}
使用方法
$notify_url = (string)url("/api/pay/notify/$this->site_id/$this->channel/$this->type/$action", [], '', true);//异步回调通知地址
$this->config['notify_url'] = $notify_url;
return new PayLoader($this->type, $this->config);
一般来说,系统已经把具体的各种支付方法进行了封装(CorePayEventService )。不需要用户调用上面的具体支付方法。
具体的使用在相关业务类中调用。一般在Service中,app\service\pay\ 进行调用。
开发扩展支付插件
举例开发银联支付
首先增加支付类型配置
- 修改config/pay.php
return [
//默认驱动
'default' => 'wechatpay',
//驱动
'drivers' => [
//微信
'wechatpay' => [],
//支付宝
'alipay' => [],
//银联支付
'union_pay '=>[
'driver' \=> 'addon\\unionPay\\unionPay', //反射类的名字
],
]
];
上面配置文件需要注意的地方,对于框架内置的路径来说,一般为app\core\pay\。装载器会自动装载本命名空间实例化。对于第三方开发者开发,一般为插件Addon下,所以要指定具体的驱动命名空间位置。系统会自动加载该驱动。
- 创建文件:/Addon/unionPay/UnionPay.php
需要完成以下接口
namespace core\pay;
use core\loader\Storage;
/**
* 支付管理驱动类
* Class BasePay
*/
class UnionPay extends BasePay
{
protected $config;//配置
/**
* 初始化
* @param array $config
* @return mixed|void
*/
protected function initialize(array $config = [])
{
}
/**
* 网页支付
* @param $save_dir
* @return mixed
*/
abstract protected function web(array $params);
/**
* 手机网站支付
* @param $dir
* @return mixed
*/
abstract protected function wap(array $params);
/**
* app支付
* @param $dir
* @return mixed
*/
abstract protected function app(array $params);
/**
* 小程序支付
* @param $dir
* @return mixed
*/
abstract protected function mini(array $params);
/**
* 付款码支付
* @param $dir
* @return mixed
*/
abstract protected function pos(array $params);
/**
* 扫码支付
* @param $dir
* @return mixed
*/
abstract protected function scan(array $params);
/**
* 转账
* @param $dir
* @return mixed
*/
abstract protected function transfer(array $params);
/**
* 公众号支付
* @param $dir
* @return mixed
*/
abstract protected function mp(array $params);
/**
* 支付关闭
* @param string $out_trade_no
* @return mixed
*/
abstract protected function close(string $out_trade_no);
/**
* 退款
* @param array $params
* @return mixed
*/
abstract protected function refund(array $params);
/**
* 支付通知
* @param callable $callback
* @return mixed
*/
abstract protected function notify(Callable $callback);
/**
* 查询支付订单
* @param array $params
* @return mixed
*/
abstract protected function getOrder(array $params);
/**
* 查询退款订单
* @param string|null $out_trade_no
* @param string|null $refund_no
* @return mixed
*/
abstract protected function getRefund(string $out_trade_no, ?string $refund_no);
/**
* 查询转账订单
* @param string $transfer_no
* @return mixed
*/
abstract protected function getTransfer(string $transfer_no);
}
银联扩展使用方法
增加银联支付后,系统的CorePayEventService 会自动调用 银联支付。 整个的支付流程会与上面的微信支付、支付宝支付一样。