支付宝同步通知根据return_url进行设置。
return_url参数说明:同步跳转地址,支付接口的公共请求参数;
使用场景:可实现支付成功后跳转到商家页面的功能,而且跳转后的return_url页面的地址栏中会返回同步通知参数。
一、如何设置同步地址
1、return_url必须是http或https开头的完整的url地址;
2、return_url地址后不可带自定义参数;
3、设置return_url时不要进行转义、urlencode等数据处理。
注:当面付和APP支付不支持return_url参数,即使设置了也没有任何效果。
二、同步通知返回参数介绍
商户需使用get方式接收同步通知,如returnUrl设置http://test.gdygsk.com/include/plugin/payment/alipay/return_url.php。
return_url参数后面?拼接的就是同步返回参数,返回的同步通知参数如下(以下示例报文仅供参考,实际返回的详细报文请以实际返回为准)
http://test.gdygsk.com/include/plugin/payment/alipay/return_url.php?charset=utf-8&out_trade_no=pay_220309152718404&method=alipay.trade.page.pay.return&total_amount=60.01&sign=YOx%2Bo3Br7UOpS0FwZ3lIG%2B5KtMIevhvctqOj6PYeY1P7SY0q7Aw4aMl8znszbvVEOufFfR8cdbwXUdlANIgEOrqlEXl43oglrtn8V8ILPpqazGZmaIl8A74sIlcyHr9GFU4ChRzwoASjiWwChMoAzLMzs%2FnVuNulC1J9IahCkZJ6mT1ME67yvwwletJ0M4cxuG6HO2mpn0naGjzCG038eCMB%2F8tPPqhSKOtcnvUfsh02GrxuGHUN0wFfhWFf0CM%2FNEZwVpoifYvD%2Fl%2FmtP8VsLDmAB2OjnnYTbQxYYS3u6MBFW0PSomB6bOFgxmEriaswkeJ5TTs5DfKlTbRkoZ38w%3D%3D&trade_no=2022030922001461630505583547&auth_app_id=2016**********06&version=1.0&app_id=2016**********06&sign_type=RSA2&seller_id=2088**********21×tamp=2022-03-09+15%3A27%3A47
返回的同步通知参数部分注释:
charset:编码格式(如utf-8、gbk、gb2312等)
out_trade_no:商家网站唯一订单号
method:接口名称
total_amount:该笔订单的资金总额,单位为元,精确到小数点后两位,取值范围为[0.01,100000000],金额不能为0
sign:
trade_no:该交易在支付宝系统中的交易流水号,最长64位
auth_app_id:
version:
app_id:支付宝分配给开发者的应用id
sign_type:
seller_id:收款支付宝账号对应的支付宝唯一用户号(商户PID),以2088开头的纯16位数字
timestamp:时间
三、同步通知验签
同步通知验签方式和异步验签方式相同。
其验签步骤为:
第一步:在通知返回参数列表中,除去sign、sign_type两个参数外,凡是通知返回回来的参数皆是待验签的参数;
第二步:将剩下参数进行url_decode,然后进行字典排序,组成字符串,得到待签名字符串;
第三步:将签名参数(sign)使用base64解码为字节码串;
第四步:使用RSA的验签方法,通过签名字符串、签名参数(经过base64解码)及支付宝公钥验证签名;
第五步:在步骤四验证签名正确后,必须再严格按照如下描述校验通知数据的正确性。
注意事项:
1、get获取的同步通知需url_decode处理,不处理会导致验签失败。
2、由于同步通知中不含有trade_status(交易状态),无法确认交易信息,建议根据异步通知或交易查询接口返回的trade_status(交易状态)为准。
四、同步不跳转
如用户遇到同步不跳转的问题,请根据以下说明进行排查:
1、接口是否支持reurn_url,如app支付和当面付设置了reurn_url也是不生效的。
2、reurn_url设置方式是否正确,传参方式、传参位置错误都会导致不生效。
3、同步未跳转时,就调用商家分账接口会进行干扰的。
4、已经跳转了,但是商户以为没有跳转。