1. 程式人生 > >支付寶小程式 支付時訂單處理失敗 報ALI38173

支付寶小程式 支付時訂單處理失敗 報ALI38173

我的後臺使用的PHP語言 用的官方SDK

$aop = new AopClient;
$aop->gatewayUrl = "https://openapi.alipay.com/gateway.do";
$aop->appId = "app_id";
$aop->rsaPrivateKey = '請填寫開發者私鑰去頭去尾去回車,一行字串';
$aop->format = "json";
$aop->charset = "UTF-8";
$aop->signType = "RSA2";
$aop->alipayrsaPublicKey = '請填寫支付寶公鑰,一行字串'
; //例項化具體API對應的request類,類名稱和介面名稱對應,當前呼叫介面名稱:alipay.trade.app.pay $request = new AlipayTradeAppPayRequest(); //SDK已經封裝掉了公共引數,這裡只需要傳入業務引數 $bizcontent = "{\"body\":\"我是測試資料\"," . "\"subject\": \"App支付測試\"," . "\"out_trade_no\": \"20170125test01\"," . "\"timeout_express\": \"30m\","
. "\"total_amount\": \"0.01\"," . "\"product_code\":\"QUICK_MSECURITY_PAY\"" . "}"; $request->setNotifyUrl("商戶外網可以訪問的非同步地址"); $request->setBizContent($bizcontent); //這裡和普通的介面呼叫不同,使用的是sdkExecute $response = $aop->sdkExecute($request); //htmlspecialchars是為了輸出到頁面時防止被瀏覽器將關鍵引數html轉義,實際列印到日誌以及http傳輸不會有這個問題
echo htmlspecialchars($response);//就是orderString 可以直接給客戶端請求,無需再做處理。

在支付時提示交易訂單處理失敗,請稍後再試。(ALI38173)
查詢了好久,最終的解決方案是

把htmlspecialchars($response);  去掉 ,直接輸出 $response給客戶端呼叫即可。

回撥判斷

$aop = new AopClient;
$aop->alipayrsaPublicKey = '請填寫支付寶公鑰,一行字串';
$flag = $aop->rsaCheckV1($_POST, NULL, "RSA2");
if($flag){
     if($_POST['trade_status' == "TRADE_SUCCESS"){
         // 修改訂單支付狀態
     }
}else{
    //驗證失敗 
}