聯(lián)系官方銷售客服
1835022288
028-61286886
請教自定義付款(http://223987.com/doc/458.html)一個(gè)問題。
看到官方文檔中自定義付款示例如下:
<?php namespace Phpcmf\Model\App; // 這里需要把App改成項(xiàng)目目錄名稱 // 付款模型示例 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個(gè)漢字表述 } // 付款前的權(quán)限驗(yàn)證,返回null表示可進(jìn)行付款,返回字符串是就輸出字符串 // $id 記錄id; $paylog 支付表記錄數(shù)組; $num 數(shù)量; $sku 自定義屬性 public function pay_before($id, $num, $sku, $siteid) { return ''; } // 付款價(jià)格 // $id 記錄id; $num 數(shù)量; $sku 自定義屬性; $siteid 站點(diǎn)id public function get_price($id, $num, $sku, $siteid) { // 計(jì)算付款價(jià)格 $data = $this->_get_row($id, $siteid); return $data['price']; // 測試200 } // 付款數(shù)據(jù) // $id 記錄id; $num 數(shù)量; $sku 自定義屬性; $siteid 站點(diǎn)id public function get_row($id, $num, $sku, $siteid) { // 查詢數(shù)據(jù)記錄,判斷是否存在 $data = $this->_get_row($id, $siteid); return [ 'price' => $this->get_price($id, $num, $sku, $siteid), 'title' => '支付記錄標(biāo)題'.$data['title'], 'sell_uid' => 0, // 商家uid 'sell_username' => '', // 商家賬號 ]; } // 付款成功 // $id 記錄id; $paylog 支付表記錄數(shù)組; $num 數(shù)量; $sku 自定義屬性 public function success($id, $paylog, $num, $sku) { // 支付成功之后的回調(diào)處理動作 $data = $this->_get_row($id, $paylog['site']); } // 根據(jù)id查詢表數(shù)據(jù) // $id 記錄id; $siteid 站點(diǎn)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]; } // 付款成功跳轉(zhuǎn)URL // $id 記錄id; $paylog 支付表記錄數(shù)組 public function call_url($id, $paylog) { return dr_url_prefix("/index.php"); // 跳轉(zhuǎn)url } }
這段代碼中g(shù)et_price()是針對數(shù)據(jù)庫已經(jīng)有具體定價(jià)然后通過數(shù)據(jù)庫讀取定價(jià)再進(jìn)行支付調(diào)用,我這邊的需求是用戶自行輸入金額(類似打賞),而不是從數(shù)據(jù)庫中g(shù)et_price(),請問如何實(shí)現(xiàn)?試了下$post和\Phpcmf\Service::L('input') 都獲取不到post 的值。
其實(shí)功能需求就是類似官方的donation(模塊內(nèi)容打賞)插件,但因?yàn)楣俜降牟寮a都集成到框架中了,所以不能仿照,請各位大大不吝賜教。
補(bǔ)充:
類似下圖,調(diào)用支付以后需要自行填寫金額
然后點(diǎn)擊付款的時(shí)候因?yàn)楂@取不到post的值而提示金額不規(guī)范。
我記得,充值那里是有自定義金額的
回復(fù)@小黃人 18html.com 是想自定義開發(fā),但是看官方的文檔接口獲取不到post的自定義金額
這個(gè)簡單啊,將用戶輸入的金額存儲到本地緩存中,get_price就讀緩存金額,我做過這種,類似打賞
回復(fù)@易學(xué)習(xí) 這個(gè)官方的接口不能獲取post的值么?感覺用緩存存提交的數(shù)據(jù)不是個(gè)好辦法吧
ajax傳過去不就好了
四樓思路對,我也是這樣開發(fā)的,get_price不能獲取post,但get_price可以獲取到緩存值
回復(fù)@靠懸賞(設(shè)置懸賞)賺錢買授權(quán) 但是官方調(diào)用的時(shí)候就一個(gè)
緩存用戶輸入的內(nèi)容還得再寫個(gè)控制器吧,感覺繞路了,或者您說的緩存具體怎么實(shí)現(xiàn),麻煩明示一下。
樓主不會舉一反三,post變量改成你自己的
回復(fù)@易學(xué)習(xí) 感謝回復(fù),但是
這里的$_POST就獲取不到值,是我哪里不對嗎?
就可以讀取用戶輸入的值,然后存儲這個(gè)值,賦值給支付變量,邏輯很簡單
回復(fù)@易學(xué)習(xí) 為什么我在pay_before里也獲取不到post,無語了。。。
模板不對
aaaaaa.html模板是支付模板,你要把輸入框?qū)懺谶@個(gè)模板里面,我記得是config/pay/aaaaaaa.html新建
回復(fù)@易學(xué)習(xí) 模板也沒問題啊
好像是我把函數(shù)寫錯(cuò)了,我晚上回家看看我電腦以前的代碼
支付的html是
post一定要是
還好電腦有筆記