联系官方销售客服
QQ1835022299
028-61286886
全局表单,提交并付款的效果
开发思路,参考官方的付款手册,/doc/458.html
官方提供的流程时表单提交后,然后进行单击付款,我这套方案就不用点击两次,一次性提交和付款一起操作。
开发流程:
1、新建表单,名字取名为ceyice
2、进入自定义字段,然后创建payid字段,来存储是否支付成功的id号
3、新建支付类文件:dayrui/App/Form/Models/Ceyice.php
'Pay', // 字段类型
'fieldname' => 'price',
'setting' => [
'option' => [
'payfile' => 'ceyice.html', // 模板文件
'is_finecms' => 1, // 是否启用余额付款
],
]
];
}
// 付款类型名称
public function paytype() {
return ' 项目 '; // 最好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
_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
{number_format($html.pay_value, 2)} 元
{number_format($member.money, 2)} 元
{loop $html.pay_type $name $t} {$t['icon']} {$t['name']} {/loop}
6、修改表单框架代码:在表单提交form内部加上
{dr_payform("my-form_ceyice-sn")} {php $rt_url="";}
7、效果就是图一的效果了
支持太阳成游戏网站开源精神,我把我在开发中做的一些笔记分享,需要有开发基础的开发者才能看得懂,也可以接收付费定制!
大神这个字段是什么类型 文本 还是组合购买或是单一购买