Python調(diào)用PHP的函數(shù)**
最近在做支付相關(guān)的產(chǎn)品,當(dāng)然是去第三方的平臺,公司使用的是Python語言,支付公司只有PHP和Java的Demo,研究了半天,涉及到業(yè)務(wù)字段加密的部分,決定用Python去調(diào)用支付公司提供的PHP加密/解密函數(shù)。
沒有PHP開發(fā)經(jīng)驗(yàn),百度了一下:找到
** http://blog.csdn.net/houqd2012/article/details/11266319 **
還不錯(cuò),免去了翻墻Google。
PHP參數(shù)傳入:
我們通過在URL后面追加參數(shù)的方式傳入?yún)?shù),如下:
php -f ./php_aes.php method args1 args2
PHP文件:php_aes.php
PHP函數(shù):method
傳入?yún)?shù):args1 args2
Python就是:
method = 'aes_en'
rsaKey = 'MUDBFOSJIF=='
data = 'Leou'
proc = subprocess.Popen(['php -f ./ucf/php_aes.php ' + method + ' ' + rsaKey + ' ' + data], shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
response = proc.stdout.read()
其中要注意的是,不管是函數(shù)名,還是參數(shù),都是在文件URL后追加,而且要用空格分開。**
PHP文件中參數(shù)獲?。?/strong>
不用多說,直接在PHP文件內(nèi)獲取URL后面
$method = $argv[1];
$rsaKey = $argv[2];
$data = $argv[3];
現(xiàn)在我們有了方法/函數(shù)名,有了參數(shù),該怎么做呢?
還用多說?當(dāng)然去調(diào)用方法,并且調(diào)用的同時(shí),把獲取的參數(shù)傳進(jìn)去。
if(isset($method) && $method != ""){
return $method($data, $key);
}else{
echo "No function to call.";
}
切記,調(diào)用的方法,內(nèi)部處理完成之后,要想在Python中獲取返回值,要使用print_r echo print輸出。**
function aes_en($encrypted,$key) {
print_r ("success");
}
這樣就實(shí)現(xiàn)了Python調(diào)用PHP的函數(shù)。