首先支付寶的文檔真是看得頭暈眼花,摸不着北的感覺,網上百度PHP支付寶一堆都是花里胡哨的,看得一臉懵逼。所以自己整理了一下,其實也沒那么復雜直接上代碼:
php 電腦支付的方法:
/** * 支付寶支付 *$order_sn 單號 $total_amount 價格 */ public function alipay($order_sn,$total_amount) { require_once INCLUDES_PATH.'class'.DS.'Pay'.DS.'mobile'.DS.'alipaytest/'.'AopClient.php'; $aop = new AopClient();//這個類支付寶php服務端 都要用到 (app支付服務端也要用到這個類) $aop->gatewayUrl = 'https://openapi.alipay.com/gateway.do';//支付寶網關,也就是接口地址 $aop->appId = '201709010........';//APPID $aop->rsaPrivateKey =''";//商戶的私鑰() $aop->format = 'json'; $aop->apiVersion = '1.0'; $aop->postCharset= 'utf-8'; $aop->signType = 'RSA2'; $request = new AlipayTradePagePayRequest();//支付寶電腦網站支付需要用到的類 這個類支付寶SDK可以下載 $request->setNotifyUrl(HTTP_HOST.'pay/alipay_notify.php');//支付結果的異步通知回調地址 $request->setReturnUrl(HTTP_HOST.'pay/alipay_return.php');//同步回調回調地址 $bizcontent = json_encode(array( 'subject'=>'商品訂單'.$order_sn, 'out_trade_no'=>$order_sn, 'body'=>'商品訂單', 'total_amount'=>sprintf('%.2f',$total_amount), 'product_code'=>'FAST_INSTANT_TRADE_PAY',//支付類型,APP和電腦支付 手機支付是不一樣的 所以這個類型也是不一樣的 ), JSON_UNESCAPED_UNICODE); $request->setBizContent($bizcontent); $test = $aop->pageExecute($request,'post');//支付寶返回來的地址,直接是可以跳轉的 echo $test; }
附上所需要用到的類:
只需要這三個類就好了,支付寶的sdk 滿滿的一堆 ,但是我們不需要那么多,需要用到類再把它摳出來就好了
app 支付 我們PHP 服務端的代碼,其實就是生成一堆支付的參數 直接上代碼了,其實和上面的電腦支付沒什么區別 只不過是參數有所變動:
/** * 生成支付寶app支付參數 * @param string $title * @param string $order_sn * @param float $amount * @return string */ public function alipay_app($title, $order_sn, $amount) { require_once BASE_DATA_PATH.'/vendors/alipay/AopClient.php'; $aop = new AopClient(); $aop->gatewayUrl = 'https://openapi.alipay.com/gateway.do'; $aop->appId = '20170901。。。'; $aop->rsaPrivateKey = ''; //商戶私鑰 $aop->format = 'json'; $aop->charset = 'UTF-8'; $aop->signType = 'RSA2'; $aop->alipayrsaPublicKey = '';//支付寶公鑰 $request = new AlipayTradeAppPayRequest(); $bizcontent = json_encode(array( 'subject'=>$title, 'out_trade_no'=>$order_sn, 'timeout_express'=>'30m', 'total_amount'=>sprintf('%.2f',$amount), 'product_code'=>'QUICK_MSECURITY_PAY', ), JSON_UNESCAPED_UNICODE); $request->setNotifyUrl('http://xxx/control/alipay_notify.php'); $request->setBizContent($bizcontent); $response = $aop->sdkExecute($request); return $response; }
還是三個類
只不過這個類有所變動而已
再者多了一個應用公鑰:
電腦支付是不要這個PUBLIC key的
好啦 以上就是支付寶電腦網站支付和app 支付的方法 其實手機支付也是差不多的 變得就是支付類型 和支付類