Skip to main content

Posts

Showing posts from September, 2012

[探索 5 分鐘] PayPal 的沙箱測試

在 CNIS (Canadian Network for International Surgery, 非營利組 織) 當志工時有的負責 SugarCRM 的同事需要跟 PayPal 介接支付, 問我要不要玩一下。稍微實驗一下發現可行, 主要是 PayPal 的沙箱做得不錯, 不會讓你不小心扣到錢 ...。 程式筆記 Email : invalid IPN detected 有時候, 就會發現收到這種通知, 感覺有測成功又覺得哪裡怪怪的 anonymous@ip-184-168-107-240.ip.secureserver.net ------------------------------------------------ ----------- [ 26/09/2012 14:34:42 ] ------------ ------------------------------------------------ WARNING: invalid IPN detected IPN Values received: item_name: Stuffed Bear item_price: $80 quantity: 8 total_amount: 40 ------------------------------------------------ ------------------------------------------------ Email: VALID IPN RECEIVED 在 PayPal Instant Payment Notification (IPN) 上有一點卡住, 後來找到一份代碼  Roberto Gomes 2008 , 就迎刃而解了, 後面會把原始碼整個提供出來。 from: anonymous@ip-184-168-107-240.ip.secureserver.net ------------------------------------------------ ----------- [ 26/09/2012 14:44:08 ] ------------ ------------------

[探索 10 分鐘] Extjs.ComboBox 用 ajax 方式讀取選項資料 (php + Yii + extjs + mysql)

在 CNIS (Canadian Network for International Surgery, 非營利組織) 當志工時推薦他們一個我比較熟悉的 Extjs framework, 但這個框架其實不好上手。同事問我怎麼從 db 撈一組國家列表, 前端用 Extjs 的 combobox 元件來互動 ? 於是我就動手了, 發現還真的挺複雜的, 所以趕快來記錄一下。 需求重點提示 這個下拉式選單 (combobox) 的內容是透過 ajax 初始化他的可用選項 獨立創建一個 controller.js 專門接收這個 request, 並與 MySQL 完成交互, 回傳 JSON 格式資料 需存取 stored-procedure combobox 需有一個 template 方便調整符合站台的樣式 (他們不要 Extjs 內建的樣式) 程式筆記 MySQL Store Procedure CREATE DEFINER=`my_db`@`%` PROCEDURE `my_sp`( ) BEGIN SELECT `country_code` AS `key`, `country_name` AS `name` FROM `myDB`.`myTable`; END$$ controller.php Yii framework 有個驗證機制, 需要 allow 給什麼 user 可存取什麼 controller, 要記得加上這一段代碼 (如下 accessRules 函式), 否則會得到 server side 的訊息:  failed to load resource the server responded with a status of 403 (access forbidden) controller // authorize the access permission public function accessRules() { return array( ..., array('allow', 'actions'=>array('create'

[探索 5 分鐘] 執行 MySQL command 出現 : cannot execute queries while other unbuffered queries are active (php + Yii + extjs + mysql)

  PHP 不算我非常熟的語言, 但今天在 CNIS (Canadian Network for International Surgery, 非營利組織) 當志工時幫忙解了一個 bug, 覺得可以記錄一下 程式筆記 Environment Front-end: Yii framework Back-end: PHP Database: MySQL SQL Tool: SQLYog OS: Linux PHP Exception 其實這是我自己種下的坑, 因為我建議使用 stored-procedure, 讓後端程式碼乾淨, 然後就出現這個 exception: CDbException CDbCommand failed to execute the SQL statement: SQLSTATE[HY000]: General error: 2014 Cannot execute queries while other unbuffered queries are active. Consider using PDOStatement::fetchAll(). Alternatively, if your code is only ever going to run against mysql, you may enable query buffering by setting the PDO::MYSQL_ATTR_USE_BUFFERED_QUERY attribute.. The SQL statement executed was: select @output MySQL Stored-Procedure 一開始的方向是在看 store-procedure 以及後端給予的 @output 參數是否有問題, 結果徒勞無功, 同事也幫不上忙 CREATE DEFINER=`my_db`@`%` PROCEDURE `my_sp`( IN v_title TEXT, OUT output INT ) BEGIN ... SET output = LAST_INSERT_ID(); SELECT output