企业🤖AI智能体构建引擎,智能编排和调试,一键部署,支持私有化部署方案 广告
# 第三方支付 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\ 进行调用。 <br> ***** ### 开发扩展支付插件 **举例开发银联支付** #### 首先增加支付类型配置 1. 修改config/pay.php ~~~ return [ //默认驱动 'default' => 'wechatpay', //驱动 'drivers' => [ //微信 'wechatpay' => [], //支付宝 'alipay' => [], //银联支付 'union_pay '=>[ 'driver' \=> 'addon\\unionPay\\unionPay', //反射类的名字 ], ] ]; ~~~ 上面配置文件需要注意的地方,对于框架内置的路径来说,一般为app\core\pay\。装载器会自动装载本命名空间实例化。对于第三方开发者开发,一般为插件Addon下,所以要指定具体的驱动命名空间位置。系统会自动加载该驱动。 2. 创建文件:/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 会自动调用 银联支付。 整个的支付流程会与上面的微信支付、支付宝支付一样。