首先支付宝的文档真是看得头晕眼花,摸不着北的感觉,网上百度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 支付的方法 其实手机支付也是差不多的 变得就是支付类型 和支付类