支付宝风险推送接口接入指南【总结】

1 篇文章 0 订阅
1 篇文章 0 订阅

最近因公司业务,需要接入支付宝风险推送接口。文档有些零散,也踩了一些坑,在此总结一下。

应用场景:

基于强大的数据沉淀和精准的风险识别能力,主动向支付宝合作伙伴提供风险交易推送服务。风险类型主要包括欺诈、赌博、虚假交易,协助合作伙伴识别交易风险,助力合作伙伴业务健康发展。

业务流程:

在这里插入图片描述

风险类型:

在这里插入图片描述

接入指南:
a. 前期准备工作:
  1. 登录(支付宝账号)并注册RiskGo安全合作平台, 平台地址:riskgo.alipay.com
  2. 在开放平台创建一个新的应用,并申请上线,上线后在商户平台将该appid与商户pid进行绑定
b.配置创建的应用(主要配置接口加签方式、应用网关)

应用网关就是风险消息推送地址
在这里插入图片描述

c.在riskGo平台管理的工作台中找到交易安全防护(普惠版),点击申请服务,并填写相关参数

在这里插入图片描述
注: 有些同学在这儿卡住了,发现什么都没有,说明你的之前申请的应用没有上线并绑定pid.

d.申请信息填写完毕后,提交审核,审核通过后就可以联调了【强烈推荐使用支付宝平台开发助手来辅助进行验签工作,不然你验签失败后都不知道问题出在哪儿】
  1. 沙箱联调:
    在沙箱联调界面会让你填入联调参数,填写完毕后,下方会生成请求数据【post】与URL【get】,基于自己程序的接收方式,选择对应的数据进行调试即可
    在这里插入图片描述
  1. 生产环境联调:
    沙箱联调成功后就可以进行生产环境调试了,此时你需要在程序的配置文件中将沙箱环境的公钥替换成你申请的appid对应的支付宝公钥(不然会验签失败)
    在这里插入图片描述

注意事项:

  1. 联调时,推送数据的方式是post方式,数据是gbk编码的,并使用urlencode进行了加密处理。
  2. PHP在接收数据时应使用file_get_contents(“php://input”),如果使用$_POST来接收,会因为编码问题导致验签失败
  3. 正确显示接收的数据,应使用
$content = file_get_contents("php://input");
$content = urldecode($content);
$content = mb_convert_encoding($content, 'utf-8', 'GBK');
  1. php验签的代码,此处是官方的代码示例,个人可根据实际业务需要封装 【注: 因为数据本身是gbk编码了, 所以下面代码中$aop->postCharset="UTF-8"可以不要】
$aop = new AopClient ();

//编码格式
$aop->postCharset="UTF-8";

//支付宝公钥赋值
$aop->alipayrsaPublicKey="";

//回调的待验签字符串
$_POST="buyer_id=20880****42&total_amount=0.01&body=煜雨电脑网站测试&trade_no=2019032922001481941025940236&notify_time=2019-03-29 19:42:04&subject=煜雨测试电脑网站支付&sign_type=RSA2&charset=UTF-8&auth_app_id=201****22&notify_type=trade_status_sync&invoice_amount=0.01&out_trade_no=20190329ygyg45484544100003&trade_status=TRADE_SUCCESS&gmt_payment=2019-03-29 19:42:03&version=1.0&point_amount=0.00&sign=LDDUIGQmc+1qNtk3oyoAKVeMUKTngdX3ZjVeZOK0EjiPDJ/+Nk+0WSqcE6J7/5xb96Z/vP0yY3pVhZUiFVJ1G45/ys/HAleHh+EERZ1lkCkule1sSyaGFTKQGKx4uHpTyqIgRB1bouf19RPbSx1EkA0VkCarSy9G/OEG5Qmg8UdL2dRulMhlbOHS7tdMJJycDA8vOspOUMeQmk/H6IK9R2Kou5hN2T3KR1GWLYFK+z1jeZhQB3q52lZynO0OFjSzU4aQUBMW5QskQppBYd/ghtY/2YP+2H6YVGNgVmaheZMQ3PVTBALEV+8rZa91salH9DkKN2UCYGvNSNDT1VGCTQ==&gmt_create=2019-03-29 19:42:00&buyer_pay_amount=0.01&receipt_amount=0.01&fund_bill_list=[{\"amount\":\"0.01\",\"fundChannel\":\"PCREDIT\"}]&seller_id=208850*0**&app_id=20141****2&notify_id=2019032900222194204081941005192208";

//签名方式
$sign_type="RSA2";

//把字符串通过&符号拆分成数组
$data = explode('&', $_POST);

$params = array();
//遍历数组
foreach ($data as $param) {
 $item = explode('=', $param,"2");
 $params[$item[0]] = $item[1];
}
//输出拆分后的数据
//print_r($params);

//验签代码
$flag = $aop->rsaCheckV1($params, null, $sign_type);

//输出验签结果
//echo $flag;

if ($flag)
{
 echo "success";
}
else 
{
    echo "fail";
}
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值