這個就不說了, 不明白如何下手的夥伴讓運營去和支付寶客服聯繫吧git
將如下代碼添加到 composer.jsongithub
{ "require": { "lokielse/omnipay-alipay": "dev-master" }}
執行composer命令更新依賴json
$ curl -s http://getcomposer.org/installer | php $ php composer.phar update
該庫提供了 6 種不一樣的接口,各類接口有不一樣的配置和用法,我用過Alipay_Express 和 Alipay_WapExpress,下面會有這兩種支付的步驟。瀏覽器
use Omnipay\Omnipay; //調用支付網關, 這一步其實就是配置參數,能夠寫成通用函數 $gateway = Omnipay::create('Alipay_Express'); //建立網關類 $gateway->setPartner('8888666622221111'); //合做者id $gateway->setKey('your**key**here'); //支付key $gateway->setSellerEmail('merchant@example.com'); 收款帳戶email $gateway->setReturnUrl('http://www.example.com/return'); //返回url, 用戶支付後會跳轉到這個地址, 能夠定義支付成功或者支付失敗等頁面返回增長用戶體驗 $gateway->setNotifyUrl('http://www.example.com/notify'); //通知url,每次支付完成後, 支付寶服務器會向這個地址發請求,返回支付狀態 //設置訂單 $options = [ 'out_trade_no' => date('YmdHis') . mt_rand(1000,9999), //你本身網站的惟一訂單號 'subject' => 'test', //訂單標題 'total_fee' => '0.01', //訂單價格 //這裏也能夠帶上其餘參數,支付完以後支付寶會返回該參數和對應的值,不過設置了以後後面處理支付狀態須要多一步操做。我通常會設置'paytype' => 'alipay', ]; //跳轉支付 $response = $gateway->purchase($options)->send(); $response->redirect();
這個能夠寫在支付是指定的returnurl或者notifyurl對應到控制器裏面php框架
use Omnipay\Omnipay; $gateway = Omnipay::create('Alipay_Express'); $gateway->setPartner('8888666622221111'); $gateway->setKey('your**key**here'); $gateway->setSellerEmail('merchant@example.com'); $options = [ 'request_params' => $_REQUEST, ]; //這條語句前提是你在前面支付的時候沒有帶其餘到參數,若是帶了, 須要將其餘參數unset, 好比我通常會帶上一個&paytype=alipay用來標識是支付寶支付, 因此我就須要在這條語句前先執行unset($_REQUEST['paytype']); if ( $response->isSuccessful() && $response->isTradeStatusOk() ) { echo "支付成功"; //寫本身的邏輯, 好比把支付狀態寫入訂單表裏面 } else { echo "支付失敗"; }
若是你都配置好了的話那就測試吧
應該是手機瀏覽器訪問支付連接會先訪問pc版支付寶頁面後跳轉到支付寶app裏面,
pc訪問的話就是訪問pc頁面掃碼支付服務器
//和上面基本沒什麼差異 , 差異就是須要帶上你的服務器使用openssl生成的rsa私鑰和支付寶的公鑰, //另外在此以前須要先上傳你的rsa公鑰到支付寶,[上傳RSA公鑰](https://doc.open.alipay.com/doc2/detail.htm?spm=a219a.7629140.0.0.7n6Wbd&treeId=58&articleId=103578&docType=1) use Omnipay\Omnipay; //調用支付網關, 這一步其實就是配置參數,能夠寫成通用函數 $gateway = Omnipay::create('Alipay_Express'); $gateway->setPartner('8888666622221111'); //合做者id $gateway->setKey('your**key**here'); //支付key $gateway->setSellerEmail('merchant@example.com'); 收款帳戶email // private key : [RSA私鑰及公鑰生成](https://doc.open.alipay.com/doc2/detail?treeId=58&articleId=103242&docType=1) //alipay public key : 支付寶公鑰, //查看地址爲:b.alipay.com->個人商家服務->[查看PID、Key](https://b.alipay.com/order/serviceIndex.htm), //找到合做夥伴密鑰管理->查看支付寶公鑰。 //**注:PHP和.NET使用DEMO中已有的alipay_public_key.pem密鑰文件。** //demo下載地址[https://doc.open.alipay.com/doc2/detail?treeId=54&articleId=103419&docType=1](https://doc.open.alipay.com/doc2/detail?treeId=54&articleId=103419&docType=1) $gateway->setPrivateKey('這裏是一大串rsa鑰匙'); $gateway->setAlipayPublicKey('這裏是一大串支付寶的公鑰'); $gateway->setReturnUrl('http://www.example.com/return'); //返回url, 用戶支付後會跳轉到這個地址, 能夠定義支付成功或者支付失敗等頁面返回增長用戶體驗 $gateway->setNotifyUrl('http://www.example.com/notify'); //通知url,每次支付完成後, 支付寶服務器會向這個地址發請求,返回支付狀態 //設置訂單 $options = [ 'out_trade_no' => date('YmdHis') . mt_rand(1000,9999), //你本身網站的惟一訂單號 'subject' => 'test', //訂單標題 'total_fee' => '0.01', //訂單價格 ]; //跳轉支付 $response = $gateway->purchase($options)->send(); $response->redirect();
和Alipay_Express的沒有區別app
只用手機測試過, 跳轉到支付寶手機網頁支付的頁面。composer
支付寶文檔可能會更新,文檔地址連接可能不能用,本文連接更新時間爲20160527框架
其餘php框架或者原生php的處理是相似的,但願此篇文章對你之後的開發有幫助。
原文地址:https://www.jianshu.com/p/e0d4f0d0d3f1