收不到异步通知自查方案-支付宝接口常见错误系列

来自    其他 | 
作者:我是个导演  |  更新于:2017-08-07 15:19:22     
说明:
  1.需http://或者https://格式的完整路径
  例:https://您的域名/notify_url.php  ,支持ip地址方式。(推荐使用域名
  2.不能加?id=123这类自定义参数
  错误示例:https://您的域名/notify_url.php?id=123&test=abc
  3.必须外网可以正常访问,这个不难理解,在您的异步地址没有代码逻辑的情况下,直接访问应该是一个空白页面并且
  http状态是200(不支持http200以外的状态
  4.不能有重定向 如:http302
  5.使用POST方式接收,请确保服务器路由已经开放POST通知

错误原因:
  1.异步地址无法公网访问
  2.异步地址代码传值错误
  3.其实已经收到(其实是验签失败返回为空),但是没有做日志记录或者没有记录到通知。


建议:大家优先使用云排查自查 https://openclub.alipay.com/read.php?tid=1132&fid=25

自查流程:
  1.直接访问自己配置的notify_url中的值
    检查notify_url访问状态(不支持除200以外的状态) 选择和服务器不同域的一台电脑,在chrome浏览器右键「检           查」- >地址栏输入notify_url地址->查看Network中的Status是否是200
      

    如果是http 0 请参考:https://openclub.alipay.com/read.php?tid=516&fid=25
    参考帖子:https://openclub.alipay.com/read.php?tid=675&fid=2

 2.检查自己notify_url传值.以app支付为例,
    java传值:
    
public AlipayTradeAppPayResponse pay1() throws AlipayApiException{
    //正式环境使用
    //AlipayClient client = new DefaultAlipayClient(Config.serverUrl, Config.appId, Config.privateKey, Config.format, Config.charset, Config.alipayPulicKey, Config.signType);
    //沙箱环境使用
    AlipayClient client = new DefaultAlipayClient(Config.serverUrlDev, Config.appIdDev, Config.privateKeyDev, Config.format, Config.charset, Config.alipayPulicKeyDev, Config.signType);
     
    AlipayTradeAppPayRequest request = new AlipayTradeAppPayRequest();
    //异步地址传值方式
    request.setNotifyUrl("https://www.alipay.com");
    request.setBizContent("{" +
        "\"out_trade_no\":\"4467496464\"," +
        "\"subject\":\"APP服务的请求测试\"," +
        "\"total_amount\":\"0.01\"," +
        "\"product_code\":\"QUICK_MSECURITY_PAY\"}");
    AlipayTradeAppPayResponse response = client.sdkExecute(request);
    System.out.println(response.getBody());
    return  response;
}

 php传值:
  
<?php
/**
 * APP支付 RSA2签名方法
 */
require_once 'AopSdk.php';
$aop = new AopClient ();
$aop->gatewayUrl = 'https://openapi.alipay.com/gateway.do';
$aop->appId = '2017071907813415';
$aop->rsaPrivateKey = '';
$aop->alipayrsaPublicKey='';
$aop->apiVersion = '1.0';
$aop->postCharset='utf-8';
$aop->format='json';
$aop->signType = 'RSA2';
$date=date("YmdHis");
$arr=range(1000,9999);
shuffle($arr);
$request = new AlipayTradeAppPayRequest();
//异步地址传值方式
$request->setNotifyUrl("填写异步地址的值");
$request->setBizContent("{\"out_trade_no\":\"".$date.$arr[0]."\",\"total_amount\":0.01,\"product_code\":\"QUICK_MSECURITY_PAY\",\"subject\":\"app测试\"}");
$result = $aop->sdkExecute($request);
print_r(htmlspecialchars($result));
?>
 错误传值方式(部分同学错误认为是填写在应用下面授权回调地址中)    



  
  3.其实已经收到误以为没有收到通知请参考验签失败帖子检查


 4.如果还是没有解决你的问题提问请按照下方正确格式提问(信息不完整不回复)

正确提问方式:使用环境(沙箱还是正式环境)+appid+接口名称(中文+英文)+异步地址(notify_url的值)+收不到异步通知的交易号+订单号


如果有什么疑问欢迎帖子下方追问,如果解决了你的问题欢迎评论点赞支持
rmtest001 | 2017-09-14 22:17:59
AndroidDemo_2.0(SDK_15.4.1).zip中的android demo源码中没有能设置notify_url的地方,没找到在哪里??
我是个导演 | 2017-09-15 09:17:12
rmtest001:AndroidDemo_2.0(SDK_15.4.1).zip中的android demo源码中没有能设置notify_url的地方,没找到在哪里??回到原帖
可以在OrderInfoUtil2_0.java页面添加这个异步通知的参数:
/**
 * 构造支付订单参数列表
 * @param pid
 * @param app_id
 * @param target_id
 * @return
 */
public static Map<String, String> buildOrderParamMap(String app_id, boolean rsa2) {
    Map<String, String> keyValues = new HashMap<String, String>();
 
    keyValues.put("app_id", app_id);
 
    keyValues.put("biz_content", "{\"timeout_express\":\"30m\",\"product_code\":\"QUICK_MSECURITY_PAY\",\"total_amount\":\"0.01\",\"subject\":\"1\",\"body\":\"我是测试数据\",\"out_trade_no\":\"" + getOutTradeNo() +  "\"}");
     
    keyValues.put("charset", "utf-8");
 
    keyValues.put("method", "alipay.trade.app.pay");
 
    keyValues.put("sign_type", rsa2 ? "RSA2" : "RSA");
 
    keyValues.put("timestamp", "2016-07-29 16:55:53");
 
    keyValues.put("version", "1.0");
    //可以在这个位置添加异步地址
    keyValues.put("notify_url", "https://www.alipay.com");
    return keyValues;
}
我是个导演 | 2017-10-23 16:39:10
海不介意天的蓝:使用环境:正式环境
接口名称(中文+英文)alipay.trade.wap.pay  手机网站支付
异步地址(notify_url的值)http://h183d75447.51mypc.cn/pay/notify/alipay/
收不到异步...
回到原帖
您的账号应该是签约了不可退款,所以通知直接是TRADE_FINISHED 不触发通知,建议您确认一下是否是不需要通知,如果需要建议咨询我们商户客服,确认签约状态是否不可退款 商户客服地址,走第三步:https://openclub.alipay.com/read.php?tid=276&fid=25以商户客服回复为准
海不介意天的蓝 | 2017-10-23 17:48:51
我是个导演:您的账号应该是签约了不可退款,所以通知直接是TRADE_FINISHED 不触发通知,建议您确认一下是否是不需要通知,如果需要建议咨询我们商户客服,确认签约状态是否不可退款 商户客服地址,走第三步:https://openclub.alip...回到原帖
和客服确认了。已经开通了手机网站支付的功能,并且没有不能付款的这种选项。直接就开通了。
而且我们这个号的话APP和WEB都是可以接受回掉。只有H5不行。

附上截图
nappinglady | 2017-10-24 09:19:58
你好,使用环境:正式环境
接口名称 alipay.trade.precreate (统一收单线下交易预创建)
异步地址(notify_url的值) http://116.255.235.136:8082/Notify/NotifyAlipay
我们的订单号 3680E32C86526A44B450AA86FC7DE560
无法收到异步通知
nappinglady | 2017-10-24 09:23:22
使用环境:正式环境
接口名称alipay.trade.precreate(统一收单线下交易预创建)
异步地址(notify_url的值)http://116.255.235.136:8082/Notify/NotifyAlipay
我们的订单号 3680E32C86526A44B450AA86FC7DE560,
客户支付之后无法收到异步通知
我是个导演 | 2017-10-24 15:10:54
nappinglady:使用环境:正式环境
接口名称alipay.trade.precreate(统一收单线下交易预创建)
异步地址(notify_url的值)http://116.255.235.136:8082/Notify/NotifyAlipay
我们的订...
回到原帖
收不到异步通知建议按照这个这个自查,如果还是有问题按照这个帖子的格式提供信息,方便查询
乐充 | 2017-10-29 16:26:36
正式环境
alipay.trade.create
https://backend-dev.lets-charge.com/api/v1/payment/recharge-callback
2017102921001004840280921896
颠覆白的黑 | 2017-10-29 17:14:29
乐充:正式环境
alipay.trade.create
https://backend-dev.lets-charge.com/api/v1/payment/recharge-callback
2017102921001004840280921...
回到原帖
这边查到你该笔交易
耗时: 17ms, 地址: https://backend-dev.lets-charge.com/api/v1/payment/recharge-callback, http状态码: 0, 返回: null.
http状态码有问题,不是正常的200,请检查自己的服务器配置
张鹏翼 | 2017-10-31 11:19:55



使用环境:正式环境
接口名称(中文+英文)alipay.trade.app.pay  手机app支付
异步地址(notify_url的值)http://api.test.4000669696.com/alipay/notify_pay
收不到异步通知的交易号 2017103121001004020235553851
商户订单号  d7a18a7abde411e7acdc00163e106fb7  

这边app已经成功付款,但是服务器收不到异步通知,我们采用的还是老版本的接口,是不是如果商家服务器使用的老版本的接口,android 也应该使用老版本的 SDK呢?可是现在已经付款成功了。异步收不到!
我是个导演 | 2017-10-31 11:31:18
张鹏翼:使用环境:正式环境
接口名称(中文+英文)alipay.trade.app.pay  手机app支付
异步地址(notify_url的值)http://api.test.4000669696.com/alipay/notify_pay
收不...
回到原帖
你的这个问题应该是你的密钥没有上传登录这个链接把你的商户公钥上传到这个位置:https://openhome.alipay.com/platform/keyManage.htm?keyType=partner  
你使用pid亲戚一定要上传到mapi网关产品密钥 中


有疑问再追问
张鹏翼 | 2017-10-31 11:35:24
我是个导演:你的这个问题应该是你的密钥没有上传登录这个链接把你的商户公钥上传到这个位置:https://openhome.alipay.com/platform/keyManage.htm?keyType=partner  
你使用pid亲戚一定要上...
回到原帖
已经上传了,还确定了好几次呢,不上传不就是支付都不能成功的嘛!还是能支付成功不能回调成功
张鹏翼 | 2017-10-31 11:40:54
我是个导演:你的这个问题应该是你的密钥没有上传登录这个链接把你的商户公钥上传到这个位置:https://openhome.alipay.com/platform/keyManage.htm?keyType=partner  
你使用pid亲戚一定要上...
回到原帖
太感谢了,终于成功了!
我的回复
回复数
  301
阅读数
  28320

返回顶部