现在的一个项目支付宝PC支付还是用的以前网关:https://mapi.alipay.com/gateway.do (是支付宝 2012年7月13日的3.3版本)
所以现在要做下支付宝PC支付的升级,用最新的网关:https://openapi.alipay.com/gateway.do
与之前的相比,代码上比之前更安全了,有公钥、私钥、APPID、签名、验签等。
支付效果见图:
首先下载好PC支付的sdk,一共有两段代码,代码是基于tp3.2框架写的
第一段:直接用get方式访问下面的这个方法
/*
* 支付宝支付--new 扫码支付
* $out_trade_no 是需要你自定义的订单号
* $subject 是这次订单的标题自定义的
* $total_fee 是付款的金额 0.01
* */
public function alipay_new($out_trade_no, $subject, $total_fee) {
//配置参数
$res = array();
$res['out_trade_no'] = $out_trade_no;
$res['subject'] = $subject;
$res['total_amount'] = $total_fee;
$res['body'] = '';
//引入核心的支付文件
vendor('AlipayPc.AopSdk');
vendor('AlipayPc.aop.AopClient');
vendor('AlipayNew.aop.request.AlipayTradePagePayRequest');
//支付宝配置参数
$config = [
'app_id' => '这个支付宝管理中心可以找到',
'merchant_private_key' => '这里面写是私钥,注意要是一行,生成的那个西药文件里面的都有回车',
'notify_url' =>'异步的回调地址',
'return_url' => '同步的回调地址',
'charset' => 'UTF-8',
'sign_type' => 'RSA2',
'gatewayUrl' => 'https://openapi.alipay.com/gateway.do',
'alipay_public_key' => '公钥,注意的地方和私钥一样',
'MaxQueryRetry' => '10',
'QueryDuration' => '3'
];
//构造参数
$timeExpress = "5m";
$aop = new \AopClient();
$aop->gatewayUrl = 'https://openapi.alipay.com/gateway.do';
$aop->appId = '2018071560647164';
$aop->rsaPrivateKey = $config['merchant_private_key'];
$aop->alipayrsaPublicKey = $config['alipay_public_key'];
$aop->apiVersion = '1.0';
$aop->signType = 'RSA2';
$aop->postCharset='UTF-8';
$aop->format='json';
$request = new \AlipayTradePagePayRequest();
$request->setNotifyUrl($config['notify_url']);
$request->setReturnUrl($config['return_url']);
//下面的参数可以去看文档,这里有个问题我还没解决,就是passback_params这在同步返回的时候没有给带回来,有知道的可以给我留言,谢谢了
$request->setBizContent("{" .
"\"out_trade_no\":\"".$out_trade_no."\"," .
"\"passback_params\":\"merchantBizType%3d3C%26merchantBizNo%3d2016010101111\"," .
"\"product_code\":\"FAST_INSTANT_TRADE_PAY\"," .
"\"total_amount\":0.01," .
"\"subject\":\"".$subject."\"," .
"\"body\":\"".$subject."\"," .
"\"timeout_express\":\"5m\"" .
"}