常見接入問題及解答
1) 開發過程中,報157錯誤。
答:看下GATEID是不是寫了0001,如果是的話,把0001刪掉。
2) 網上支付后,點提交時,頁面提示:標准數據域不能為空怎么辦?
答:商戶自行檢查各條程序是否按照《NetPayClient 用戶手冊》里的內容來編寫。當出現該條提示時,表示編程人員沒有按照手冊里的程序來編寫,出現諸如拼寫錯誤、漏輸重要數據等低級錯誤。提醒商戶自行檢查以下重要參數:MerId, OrdId, TransAmt, CuryId, TransDate, TransType,及和這幾個重要參數有關的所有程序。
典型案例:
某公司編程人員在編寫時輸入:
……
<input type=hidden name=”cruyId” value=”156”>
……
而正確的應該為:
<input type=hidden name=”curyId” value=”156”>。由於一個單詞的錯誤,造成數據讀取時無法讀取原有的重要信息,即找不到curyId所包含的重要參數造成頁面提示標准數據域不能為空。
3) 商戶在測試過程中報“錯誤500”如何解決?
答:該錯誤為系統錯誤,屬於程序編寫錯誤,測試提交地址和正式提交地址搞混導致。
典型案例:
程序編寫時輸入:
……
<form action=https://payment.chinapay.com/pay/transget method=post>
……
由於是測試商戶,因此在action之后的內容應該為http://payment-test.chinapay.com/,即正確編寫輸入應該為:
<form action=http://payment-test.chinapay.com/pay/transget method=post>。
4) 商戶出現-109錯誤怎么辦?
答:-109錯誤表示加密不成功,可能由多種問題導致。當前遇到的主要原因是商戶在開發過程中使用的簽名方式不正確,導致無法簽名成功。在這里,需要提醒商戶注意接口版本號的問題,20070129的版本號和20040916的版本號在開發上是不同的,采用錯誤的簽名格式,會導致無法正確簽名,請商戶認真閱讀操作文檔第21頁~25頁的相關說明。
07版本需要通過對一串字符串簽名來實現。具體區別如下:
|
接口類型 |
20040916 |
20070129 |
發送交易 |
NetPayClient for Java |
signOrder |
sign |
NetPayClient for Win32 |
sign |
signData |
|
NetPayClient for C |
signOrder |
signData |
|
接收交易 |
NetPayClient for Java |
verifyTransResponse |
verifyTransResponse |
NetPayClient for Win32 |
check |
check |
|
NetPayClient for C |
verifyTransResponse |
verifyTransResponse |
遇到該錯誤時,可以用2.1中提到的方法,為用戶檢查發送代碼的情況。
5) 商戶遇到非法長度怎么辦?
答:非法長度是由於商戶在配置過程中各個參數長度未按實際要求配置導致。例如:訂單號非16位,交易日期非8位,交易金額非12位,Checkvalue未生成等等,均會導致非法長度。
發送參數具體說明如下:
參數說明:
String MerId 商戶號,長度為15個字節的數字串,由ChinaPay或清算銀行分配。
String OrdId 訂單號,長度為16個字節的數字串,由商戶系統生成,失敗的訂單號允許重復支付。
String TransAmt 交易金額,長度為12個字節的數字串,例如:數字串"000000001234"表示12.34元。
String CuryId 貨幣代碼, 長度為3個字節的數字串,目前只支持人民幣,取值為"156" 。
String TransDate 交易日期,長度為8個字節的數字串,表示格式為:YYYYMMDD。
String TransType 交易類型,長度為4個字節的數字串,取值范圍為:"0001"和"0002", 其中"0001"表示消費交易,"0002"表示退貨交易。
返回值:
String CheckValue[256] 即NetPayClient根據上述輸入參數生成的商戶數字簽名,長度為256字節的字符串。
6) ERRORCODE=110是怎么回事?
答:商戶頁面應答或后台應答地址過長導致。后台交易接收URL,長度不要超過80個字節,如超過80個字節,即會報該錯誤。建議商戶自行修改后台應答及頁面應答地址,控制在80字節內即可。
7) ASP開發過程中AXTIVEX控件不能創建對象或動態鏈接庫沒有注冊怎么辦?
答:1)讓商戶檢查XP系統的SCRIPT是否已經更新到最新版本。2)是否正確加載了CHINAPAY.DLL和CPNPC.DLL文件。同時,NETPAY.DLL必須放在SYSTEM32文件夾下。
8) 開發時報非法頁面是怎么回事?
答:提交頁面使用的應該是彈出窗口,如果商戶使用的頁面是框架接口,那在提交時頁面將無法正常跳轉,即會報非法頁面。建議商戶修改網頁結構,不要嘗試在頁面的框架內進行窗口跳轉,而使用彈出窗口方式。
9) 發送交易時,其他可能遇到的報錯信息。
簽名方法 |
|
-100 |
環境變量"NPCDIR"未設置 |
-101 |
戶密鑰文件不存在或無法打開 |
-102 |
密鑰文件格式錯誤 |
-103 |
秘鑰商戶號和用於簽名的商戶號不一致 |
-130 |
用於簽名的字符串長度為空 |
10) 測試時,支付成功,返回商戶頁面時驗證簽名錯誤?
答:首先,商戶各條程序是否按照《NetPayClient 用戶手冊》里的內容來編寫。同時要注意,在接收應答時,20070129的版本號簽名方式與20040916版本號的簽名方式是不一致的,需特別注意!
典型案例:
某公司在測試時輸入:
……
Chkvalue = request.getparameter(“chkvalue”)
……
因為發送的參數名是ChkValue,回來取得也是ChkValue,實際上應該是checkvalue,所以傳的空值,才驗證通不過的。即:
Chkvalue = request.getparameter(“checkvalue”)
這屬於沒有按照手冊里程序編寫所產生的驗證簽名錯誤。
11) 商戶出現公鑰初始化失敗怎么辦?
答:首先商戶是否是使用JAVA來進行接口開發的。如果是,請商戶查看程序中是否在應該填寫公鑰代碼處填寫了商戶號。
典型案例:
某商戶的編程人員在編寫程序時輸入:
……
Flag=key.buildKey(“808080002100999”,0”c:\winnt\\PgPubk.key”);
……
而正確的應該為:
……
Flag=key.buildKey(“999999999999999”,0”c:\winnt\\PgPubk.key”);
……
12) 商戶出現-118錯誤怎么辦?
答:一般不會出現該問題。主要原因是由於商戶驗簽時使用的密鑰不正確或者傳入驗簽的參數有問題導致,比如測試商戶使用生產商戶的密鑰或驗簽時,傳入的參數不正確,無法正確驗簽導致。
典型案例:
某商戶在測試系統的上線中,使用了生產商戶的公鑰,導致出現-118錯誤,替換測試商戶公鑰后,問題解決。
13) 后台應答收不到怎么辦?
答:請檢查接受應答代碼是否對於應答的接收條件評判有誤;在發送交易時,接收應答地址是否正確。
14) 后台應答接收后,如何告知ChinaPay?
答:WEBSEVER自動反饋,通常情況,成功接收將會自動返回200的代碼。所以商戶無需返回任何參數。僅當OrderStatus為1001時,該交易才為成功交易,其他交易均為失敗交易,商戶需要自行對此進行判定,加入自己的數據庫中。
15) loadlib(CHINAPAY.DLL)失敗怎么辦?
Netpay.dll必須放在system32文件夾里。