作為服務商,需要協助沒有開發能力的商家接入業務產品和開發應用的載體,經常要用到支付寶的 介面代簽約 功能,然而在使用過程中若是遇到失敗的情況,就會讓本來是為了提升效率的功能反而拖慢了專案進度,今天我就來簡單盤一盤介面代簽約失敗問題的排查思路,幫助同學快速定位問題原因,效率 up 工資 up !
一、介面代簽約基礎介紹
在排查問題前,要先了解介面代簽約的工作原理。簡單來講,若商家沒有開通產品,需要服務商用介面代簽約功能提交開通申請,商家確認並授權,確認後即可完成開通和授權操作。具體流程如下:
- 服務商呼叫 alipay.open.agent.signstatus.query(查詢商戶某個產品的簽約狀態介面)查詢商家的開通狀態。
- 若需協助商家開通,可呼叫代開發核心接入 API 中的開通介面,傳入商家資料,進行開通申請。
- 若申請透過,商家進行確認開通及授權(即商家開通開放產品的同時,將商家應用的開發許可權授權給服務商)。
- 商家確認後,即完成開通和授權操作。
二、排查方向及問題解決方法
1. 確認商家產品開通狀態
在代簽約前,最好先查詢一下產品開通狀態,避免重複開通。作為服務商,一般可以透過 登入開放平臺 或 呼叫介面 查詢開通狀態。
- 登入開放平臺:登入三方應用詳情 > 商家授權 > 選擇對應商家資訊 > 點選 授權詳情,在 開通狀態 列可檢視該商家的產品開通情況
- 呼叫介面:服務商代呼叫 alipay.open.agent.signstatus.query(查詢商戶某個產品的簽約狀態介面),可查詢商家和各產品之間的開通狀態。 示例程式碼:
AlipayClient alipayClient = new DefaultAlipayClient("https://openapi.alipay.com/gateway.do","app_id","your private_key","json","GBK","alipay_public_key","RSA2"); AlipayOpenAgentSignstatusQueryRequest request = new AlipayOpenAgentSignstatusQueryRequest(); request.setBizContent("{" + " \"pid\":\"支付寶賬號:2088123451234543或手機號:13811111111或郵箱:123@xxx.com\"," + " \"product_codes\":[" + " \"I1011000100000000001\"" + " ]" + "}"); AlipayOpenAgentSignstatusQueryResponse response = alipayClient.execute(request); if(response.isSuccess()){ System.out.println("呼叫成功"); } else { System.out.println("呼叫失敗"); }
2. 確認開通申請資訊是否缺失
若需要協助商家開通,要呼叫代開發核心接入 API 中的開通介面傳入商家資料,進行開通申請,但是每個產品需要的商家資料可能會有不同,這裡推薦先用 介面代簽約 工具直接查詢,它可以用 batch_no、或 trace_id 排查介面代簽約失敗原因,查詢最近 7 天內線上使用者呼叫代簽約介面失敗的相關報錯,自動診斷並給出具體原因和解決方案,比如之前有一次就直接幫我查出了營業執照號沒填的問題,再也不用去對應文件慢慢找,省了很多力。
3. 確認申請類目是否是特殊資質
選擇類目時要注意,部分類目屬於特殊資質,比如校園團餐,需要先確保商家有相關證明,並在申請時傳入,否則也會導致代簽約失敗,具體要求可檢視商家簽約所需資訊資料文件。
4. 三方應用代商家簽約等呼叫介面時報:isv 許可權不足,缺少“第三方接入核心API”
是由於三方應用沒有新增 第三方接入核心 API 功能包導致,需要按照提示在三方應用開放平臺後臺新增功能包後重新呼叫介面。要登入支付寶開放平臺,在應用的 功能管理 中新增功能包 第三方接入核心 API。
以上就是我關於代簽約失敗相關的排查思路,希望能給大家帶來幫助,也歡迎大家在評論區交流溝通~