天天看點

收不到異步通知自查方案-支付寶接口常見錯誤系列

說明: 

  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.其實已經收到(其實是驗簽失敗傳回為空),但是沒有做日志記錄或者沒有記錄到通知。 

建議:大家優先使用雲排查自查 [url]https://openclub.alipay.com/read.php?tid=1132&fid=25[/url] 

自查流程: 

  1.直接通路自己配置的notify_url中的值 

    檢查notify_url通路狀态(不支援除200以外的狀态) 選擇和伺服器不同域的一台電腦,在chrome浏覽器右鍵「檢           查」- >位址欄輸入notify_url位址->檢視Network中的Status是否是200 

    如果是http 0 請參考:[url]https://openclub.alipay.com/read.php?tid=516&fid=25[/url] 

    參考文章:[url]https://openclub.alipay.com/read.php?tid=675&fid=2[/url] 

 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.其實已經收到誤以為沒有收到通知請參考驗簽失敗文章檢查 :[url]https://openclub.alipay.com/read.php?tid=1598&fid=46[/url]

 4.如果還是沒有解決你的問題提問請按照下方正确格式提問(資訊不完整不回複) 

正确提問方式:使用環境(沙箱還是正式環境)+appid+接口名稱(中文+英文)+異步位址(notify_url的值)+收不到異步通知的交易号+訂單号 

如果有什麼疑問歡迎文章下方追問,如果解決了你的問題歡迎評論點贊支援

繼續閱讀