讓天底下沒有難接的支付|支付寶網銀直連&轉賬到銀行卡對接故事續集 支付對接不是一個單純技術問題 網銀直連轉賬到銀行卡開通方式揭曉

話說接支付寶的故事已經有幾個回合了,30年河東,30年河西,之前的支付寶已經不再是之前的支付寶啦,從技術上來講,變得越來越古怪了。接口都被當成產品,各種需要簽約啦。今天的重點在於支付寶網銀直連、轉賬到銀行卡兩個接口,故事的來來回回已經超越了技術層面,儼然成了一場非技術層面拉鋸。讀完本故事,您應該懂得怎麼開通支付寶網銀直連、轉賬到支付寶,故事寫於2019年9月29日下午16點46分。如果支付寶變來變去,故事也可能成爲歷史傳奇,不再有效。

一、捉摸不透的官方客服

向官方客服進行諮詢的話,先是機器人伺候,再到人工客服,統一都是說網銀直連下線了、轉賬到銀行卡下線了,無在線簽約入口。蹊蹺的是,在線客服提供可至電xxxx諮詢,聯繫業務經理云云。

二、線下業務經理的快速通道

原來被當成無解的支付寶網銀直連&轉賬到銀行卡,竟然在支付寶業務經理BD的線下郵件開通方式下,可以開通。這已經不再是技術領域的問題了。看接口路徑中的pre-open,文檔頂部標明瞭定向開放文檔。這些接口不簽約,統統是不生效了,參考文檔開發,也調不通。能走線下就不要去走線上,感覺線下就像一個綠色通道,無所不能。

2.1 支付寶網銀直連

網銀直連的文檔看起比較老舊,像是之前的支付寶對接文檔。demo也不難,不過,不簽約的話,照着demo做,也無法直接跳到網銀。官方提供的demo是java jsp版本,有點小小的不適應。

依據官方demo,轉了一份Spring MCV版本

  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
@RequestMapping(value = "api")  public String api(Model model, HttpServletRequest request) throws Exception {    // 支付類型    String payment_type = "1";    // 必填,不能修改    // 服務器異步通知頁面路徑    String notify_url = "https://i.zuime.com/create_direct_pay_by_user-JAVA-UTF-8/notify_url.jsp";    // 需http://格式的完整路徑,不能加?id=123這類自定義參數
    // 頁面跳轉同步通知頁面路徑    String return_url = "https://i.zuime.com/create_direct_pay_by_user-JAVA-UTF-8/return_url.jsp";    // 需http://格式的完整路徑,不能加?id=123這類自定義參數,不能寫成http://localhost/
    // 商戶訂單號    String out_trade_no = new String(request.getParameter("WIDout_trade_no").getBytes("ISO-8859-1"), "UTF-8");    // 商戶網站訂單系統中唯一訂單號,必填
    // 訂單名稱    String subject = new String(request.getParameter("WIDsubject").getBytes("ISO-8859-1"), "UTF-8");    // 必填
    // 付款金額    String total_fee = new String(request.getParameter("WIDtotal_fee").getBytes("ISO-8859-1"), "UTF-8");    // 必填
    // 訂單描述
    String body = new String(request.getParameter("WIDbody").getBytes("ISO-8859-1"), "UTF-8");    // 默認支付方式    String paymethod = "bankPay";    // 必填    // 默認網銀    String defaultbank = new String(request.getParameter("WIDdefaultbank").getBytes("ISO-8859-1"), "UTF-8");    // 必填,銀行簡碼請參考接口技術文檔
    // 商品展示地址    String show_url = new String(request.getParameter("WIDshow_url").getBytes("ISO-8859-1"), "UTF-8");    // 需以http://開頭的完整路徑,例如:http://www.商戶網址.com/myorder.html
    // 防釣魚時間戳    String anti_phishing_key = "";    // 若要使用請調用類文件submit中的query_timestamp函數
    // 客戶端的IP地址    String exter_invoke_ip = "";    // 非局域網的外網IP地址,如:221.0.0.1
    //////////////////////////////////////////////////////////////////////////////////
    // 把請求參數打包成數組    Map<String, String> sParaTemp = new HashMap<String, String>();    sParaTemp.put("service", "create_direct_pay_by_user");    sParaTemp.put("partner", AlipayConfig.partner);    sParaTemp.put("seller_email", AlipayConfig.seller_email);    sParaTemp.put("_input_charset", AlipayConfig.input_charset);    sParaTemp.put("payment_type", payment_type);    sParaTemp.put("notify_url", notify_url);    sParaTemp.put("return_url", return_url);    sParaTemp.put("out_trade_no", out_trade_no);    sParaTemp.put("subject", subject);    sParaTemp.put("total_fee", total_fee);    sParaTemp.put("body", body);    sParaTemp.put("paymethod", paymethod);    sParaTemp.put("defaultbank", defaultbank);    sParaTemp.put("show_url", show_url);    sParaTemp.put("anti_phishing_key", anti_phishing_key);    sParaTemp.put("exter_invoke_ip", exter_invoke_ip);
    // 建立請求    String sHtmlText = AlipaySubmit.buildRequest(sParaTemp, "get", "確認");    model.addAttribute("page", sHtmlText);    return "pay/alipay/mapi/api";

重點參數在paymethod、defaultbank。

  •  
String paymethod = "bankPay";//網銀直連
  •  
String defaultbank= "CMB";//銀行簡碼,參考支付寶對接文檔詳細說明

PS:敲黑板畫重點,沒有簽約的話,是無法跳過去的,這些參數都不會生效,依舊會跳到支付寶的支付界面,而不是網銀。

2.2 轉賬到銀行卡

  •  
  •  
支付寶轉賬到銀行卡https://docs.alipay.com/pre-open/api_pre/alipay.fund.trans.tobank.transfer

發起轉賬到銀行卡後,支付寶會返回很詳細的錯誤信息。

錯誤碼 錯誤描述 解決方案
INVALID_PARAMETER 參數有誤。 請根據入參說明檢查請求參數合法性。
SYSTEM_ERROR 系統繁忙 可能發生了網絡或者系統異常,導致無法判定準確的轉賬結果。此時,商戶不能直接當做轉賬成功或者失敗處理,可以考慮採用相同的out_biz_no重發請求,或者通過調用“(alipay.fund.trans.order.query)”來查詢該筆轉賬訂單的最終狀態。
EXCEED_LIMIT_SM_AMOUNT 單筆額度超限 請根據接入文檔檢查amount字段
EXCEED_LIMIT_DM_AMOUNT 日累計額度超限 請根據接入文檔說明檢查本日請求總金額+本次請求金額是否超限。
EXCEED_LIMIT_MM_AMOUNT 月累計金額超限 請根據接入文檔說明檢查本月請求總金額+本次請求金額是否超限。
PAYCARD_UNABLE_PAYMENT 付款賬戶餘額支付功能不可用 請付款賬戶登錄支付寶賬戶開啓餘額支付功能。
PAYER_STATUS_ERROR 付款賬號狀態異常 請檢查付款方是否進行了自助掛失,如果無,請聯繫支付寶客服檢查用戶狀態是否正常。
PAYER_CERTIFY_CHECK_FAIL 付款方人行認證受限 付款方請升級認證等級。
PAYER_STATUS_ERROR 付款方用戶狀態不正常 請檢查付款方是否進行了自助掛失,如果無,請聯繫支付寶客服檢查用戶狀態是否正常。
PAYER_BALANCE_NOT_ENOUGH 付款方餘額不足 支付時間點付款方餘額不足,請向付款賬戶餘額充值後再原請求重試。
PAYER_USER_INFO_ERROR 付款用戶姓名或其它信息不一致 檢查付款用戶姓名payer_real_name與真實姓名一致性。
PAYMENT_INFO_INCONSISTENCY 兩次請求商戶單號一樣,但是參數不一致 如果想重試前一次的請求,請用原參數重試,如果重新發送,請更換單號。
CARD_BIN_ERROR 收款人銀行賬號不正確 請確認收款人銀行賬號正確性,要求爲借記卡卡號。
PAYEE_CARD_INFO_ERROR 收款方卡信息錯誤 請聯繫收款方確認卡號與姓名一致性。
INST_PAY_UNABLE 資金流出能力不具備 可能由於銀行渠道在維護或無T0渠道,與聯繫支付寶客服確認。
PAYER_ACC_OCUPIED 付款人登錄賬號存在多個重複賬戶,無法確認唯一 如果未傳輸payer_account_name,請傳入payer_account_name; 如果傳入了payer_account_name,則是由於登錄賬號對應的多個重複賬戶的真實姓名一致,請更換登錄號。
MEMO_REQUIRED_IN_TRANSFER_ERROR 根據監管部門的要求,單筆轉賬金額達到50000元時,需要填寫付款理由 請填寫remark或memo字段。
PERMIT_CHECK_PERM_IDENTITY_THEFT 您的賬戶存在身份冒用風險,請進行身份覈實解除限制 您的賬戶存在身份冒用風險,請進行身份覈實解除限制

依據官方提示,狀態可以通過alipay.fund.trans.order.query接口進行查詢覈實。而官方的接口描述,又給出了神奇的描述。

https://docs.open.alipay.com/api_28/alipay.fund.trans.order.query

  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
 * 轉賬單據狀態。  SUCCESS:成功(配合"單筆轉賬到銀行賬戶接口"產品使用時, 同一筆單據多次查詢有可能從成功變成退票狀態);  FAIL:失敗(具體失敗原因請參見error_code以及fail_reason返回值);  INIT:等待處理;  DEALING:處理中;  REFUND:退票(僅配合"單筆轉賬到銀行賬戶接口"產品使用時會涉及, 具體退票原因請參見fail_reason返回值);  UNKNOWN:狀態未知。   */  @ApiField("status")  private String status;

經典問題

  •  
  •  
  •  
  •  
SUCCESS:成功(配合"單筆轉賬到銀行賬戶接口"產品使用時, 同一筆單據多次查詢有可能從成功變成退票狀態);請告訴我,什麼時候才能一個轉賬的狀態能最終定下來不能說多次查詢,又從成功變成了退票請告之你們的轉賬到銀行卡狀態,在什麼時候才能明確的認定爲成功狀態,而不是有可能從成功狀態變成退票狀態

感覺接口死循環了。發起轉賬狀態要查詢,查詢狀態又可能從成功變成退款,很是尷尬的局面。支付寶客服一直未給一個明確的答覆,一個下午都在等答覆。

寫在收尾處

對接螞蟻金服支付寶的網銀直連、轉賬到銀行卡,不是一個技術問題,而商務簽約問題,不簽約,不給文檔,不給文檔沒有下文。對於技術人來講,收藏一份網銀直連、轉賬到銀行卡文檔,是很有必要的。估計簽名還沒有簽約,功能都可以提前開發好了。

 

讓天底下沒有難接的支付

 

關注公衆號【Yuema約嗎】回覆alipay,獲取支付網銀直連、轉賬到銀行卡技術文檔

ps:不簽約接口不生效,可以提前開發

首發地址:

http://www.jishudao.com/2019/09/29/alipay_bankpay_transfer2bankcard/

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章