首先须要到蚂蚁金服开放平台(https://docs.open.alipay.com)注册应用,获取应用id(APP_ID),而且配置应用,主要是签约应用,这个须要审核,通常2-5个工做日,审核经过后,去生成公钥私钥这些东西,具体步骤参考蚂蚁金服官方文档,上面说明的比较清楚;php
下载的是服务端SDK,注意不要下错,下载地址:https://docs.open.alipay.com/54/103419/;html
这个通常都已经有了吧。laravel
由于SDK不能用composer安装,因此须要自定义laravel的第三方库。express
1:首先将下载下来的包解压后,放到laravel能够自动加载的地方,我放在app/packages/alipay(packages是本身新建的文件夹,下载下来的包我重命名了alipay),结构如图:json
2:在composer.json中的autoload下的classmap下加入"app/Packages/alipay";浏览器
3:运行composer dumpautoload 命令app
这样接入SDK算是完成了。composer
首先在config/alipay.php文件中,配置好相关参数,具体如图:网站
而后我直接在AopSdk.php的同名目录新建了一个Alipay.phpui
文件中简单写了一个生产APP支付订单信息的方法
1 <?php 2 /** 3 * Created by PhpStorm. 4 * User: 寞小陌 5 * Date: 2018/4/18 6 * Time: 9:49 7 */ 8 9 namespace app\Packages\alipay; 10 use Mockery\CountValidator\Exception; 11 12 require ('AopSdk.php'); 13 14 class Alipay 15 { 16 17 18 /** 19 * 生成APP支付订单信息 20 * @param string $orderId 商品订单号 21 * @param string $subject 支付商品的标题 22 * @param string $body 支付商品描述 23 * @param float $total_amount 商品总支付金额 24 * @param int $expire 支付过时时间,分 25 * @return bool|string 返回支付宝签名后订单信息,不然返回false 26 */ 27 public function generateOrder($orderId, $subject, $body, $total_amount, $expire){ 28 try{ 29 $aop = new \AopClient(); 30 $aop->gatewayUrl = config('alipay.gatewayUrl'); 31 $aop->appId = config('alipay.app_id'); 32 $aop->rsaPrivateKey = config('alipay.private_key'); 33 $aop->alipayrsaPublicKey = config('alipay.public_key'); 34 $aop->format= 'json';//固定 35 $aop->charset = config('alipay.charset'); 36 $aop->signType = config('alipay.sign_type'); 37 $request = new \AlipayTradeAppPayRequest(); 38 //SDK已经封装掉了公共参数,这里只须要传入业务参数 39 $bizcontent = "{\"body\":\"{$body}\"," //支付商品描述 40 . "\"subject\":\"{$subject}\"," //支付商品的标题 41 . "\"out_trade_no\":\"{$orderId}\"," //商户网站惟一订单号 42 . "\"timeout_express\":\"{$expire}m\"," //该笔订单容许的最晚付款时间,逾期将关闭交易。取值范围:1m~15d。m-分钟,h-小时,d-天,1c-当天(1c-当天的状况下,不管交易什么时候建立,都在0点关闭)。 该参数数值不接受小数点, 如 1.5h,可转换为 90m。 43 //注:若为空,则默认为15d。 44 . "\"total_amount\":\"{$total_amount}\"," //订单总金额,单位为元,精确到小数点后两位,取值范围[0.01,100000000] 45 . "\"product_code\":\"QUICK_MSECURITY_PAY\"" 46 . "}"; 47 $request->setNotifyUrl(config('alipay.notify_url')); 48 $request->setBizContent($bizcontent); 49 //这里和普通的接口调用不一样,使用的是sdkExecute 50 $response = $aop->sdkExecute($request); 51 //htmlspecialchars是为了输出到页面时防止被浏览器将关键参数html转义,实际打印到日志以及http传输不会有这个问题 52 return htmlspecialchars($response);//就是orderString 能够直接给客户端请求,无需再作处理。 53 }catch(Exception $e){ 54 //失败返回false 55 return false; 56 } 57 } 58 }
注意:必定要引入SDK的入口文件AopSdk.php,require ('AopSdk.php');
不然会报 AopClient Not Found这类的错误信息;
注意:$aop = new \AopClient();这里有个“\”。
至此,支付宝的SDK就能够用了,还有许多其余的业务好比退款,对帐等功能,参考其官方文档就好,迈出了第一步,接下来的路就好走多了。