php支付自定义金额,自定义付款/支付/收费

该教程介绍了如何在PHP的插件或系统二次开发中实现支付下单功能。首先,设计了数据库表`dr_test`用于存储产品信息,然后创建了一个名为`Buy`的支付模型类,包含了支付表单格式、付款类型、权限验证、价格计算、数据获取及支付成功后的处理。通过调用`dr_payform`函数生成支付表单,并在支付回调的`success`方法中处理支付成功后的业务逻辑。
摘要由CSDN通过智能技术生成

在插件或系统的二次开发中会用到付款功能时,可以运用此教程来完成支付下单功能

0c14fcab724e305d2dd6b3c260f84f27.png

例如插件目录:App/Test 插件

一、设计数据库CREATE TABLE `dr_test` (

`id` int(11) NOT NULL,

`title` varchar(255) NOT NULL COMMENT '产品名称',

`price` varchar(255) NOT NULL COMMENT '产品价格',

`inputtime` int(11) NOT NULL COMMENT '发布时间'

) ENGINE=InnoDB DEFAULT CHARSET=utf8;

ALTER TABLE `dr_test`

ADD PRIMARY KEY (`id`);

ALTER TABLE `dr_test`

MODIFY `id` int(11) NOT NULL AUTO_INCREMENT;

二、设计表单支付模型

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

// 付款模型示例

class Buy extends \Phpcmf\Model

{

private $row;

// 付款表单格式

public function get_myfield() {

return [

'fieldtype' => 'Pay', // 字段类型

'fieldname' => 'price',

'setting' => [

'option' => [

'payfile' => 'buy.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']; // 测试200

}

// 付款数据

// $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']);

}

// 根据id查询表数据

// $id 记录id;  $siteid 站点id

private function _get_row($id, $siteid) {

if (isset($this->row[$id]) && $this->row[$id]) {

return $this->row[$id];

}

$this->row[$id] = $this->table('test')->get($id);

return $this->row[$id];

}

// 付款成功跳转URL

// $id 记录id; $paylog 支付表记录数组

public function call_url($id, $paylog) {

return dr_url_prefix("/index.php"); // 跳转url

}

}

三、发起支付

表单参数格式:my-插件目录_模型名称-相关ID-数量-SKU参数值 (数量-SKU参数值可以忽略)

那么调用表单格式为(可以放到任意前台html页面之中):{dr_payform("my-test_buy-111")}

111表示test表的id号,cms会查询111记录的price字段作为付款金额

四、支付回调

上面(二)中的App/Models/Buy.php模型类,回调方法:success

开发者可以在success方法内完成支付后的动作,比如更新数据库等操作

本文地址:https://www.xunruicms.com/doc/458.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值