配置支付宝应用网关
首先要在服务器上写一个接口,然后将接口的访问地址设置在支付宝应用网关
在支付宝的开放平台中设置如图:
如何接收支付宝异步通知(应用网关接收请求)
上面配置好接口后,我就来接收post请求的数据,又不知道请求参数是啥?然后看文档、问客服、百度。然后使用file_get_contents(“php://input”);能接收到参数。并把接收到的参数保存在一个文件里面看看他的数据格式:
当我看到他的第一眼还以为是一个get请求。像这种post请求参数接收的时候没有参数名,并且还使用&拼接多个参数,处理起来有点小难受。
将&连接的参数分割成数组实例:
下面的实例里我将我的业务代码删除了的,要是想看拆分后的数据可以在sites.txt中将参数复制用postman看返回参数的具体值。
public function index(){
//接收参数
$postStr = file_get_contents("php://input");
//调用支付宝的sdk包
$aop = new \ AopClient ();
//支付宝公钥赋值,配置在config文件中
$aop->alipayrsaPublicKey=config('alipayrsaPublicKey');
//签名方式
$sign_type="RSA2";
// 接收到的参数转urldecode
$_POST=urldecode($postStr);
// 测试将支付宝给的参数保存在public/sites.txt下
// $file="sites.txt";
// $url=str_replace("\\","/", ROOT_PATH);
// $url=$url."public/" .trim($file);
// file_put_contents($url,$_POST);
//把字符串通过&符号拆分成数组
$data = explode('&', $_POST);
$params = array();
//遍历数组
foreach ($data as $param) {
$item = explode('=', $param,"2");
// dump($item);
$params[$item[0]] = $item[1];
}
//校验支付宝传入的参数是否被修改过,只要不是支付宝发送的参数都是false
$flag = $aop->rsaCheckV1($params, null, $sign_type);
if (!$flag){
return;
}
//打印分割好的值,在取对应的key即可
dump($params);
难点
当时写这个接口难就难在是第三方来调用你的接口,然后接收参数得跟着别人的要求来,最关键的是我还不能打印接收到的参数。还遇到我的phpstorm不能DEBUG。
声明:本站所有资源,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。