我是使用支付寶sdk的demo直接開發,期間產品上線之後一直有支付失敗但是記錄日誌裏有支付成功的記錄,之後也和支付寶支付人員溝通過,通過查詢支付寶接口返回的信息發現是支付關閉。之後很長時間在復現這個問題。
先上代碼
/// <summary>
/// 提交支付請求
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
public void Alipay_RSA_Submit()
{
AlipayTradePayContentBuilder builder = BuildPayContent();
string out_trade_no = builder.out_trade_no;
Com.Alipay.Business.AlipayF2FPayResult payResult = serviceClient.tradePay(builder);
switch (payResult.Status)
{
case ResultEnum.SUCCESS:
DoSuccessProcess(payResult);
break;
case ResultEnum.FAILED:
DoFailedProcess(payResult);
break;
case ResultEnum.UNKNOWN:
result = "網絡異常,請檢查網絡配置後,更換外部訂單號重試";
break;
}
//Response.Redirect("result.aspx?Text=" + result);
}
/// <summary>
/// 請添加支付失敗後的處理
/// </summary>
private void DoFailedProcess(AlipayF2FPayResult payResult)
{
//請添加支付失敗後的處理
System.Console.WriteLine("支付失敗");
result = payResult.response.Body;
}
在支付失敗之後的處理中payResult.response.Body仍會返回Success,so到這一步找到坑。大家只需要在這裏處理失敗的代碼重寫就OK了