业务经理

微信扫描以上二维码

028-61286886

技术咨询

​全局表单,提交并付款的效果

迅睿框架 更新 2026-05-02 14:01:13 小波工作室--标签和

全局表单,提交并付款的效果

image


开发思路,参考官方的付款手册,https://www.xunruicms.com/doc/458.html


官方提供的流程时表单提交后,然后进行单击付款,我这套方案就不用点击两次,一次性提交和付款一起操作。


开发流程:

1、新建表单,名字取名为ceyice


2、进入自定义字段,然后创建payid字段,来存储是否支付成功的id号



3、新建支付类文件:dayrui/App/Form/Models/Ceyice.php

<?php namespace Phpcmf\Model\Form; // 这里需要把App改成项目目录名称

// 付款模型示例
class Ceyice extends \Phpcmf\Model
{

    private $row;

    // 付款表单格式
    public function get_myfield() {

        return [
            'fieldtype' => 'Pay', // 字段类型
            'fieldname' => 'price',
            'setting' => [
                'option' => [
                    'payfile' => 'ceyice.html', // 模板文件
                    'is_finecms' => 1, // 是否启用余额付款
                ],
            ]
        ];
    }

    // 付款类型名称
    public function paytype() {
        return  '<span class="label label-danger"> 项目 </span>'; // 最好2个汉字表述
    }
    
    // 付款前的权限验证,返回null表示可进行付款,返回字符串是就输出字符串
    // $id 记录id; $paylog 支付表记录数组; $num 数量; $sku 自定义属性
    public function pay_before($id, $num, $sku, $siteid) {
     return '';
    }

    // 付款价格
    // $id 记录id; $num 数量; $sku 自定义属性; $siteid 站点id
    public function get_price($id, $num, $sku, $siteid) {

        // 计算付款价格
        $data = $this->_get_row($id, $siteid);

        return $data['price']; 
    }

    // 付款数据
    // $id 记录id; $num 数量; $sku 自定义属性; $siteid 站点id
    public function get_row($id, $num, $sku, $siteid) {

        // 查询数据记录,判断是否存在
        $data = $this->_get_row($id, $siteid);

        return [
            'price' => $this->get_price($id, $num, $sku, $siteid),
            'title' => '项目收款'.$data['title'],
            'sell_uid' => 0, // 商家uid
            'sell_username' => '', // 商家账号
        ];
    }

    // 付款成功
    // $id 记录id; $paylog 支付表记录数组; $num 数量; $sku 自定义属性
    public function success($id, $paylog, $num, $sku) {

        // 支付成功之后的回调处理动作
        $data = $this->_get_row($id, $paylog['site']);
        
        $this->table_site('form_ceyice')->update($id, ['payid' => $paylog['id']]);

    }

    // 根据id查询表数据
    // $id 记录id;  $siteid 站点id
    private function _get_row($id, $siteid) {

           
           return [
               'title' => '',
              'price' => 200, // 测试200
              ];
    }
    
    
    // 付款成功跳转URL
    // $id 记录id; $paylog 支付表记录数组
    public function call_url($id, $paylog) {
        return dr_url_prefix("/index.php"); // 跳转url
    }
}


4、修改表单控制器文件:dayrui/App/Form/Contrllers/Ceyice.php

<?php namespace Phpcmf\Controllers;

/**
 * 二次开发时可以修改本文件,不影响升级覆盖
 */

class Ceyice extends \Phpcmf\Home\Form
{

    public function index() {
        $this->_Home_List();
    }

    public function show() {
        $this->_Home_Show();
    }

    public function post() {
        $this->_Home_Post();
    }
    
      // 
    protected function _Call_Post($data) {
    
        // 组合发起支付功能
        $pay = [
            'mark' => 'my-form_ceyice-'.$data[1]['id'],
            'title' => '支付发起',
            'money' => 200, // 测试200
        ];
        $pay['uid'] = (int)$this->member['uid'];
        $pay['username'] = (string)$this->member['username'];
        $pay['type'] = $_POST['pay']['type'];
        $money = floatval($pay['money']);
        if (!$money) {
            $this->_msg(0, dr_lang('金额(%s)不正确', $money));
            exit;
        }
        $rt = \Phpcmf\Service::M('Pay')->post($pay);
        if (!$rt['code']) {
            $this->_msg(0, $rt['msg']);
        }
        $url = PAY_URL.'index.php?s=pay&id='.$rt['code'];
        if (IS_API_HTTP || (\Phpcmf\Service::L('input')->get('is_ajax') || IS_API_HTTP || IS_AJAX)) {
            // 回调页面
            $this->_json($rt['code'], "提交成功,即将进入付款", ['url' =>  $url]);
        } else {
            // 跳转到支付页面,必须跳转到统一的主域名中付款
            dr_redirect($url, 'auto');
        }
        

        return parent::_Call_Post($data);
    }

}

5、新建支付文件 config/pay/ceyice.html

    <input type="hidden" name="pay[url]" value="{$html.url}" />
    <input type="hidden" name="pay[mark]" value="{$html.mark}" />
    <input type="hidden" name="pay[title]" value="{$html.title}" />
    <div class="form-body form">

        <div class="form-group">
            <label class="col-md-3 control-label">支付金额</label>
            <div class="col-md-2">
                <input type="hidden" value="{$html.pay_value}" name="pay[money]">
                <p class="form-control-static fc-price-color"> <i class="fa fa-rmb"></i> {number_format($html.pay_value, 2)} 元</p>
            </div>
        </div>
        <div class="form-group">
            <label class="col-md-3 control-label">账户余额</label>
            <div class="col-md-2">
                <p class="form-control-static fc-price-color"> <i class="fa fa-rmb"></i> {number_format($member.money, 2)} 元</p>
            </div>
        </div>

        <div class="form-group">
            <label class="col-md-3 control-label" style="padding-top:10px">付款方式</label>
            <div class="col-md-5">
                <div class="btn-group" data-toggle="buttons">
                    {loop $html.pay_type $name $t}
                  <input type="radio" name="pay[type]" {if $name == $html.pay_default}selected{/if}" value="{$name}" class="toggle"> {$t['icon']} {$t['name']} </label>
                    {/loop}
                </div>
            </div>
        </div>

   

    </div>

6、修改表单框架代码:在表单提交form内部加上

 {dr_payform("my-form_ceyice-sn")} {php $rt_url="";}


7、效果就是图一的效果了


支持迅睿开源精神,我把我在开发中做的一些笔记分享,需要有开发基础的开发者才能看得懂,也可以接收付费定制!



方案

  • 湘西北的风 #1 · 2022-07-10 15:38:24
    厉害,感谢分享
  • IT-老男孩 #2 · 2023-02-06 00:42:04

    图片
    大神这个字段是什么类型 文本 还是组合购买或是单一购买
  • 善于表达 #3 · 2023-05-08 14:42:05
    看下大神的杰作
  • 约定 #4 · 2023-05-28 15:28:55
    感谢 学习一下
  • 3148047576 #5 · 2023-05-29 10:51:03
    好东西,我也想弄一个,付费求服务啊
  • 胡银萍 #6 · 2023-05-29 15:59:26
    感谢 学习一下
  • 兔子姑娘 #7 · 2023-05-30 09:24:32
    能不能做成插件啊,我愿意买
  • 风扬 #8 · 2023-06-18 18:23:31
    学习一下,学习一下
  • SMALL #9 · 2023-11-15 11:34:46
    学习了,感谢分享
  • 业余选手 #10 · 2023-11-29 12:47:05
    学习了,感谢分享
  • h89001 #11 · 2023-12-23 22:33:21
    回复看看,很好的贴子
  • 曼曼 #12 · 2024-01-05 08:41:55
    学习了,感谢分享
  • 爱学习的小白 #13 · 2024-02-14 14:04:52
    厉害,感谢分享
  • 学无止境 #14 · 2024-02-15 20:56:28
    来学习,新年快乐
  • eawea #15 · 2024-03-06 08:40:59
    学习了,感谢分享
  • tugoy #16 · 2024-03-23 10:57:22
    学习学习,正好需要
  • 四分音符 #17 · 2024-03-25 18:07:18
    顶顶顶顶顶顶顶顶顶顶
  • 小黄人 18html #18 · 2024-03-26 21:05:02
    IT-老男孩 后半句没看到吗?用来存id号
  • 木木建站 #19 · 2024-03-27 10:48:11
    感谢 学习一下
  • #20 · 2024-04-06 23:42:49
    厉害,感谢分享
  • Vess #21 · 2024-06-07 13:25:09
    学习学习,正好需要
  • 一路向前 #22 · 2024-06-15 23:21:55
    记录一下,以防后备之需。
  • 我爱迅睿CMS #23 · 2024-06-16 15:19:43
    无私奉献,感谢楼主
  • 小陆 #24 · 2024-06-20 11:10:18
    学习了,感谢分享
  • mofan98 #25 · 2024-06-24 16:27:17
    收藏了,感谢分享
  • q823399400 #26 · 2024-06-25 00:00:54
    感谢大神分享
  • 刘云海 #27 · 2024-06-25 16:10:49
    学习了学习了
  • tsmupin #28 · 2024-07-12 11:14:54
    学习了学习了
  • 创发 #29 · 2024-07-23 20:16:57
    不错的东西,正好有看看的想法
  • yesterdayx #30 · 2024-07-27 16:34:30
    我来学习看看
  • 北斯云 #31 · 2024-08-17 22:15:19
    学习学学习学习·····················
  • mjt123 #32 · 2024-08-21 00:33:00
    感谢分享,学习学习
  • ysxxonline #33 · 2024-08-21 21:16:30
    感谢 学习一下
  • 不耻下问小菜新 #34 · 2024-09-13 17:45:31
    厉害,感谢分享
  • miniidea #35 · 2024-09-26 17:39:22
    感谢 学习一下
  • 上官先生 #36 · 2024-10-10 16:38:51
    感谢 学习一下
  • 微信20330810 #37 · 2024-10-19 15:32:17
    学习,学习写的不错
  • 言某人钩鞋设计 #38 · 2024-11-01 05:17:42
    厉害,感谢分享
  • qz123 #39 · 2025-04-19 00:29:34
    大神啊,解燃眉之急,我来学习学习!
  • 凡凡 #40 · 2025-06-04 11:28:52
    学习学习正在看看怎么弄
  • 魂落天涯 #41 · 2025-07-04 16:25:01
    学习一下,正好要用
  • 向阳而生 #42 · 2025-11-25 17:57:03
    学习一下,正好要用
  • 张某某某 #43 · 2025-12-10 00:10:19
    学习一下,正好要用!感谢大神分享
  • 一直在路上 #44 · 2026-04-09 10:01:15
    我看看怎么个事情
  • shodudu #45 · 2026-05-02 14:01:13
    厉害,感谢分享

迅睿系统漏洞

独立站群系统
独立站群系统(2026-09-14)
子站独立部署时修复同步附件失败问题
在线客服
在线客服(2026-09-13)
修复删除会话报错问题 删除会话时联动删除聊天图片
在线考试竞赛系统
在线考试竞赛系统(2026-09-12)
增加投票功能 考试功能拓展 注意:更新后需要执行系统更新,更新数...
网上信箱
网上信箱(2026-09-12)
修复新版本兼容问题
GeoSeo收录宝
GeoSeo收录宝(2026-09-12)
1 优化Update.php文件,解决版本在线升级不完整问题 2 ...
GeoSeo工具箱
GeoSeo工具箱(2026-09-11)
修正历史记录推送
微信系统
微信系统(2026-09-11)
增加数据统计总览界面 账号管理增加服务和公众号的区别 菜单管理支持更...
答题系统
答题系统(2026-09-11)
一站式在线答题系统,支持真题考试、题库练习和错题本,适合培训、考证、...
阿里云滑动验证码
阿里云滑动验证码(2026-09-10)
采用阿里云验证码替换迅睿系统自带的图片验证码和滑动验证码。后台设置方...
下载Plus
下载Plus(2026-09-09)
为网站附件下载加上“计数、限次、统计、防护”四重能力:按用户组控制下...