# 支付宝 支付宝组件用于实现支付宝在线支付功能。 申请地址:[https://www.alipay.com](https://www.alipay.com) 其他产品也可以使用该组件,请登录 [GITHUB](https://github.com/houdunwang/alipay) 查看源代码与说明文档。 [TOC] ## 配置文件 组件可使用配置文件 system/config/alipay.php 进行初始配置。 ``` return [ //应用ID,您的APPID。 'app_id' => "", //商户私钥,使用支付宝提供的签名生成工具创建 'merchant_private_key' => "", //异步通知地址 'notify_url' => "http://www.houdunwang.com/notifyUrl", //同步跳转 'return_url' => "http://www.houdunwang.com/alip/returnUrl", //编码格式 'charset' => "UTF-8", //签名方式 'sign_type' => "RSA2", //支付宝网关 'gatewayUrl' => "https://openapi.alipay.com/gateway.do", //支付宝公钥,查看地址:https://openhome.alipay.com/platform/keyManage.htm 对应APPID下的支付宝公钥。使用支付宝提供的签名生成工具创建 'alipay_public_key' => "", ]; ``` ## 发起支付 ``` $data = [ //商户订单号,商户网站订单系统中唯一订单号,必填 'WIDout_trade_no' => time(), //订单名称,必填 'WIDsubject' => '定单名称', //付款金额单位元,必填 'WIDtotal_amount' => 0.01, //商品描述,可空 'WIDbody' => '定单描述', ]; AliPay::PagePay($data); ``` ## 通知处理 通知分同步通知与异步通知两种形式,同步通知用于为用户显示支付成功或失败的页面。异步通知用于修改定单状态。 #### 同步通知 ``` //签名验证 if(AliPay::signCheck()){ //商户订单号 $out_trade_no = htmlspecialchars($_GET['out_trade_no']); //支付宝交易号 $trade_no = htmlspecialchars($_GET['trade_no']); echo "验证成功<br />支付宝交易号:".$trade_no; }else{ echo '支付失败'; } ``` #### 异步通知 ``` $alipaySevice = new \AlipayTradeService(Config::get('alipay')); //签名验证 if ( ! AliPay::signCheck()) { return 'fail'; }else{ //商户订单号 $out_trade_no = $_POST['out_trade_no']; //支付宝交易号 $trade_no = $_POST['trade_no']; //交易状态 $trade_status = $_POST['trade_status']; if ($_POST['trade_status'] == 'TRADE_FINISHED') { //支付成功时的业务处理 } else if ($_POST['trade_status'] == 'TRADE_SUCCESS') { //交易完成时的业务处理 } //必须返回以下内容给支付宝 return 'success'; } ```