对应的配置请自行查看官网文档配置,注意密钥加密方式为RSA2即可
1、WAP
require '../extend/alipay/wappay/service/AlipayTradeService.php';
require '../extend/alipay/wappay/buildermodel/AlipayTradeWapPayContentBuilder.php';
$amount = $this->request->param('total');
$order_id = $this->request->param('order_id');
$return_url="http://xxx";
$appid=config('base.web_AliAppid');
$prkey=config('base.web_rsaPrivateKey');
$pukey=config('base.web_alipayrsaPublicKey');
$config = array (
//应用ID,您的APPID。
'app_id' => $appid,
//商户私钥,您的原始格式RSA私钥
'merchant_private_key' =>$prkey,
'notify_url' => "http://xxx/commodity/index/wapAliNotify",
//同步跳转
'return_url' =>$return_url,
//编码格式
'charset' => "UTF-8",
//签名方式
'sign_type'=>"RSA2",
//支付宝网关
'gatewayUrl' => "https://openapi.alipay.com/gateway.do",
//支付宝公钥,查看地址:https://openhome.alipay.com/platform/keyManage.htm 对应APPID下的支付宝公钥。
'alipay_public_key' => $pukey,
);
//商户订单号,商户网站订单系统中唯一订单号,必填
$out_trade_no = $order_id;
//订单名称,必填
$subject = 'alipay测试';
//付款金额,必填
$total_amount = $amount;
//商品描述,可空
$body = '商品描述测试';
//超时时间
$timeout_express="1m";
$payRequestBuilder = new \AlipayTradeWapPayContentBuilder();
$payRequestBuilder->setBody($body);
$payRequestBuilder->setSubject($subject);
$payRequestBuilder->setOutTradeNo($out_trade_no);
$payRequestBuilder->setTotalAmount($total_amount);
$payRequestBuilder->setTimeExpress($timeout_express);
$payResponse = new \AlipayTradeService($config);
$result = $payResponse->wapPay($payRequestBuilder,$config['return_url'],$config['notify_url']);
return $result;
2、PC
require '../extend/alipay/pagepay/service/AlipayTradeService.php';
require '../extend/alipay/pagepay/buildermodel/AlipayTradePagePayContentBuilder.php';
$amount = $this->request->param('total');
$order_id = $this->request->param('order_id');
$return_url="http://xxx";
$appid=config('base.web_AliAppid');
$prkey=config('base.web_rsaPrivateKey');
$pukey=config('base.web_alipayrsaPublicKey');
$config = array (
//应用ID,您的APPID。
'app_id' => $appid,
//商户私钥,您的原始格式RSA私钥
'merchant_private_key' =>$prkey,
'notify_url' => "http://xxx/commodity/index/wapAliNotify",
//同步跳转
'return_url' =>$return_url,
//编码格式
'charset' => "UTF-8",
//签名方式
'sign_type'=>"RSA2",
//支付宝网关
'gatewayUrl' => "https://openapi.alipay.com/gateway.do",
//支付宝公钥,查看地址:https://openhome.alipay.com/platform/keyManage.htm 对应APPID下的支付宝公钥。
'alipay_public_key' => $pukey,
);
//商户订单号,商户网站订单系统中唯一订单号,必填
$out_trade_no = trim($order_id);
//订单名称,必填
$subject = trim("测试");
//付款金额,必填
$total_amount = trim($amount);
//商品描述,可空
$body = trim("描述");
//构造参数
$payRequestBuilder = new \AlipayTradePagePayContentBuilder();
$payRequestBuilder->setBody($body);
$payRequestBuilder->setSubject($subject);
$payRequestBuilder->setTotalAmount($total_amount);
$payRequestBuilder->setOutTradeNo($out_trade_no);
$aop = new \AlipayTradeService($config);
$response = $aop->pagePay($payRequestBuilder,$config['return_url'],$config['notify_url']);
//输出表单
var_dump($response);
3、回调
//异步通知回调--支付宝WAP和网页
public function wapAliNotify(){
$info = $this->request->param();
if($info['trade_status']=='TRADE_SUCCESS'){
//支付状态
$res=Db::name('order')->where('order_id','=',$info['out_trade_no'])->find();
if($res['status'] == 1){
Db::name('order')->where('trade_no','=',$info['out_trade_no'])->update(['status'=>2,'transaction_id'=>$info['trade_no']]);
}
return "success";
}else{
return "fail";
}
}