联系官方销售客服
1835022288
028-61286886
全局表单,提交并付款的效果
开发思路,参考官方的付款手册,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、效果就是图一的效果了
支持迅睿开源精神,我把我在开发中做的一些笔记分享,需要有开发基础的开发者才能看得懂,也可以接收付费定制!
大神这个字段是什么类型 文本 还是组合购买或是单一购买