THINKPHP5融合支付寶支付

重要的事情說三遍:PHP支付不能用csr文件上傳的方式設置公鑰!PHP支付不能用csr文件上傳的方式設置公鑰!PHP支付不能用csr文件上傳的方式設置公鑰!
框架:TP5 + mysql
設置順序:
1.在支付寶開發者中心中申請應用,例:應用爲:測試支付,appID:abc123
2.在tp5根目錄vendor文件夾下加入Alipay的PHPSDK(官方文檔中下載)
3.業務代碼

function aliPay($order_id, $total_amount){
	$config = [
		'appid' => 'abc123',
		'notify_url' => '本地可外部訪問的url鏈接',
		'rsaPrivateKey' => '申請應用時用的私鑰',
		'alipayrsaPublicKey' => '支付寶公鑰!支付寶公鑰!支付寶公鑰!'
	];
    if ($order_id!= '' && $total_amount > 0) {
    	vendor('Alipay.AopSdk');
		$aop = new \AopClient();
		$aop->gatewayUrl = "https://openapi.alipay.com/gateway.do";//寫死不用動
		$aop->format = "json";//寫死不用動
		$aop->charset = "utf-8";//寫死不用動
		$aop->signType = "RSA2";//寫死不用動
		$aop->appId = $config['appid'];
		$aop->rsaPrivateKey = $config['rsaPrivateKey'];
		$aop->alipayrsaPublicKey = $config['alipayrsaPublicKey'];
		//實例化具體API對應的request類,類名稱和接口名稱對應,當前調用接口名稱:alipay.trade.app.pay
		$request = new \AlipayTradeAppPayRequest();
		//SDK已經封裝掉了公共參數,這裏只需要傳入業務參數
		$bizcontent = json_encode([
	        'subject' => '訂單的簡要概述',
	        'out_trade_no' => $order_id,//此訂單號爲商戶唯一訂單號
	        'total_amount' => $total_amount,//訂單價格,保留兩位小數
	        'product_code' => 'QUICK_MSECURITY_PAY'//寫死不用動
	    ],JSON_UNESCAPED_UNICODE);
		$request->setNotifyUrl($config['notify_url']);
		$request->setBizContent($bizcontent);
		//這裏和普通的接口調用不同,使用的是sdkExecute
		$response = $aop->sdkExecute($request);
		//htmlspecialchars是爲了輸出到頁面時防止被瀏覽器將關鍵參數html轉義,實際打印到日誌以及http傳輸不會有這個問題
		//此處str_replace爲我個人加入的,在傳回安卓端的時候有時會帶上“amp;”,雖然不影響,去掉以防萬一
		$response = str_replace('amp;', '', htmlspecialchars($response));//就是orderString 可以直接給客戶端請求,無需再做處理。
		return $response;
    } else {
        return false;
    }
}

其他業務代碼略

//打完收工w(゚Д゚)w
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章