聯系官方銷售客服
1835022288
028-61286886
請教自定義付款(http://www.zbshanke.com/doc/458.html)一個問題。
看到官方文檔中自定義付款示例如下:
<?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 '<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']; // 測試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 } }
這段代碼中get_price()是針對數據庫已經有具體定價然后通過數據庫讀取定價再進行支付調用,我這邊的需求是用戶自行輸入金額(類似打賞),而不是從數據庫中get_price(),請問如何實現?試了下$post和\Phpcmf\Service::L('input') 都獲取不到post 的值。
其實功能需求就是類似官方的donation(模塊內容打賞)插件,但因為官方的插件代碼都集成到框架中了,所以不能仿照,請各位大大不吝賜教。
補充:
類似下圖,調用支付以后需要自行填寫金額
然后點擊付款的時候因為獲取不到post的值而提示金額不規范。
我記得,充值那里是有自定義金額的
回復@小黃人 18html.com 是想自定義開發,但是看官方的文檔接口獲取不到post的自定義金額
這個簡單啊,將用戶輸入的金額存儲到本地緩存中,get_price就讀緩存金額,我做過這種,類似打賞
回復@易學習 這個官方的接口不能獲取post的值么?感覺用緩存存提交的數據不是個好辦法吧
ajax傳過去不就好了
四樓思路對,我也是這樣開發的,get_price不能獲取post,但get_price可以獲取到緩存值
回復@靠懸賞(設置懸賞)賺錢買授權 但是官方調用的時候就一個
緩存用戶輸入的內容還得再寫個控制器吧,感覺繞路了,或者您說的緩存具體怎么實現,麻煩明示一下。
樓主不會舉一反三,post變量改成你自己的
回復@易學習 感謝回復,但是
這里的$_POST就獲取不到值,是我哪里不對嗎?
就可以讀取用戶輸入的值,然后存儲這個值,賦值給支付變量,邏輯很簡單
回復@易學習 為什么我在pay_before里也獲取不到post,無語了。。。
模板不對
aaaaaa.html模板是支付模板,你要把輸入框寫在這個模板里面,我記得是config/pay/aaaaaaa.html新建
回復@易學習 模板也沒問題啊
好像是我把函數寫錯了,我晚上回家看看我電腦以前的代碼
支付的html是
post一定要是
還好電腦有筆記