一、准备工作
- 申请appid,生成密钥,生成密钥查看https://openclub.alipay.com/club/history/read/1833
- 下载sdk 地址
二、干货
use Alipay\aop\AopClient;
use Alipay\aop\request\AlipayTradeAppPayRequest;
class AlipayController extends Controller {
public function appAlipay($order)
{
$aop = new AopClient;
$aop->gatewayUrl = "https://openapi.alipay.com/gateway.do"; //网关地址要使用沙箱网关alipaydev
$aop->appId = "你的appID";
$aop->rsaPrivateKey = '填写你自己的应用私钥';
$aop->format = "JSON";
$aop->postCharset = "utf-8";
$aop->signType = "RSA2";
$aop->alipayrsaPublicKey = '填写你的支付宝公钥';
//实例化具体API对应的request类,类名称和接口名称对应,当前调用接口名称:alipay.trade.app.pay
$request = new AlipayTradeAppPayRequest();
$request->setNotifyUrl("回调地址,要跟开放平台配置相同");
$bizcontent = "{\"body\":\"业务名称\","
. "\"subject\": \"项目名称\","
. "\"out_trade_no\": \"订单号\","
. "\"timeout_express\": \"30m\","
. "\"total_amount\": \"0.01\","
. "\"product_code\":\"QUICK_MSECURITY_PAY\""
. "}";
$request->setBizContent($bizcontent);
//这里和普通的接口调用不同,使用的是sdkExecute
$response = $aop->sdkExecute($request);
//htmlspecialchars是为了输出到页面时防止被浏览器将关键参数html转义,实际打印到日志以及http传输不会有这个问题
return $response;//就是orderString 可以直接给客户端请求,无需再做处理。
}
//异步通知回调
public function notify()
{
$info = $_REQUEST;
$aop = new AopClient;
$aop->alipayrsaPublicKey = '填写你的支付宝公钥';
$flag = $aop->rsaCheckV1($info,NULL,"RSA2"); //验签
if(!$flag)
{
file_get_contents('alipayLog.txt',$info);
}
else if($info['trade_status']=='TRADE_SUCCESS') //支付状态
{
//回调逻辑
}
}
}
调用appAlipay方法后直接echo,后边不能再执行其他操作