CashFlow API
環境位址
正式:https://www.paynow.com.tw/service/PayNowAPI_JS.aspx
測試:https://test.paynow.com.tw/service/PayNowAPI_JS.aspx
編碼格式:所有參數傳遞時,請以URL Encode 編碼,所有網頁字集為UTF-8
請款服務
操作流程說明
商家拋送OP=GP及JStr取得PassCode及CheckNum,JStr的內容為json格式並以aes256加密做urlencoden送出
PayNow以AES256解密取得JStr的內容,回吐PassCode及CheckNum,組成Json格式後以aes256加密並做urlencode後回傳
商家接收回應字串做urldecode後以AES256解密,解析Json格式取得CheckNum並驗證PassCode
商家以步驟3取得的CheckNum呼叫OP=GK的API,JStr的內容為json格式並以AES256加密做urlencoden送出
PayNow以AES256解密取得JStr的內容,回吐PassCode、EncryptionKey及EncryptionIV;組成Json格式後以AES256加密並做urlencode後回傳
商家呼叫OP=CP_gp 的API,以文件描述需要的參數組成JsonString後,利用步驟5取得的EncryptionKey及EncryptionIV將JsonString以AES256加密後,拆分成JStr1及JStr2並做urlencode,拋送文件描述的參數共6個
PayNow回應請款結果
請款流程圖
參數說明
傳遞方式:Http POST method UrlEncode
Request
參數 | 名稱 | 型態 | 長度 | 必須 | 備註 |
---|---|---|---|---|---|
OP | 服務代號 | string | Y | OP = CP_gp | |
JStr1/JStr2 | Json字串 | string | Y | 請將下列參數組成Json格式字串 UserID:商家帳號 (統編/身分證) Buysafeno:PayNow訂單編號(最小19碼;多筆訂單請用逗號(,)分隔) PassCode:交易驗證碼(請以下列組合成字串後使用SHA-1雜湊函數加密並轉大寫 2822 + UserID + 商家交易密碼 + 9955) 將上列參數組成Json字串後,以檢核碼串接取得的Key及IV做AES256加密後,將加密後字串對分拆解成JStr1及JStr2兩個參數,再做UrlEncode上傳 | |
mem_cid | 服務代號 | string | 8-10 | Y | |
TimeStr | 時間戳 | string | 10 | Y | 加密傳送字串時使用的TimeStr |
CheckNum | 時間戳 | string | 10 | Y | 加密傳送字串取得隨機檢查碼時回傳的CheckNum |
Response
參數 | 名稱 | 型態 | 長度 | 必須 | 備註 |
---|---|---|---|---|---|
純字串 | 回應字串 | string | Y | 成功:S_成功資訊 (urlencode)失敗: F_錯誤訊息 (urlencode) |
Code Example
string JS1, JS2, JSS, Jstr, paypasscode;
OBJ_SelPayment ObjSel = new OBJ_SelPayment();
ObjSel.UserID = "28229955";
ObjSel.Buysafeno = "8000002211114594530";
paypasscode = "2822" + ObjSel.UserID + 商家交易密碼 + "9955";
paypasscode = FormsAuthentication.HashPasswordForStoringInConfigFile(paypasscode, "sha1");
ObjSel.PassCode = paypasscode;
OP = "CP_gp";
JSS = JsonConvert.SerializeObject(ObjSel);
Jstr = Mod_ChkObject.AES256_Encrypt(JSS, ObjOutPutKey.EncryptionKey, ObjOutPutKey.EncryptionIV);
JS1 = Jstr.Substring(0, Conversion.Int(Jstr.Length / 2));
JS2 = Jstr.Substring(Conversion.Int(Jstr.Length / 2), Jstr.Length - Conversion.Int(Jstr.Length / 2));
returnStr = SubOP(OP, "", JS1, JS2, ObjSel.UserID, timestr, ObjOutPutGetPass.CheckNum, posturl);
會員可請款資料FTP
檔案格式
- 檔案格式: xml
- 檔名格式: YYYYMMDD_Sno(流水號).xml (Sno = 流水號 01,02..依此類推)\
- UTF-8 encoding
- 傳送時間: 每天ㄧ次 01:00 傳至PayNowFTP
- PayNow FTP 位址: FTP://61.216.8.41/
- 傳送者: PayNow
- 接收者: 業者
參數 | 名稱 | 型態 | 長度 | 必須 | 備註 |
---|---|---|---|---|---|
DOCDATE | 文件日期 | string | 8 | Y | YYYYMMDD |
TOTALRECORDS | 此文件總筆數 | string | 8 | Y | |
WEBNO | 身份證/統編 | string | 10 | Y | 英文大寫 |
BUYSAFENO | 欲請款訂單編號 | string | 19 | Y | YYYYMMDD |
CAPTUREPRICE | 實撥金額 | string | Y | YYYYMMDD |
會員可請款資料FTP(continued)
範例:
<PAYDOC>
<DOCHEAD>
<DOCDATE>20090101</DOCDATE>
<TOTALRECORDS>2</TOTALRECORDS>
</DOCHEAD >
<CONTENT>
<WEBNO>502008965</WEBNO>
<BUYSAFENO>0602421630000078</BUYSAFENO>
<CAPTUREPRICE>49</CAPTUREPRICE>
</CONTENT>
<CONTENT>
<WEBNO>502008963</WEBNO >
<BUYSAFENO>0602241030000054</BUYSAFENO>
<CAPTUREPRICE>49</CAPTUREPRICE>
</CONTENT>
</PAYDOC>
退款服務
操作流程說明
退款 API的使用流程
1.商家拋送OP=GP及JStr取得PassCode及CheckNum; JStr的內容為json格式並以AES256加密做urlencoden送出
2.PayNow以AES256解密取得JStr的內容,回吐PassCode及CheckNum;組成Json格式後以AES256加密並做urlencode後回傳
3.商家接收回應字串做urldecode後以AES256解密,解析Json格式取得CheckNum並驗證PassCode
4.商家以步驟3取得的CheckNum呼叫OP=GK的API,JStr的內容為Json格式並以AES256加密做urlencoden送出
5.PayNow以AES256解密取得JStr的內容,回吐PassCode、EncryptionKey及EncryptionIV;組成Json格式後以AES256加密並做urlencode後回傳
6.商家呼叫OP= R_gp 的API,以文件描述需要的參數組成JsonString後,利用步驟5取得的EncryptionKey及EncryptionIV將JsonString以AES256加密後,拆分成JStr1及JStr2並做urlencode,拋送文件描述的參數共6個
7.PayNow回應退款結果
退款流程圖
參數說明
傳遞方式:Http POST method UrlEncode
Request
參數 | 名稱 | 型態 | 長度 | 必須 | 備註 |
---|---|---|---|---|---|
OP | 服務代號 | string | Y | OP = CP_gp | |
JStr1/JStr2 | Json字串 | string | Y | 請參照JStr1/JStr2組成 | |
mem_cid | 服務代號 | string | 8-10 | Y | |
TimeStr | 時間戳 | string | 10 | Y | 加密傳送字串時使用的TimeStr |
CheckNum | 時間戳 | string | 10 | Y | 加密傳送字串取得隨機檢查碼時回傳的CheckNum |
JStr1/JStr2組成
※ 將下列參數組成Json字串後,以檢核碼串接取得的Key及IV做AES256加密後,將加密後字串對分拆解成JStr1及JStr2兩個參數,再做UrlEncode上傳
參數 | 名稱 | 型態 | 長度 | 必須 | 備註 |
---|---|---|---|---|---|
mem_type | 服務代號 | string | Y | 商家類型(數字 1.買家 2.賣家) | |
buysafeno | PayNow訂單編號 | string | Y | ||
mem_cid | 商家帳號 | string | Y | ||
passcode | 交易驗證碼 | string | Y | 請以下列組合成字串後使用SHA-1雜湊函數加密並轉大寫 2822 + UserID + 商家交易密碼 + 9955) | |
mem_bankaccno | 退款入帳帳號 | string | Y | ||
accountbankno | 退款入帳銀行代碼 | string | Y | ||
mem_bankaccount | 退款入帳銀行名稱 | string | Y | ||
refundvalue | 退款原因 | string | Y | ||
refundmode | 退款模式 | string | Y | ||
buyerid | 消費者帳號 | string | Y | 可保持空值(若與原始交易不同請帶入) | |
buyername | 消費者姓名 | string | Y | 可保持空值(若與原始交易不同請帶入) | |
buyeremail | 消費者Email | string | Y | 可保持空值(若與原始交易不同請帶入) | |
refundprice | 退款金額 | string | Y |
Response
參數 | 名稱 | 型態 | 長度 | 必須 | 備註 |
---|---|---|---|---|---|
純字串 | 回應字串 | string | Y | 成功:S_成功資訊 (urlencode)失敗: F_錯誤訊息 (urlencode) |
訂單代碼
訂單代碼 | 狀態描述 |
---|---|
R000 | 退款系統程式錯誤,請與系統商連絡 |
R001 | 申請人類別無填寫 |
R002 | 參數錯誤 (buysafeno) 訂單編號 |
R003 | 參數錯誤 (WebNo) 賣家會員帳號(公司統編或個人身分證) |
R004 | 參數錯誤 (id) 買家會員帳號 |
R005 | 參數錯誤 (refundvalue) 退貨原因 |
R006 | 參數錯誤 (refunddate) 退貨日期 |
R007 | 參數錯誤 (ECPlatform) EC廠商名稱 |
R008 | 參數錯誤 (IDKey) IDKey檢驗識別碼 |
R009 | 參數錯誤 (PassCode) 檢驗識別碼 |
R010 | 參數錯誤 (refundmode) 退貨型態 |
R011 | 今日交易不可當日退款 |
R012 | 此交易賣家與申請退貨賣家不符 |
R013 | 查無此交易 |
R014 | 參數錯誤 (mem_bankaccno) 銀行帳號 |
R015 | 參數錯誤 (accountbankno) 銀行代碼 |
R016 | 參數錯誤 (mem_bankaccount) 撥款銀行分行名稱 |
R017 | 由賣家取消信用卡交易,系統自動通知發卡行退還額度 |
R018 | 非成功交易不得退款 |
R019 | 此貨品已配送不得退款 |
R020 | 此交易超過保管天數不得退款 |
R021 | 此交易小於30元不得退款 |
R022 | 此交易買家與申請退貨買家不符 |
R023 | 此交易已請款不得退款 |
R024 | 參數錯誤 (idRegist) 消費者身分證字號錯誤 |
R025 | 退貨取消錯誤,請聯絡系統商 |
R026 | 此買家無可退貨交易 |
R027 | 交易已報送發卡行待回覆,目前不得退款 |
R028 | 只能是商家發動退款 |
R029 | 只能是確認退款狀態 |
R030 | 只能是信用卡交易 |
R031 | 退款金額錯誤 |
R032 | 此交易不支援部分退款 |
R033 | 今日請款金額(+30)須大於退款金額 |
R035 | 退款無法取消 |
R036 | 票券訂單已核銷,無法退款 |
R037 | 此為已撥款超過180天交易,退款作業完成須2-3個工作天;若於3個工作天後仍未顯示退款,請與PayNow聯繫 |
取消自動授權服務
操作流程
取消自動授權 API的使用流程
1.商家拋送OP=GP及JStr取得PassCode及CheckNum; JStr的內容為json格式並以AES256加密做urlencoden送出
2.PayNow以AES256解密取得JStr的內容,回吐PassCode及CheckNum;組成Json格式後以AES256加密並做urlencode後回傳
3.商家接收回應字串做urldecode後以AES256解密,解析json格式取得CheckNum並驗證PassCode
4.商家以步驟3取得的CheckNum呼叫OP=GK的API,JStr的內容為json格式並以AES256加密做urlencoden送出
5.PayNow以AES256解密取得JStr的內容,回吐PassCode、EncryptionKey及EncryptionIV;組成Json格式後以AES256加密並做urlencode後回傳
6.商家呼叫OP=CPA_gp的API,以文件描述需要的參數組成JsonString後,利用步驟5取得的EncryptionKey及EncryptionIV將JsonString以AES256加密後,拆分成JStr1及JStr2並做urlencode,拋送文件描述的參數共6個
7.PayNow回傳取消自動授權結果
取消自動授權流程圖
參數說明
傳遞方式:Http POST method UrlEncode
Request
參數 | 名稱 | 型態 | 長度 | 必須 | 備註 |
---|---|---|---|---|---|
OP | 服務代號 | string | Y | OP = CPA_gp | |
JStr1/JStr2 | Json字串 | string | Y | 請參照JStr1/JStr2組成 | |
mem_cid | 服務代號 | string | 8-10 | Y | |
TimeStr | 時間戳 | string | 10 | Y | 加密傳送字串時使用的TimeStr |
CheckNum | 時間戳 | string | 10 | Y | 加密傳送字串取得隨機檢查碼時回傳的CheckNum |
JStr1/JStr2組成
※ 將下列參數組成Json字串後,以檢核碼串接取得的Key及IV做AES256加密後,將加密後字串對分拆解成JStr1及JStr2兩個參數,再做UrlEncode上傳
參數 | 名稱 | 型態 | 長度 | 必須 | 備註 |
---|---|---|---|---|---|
mem_cid | 商家帳號 | string | Y | ||
passcode | 交易驗證碼 | string | Y | 請以下列組合成字串後使用SHA-1雜湊函數加密並轉大寫 (2822 + mem_cid + OrderNo + 商家交易密碼 + 9955) | |
OrderNO | 商家自訂編號 | string | Y |
Response
參數 | 名稱 | 型態 | 長度 | 必須 | 備註 |
---|---|---|---|---|---|
純字串 | 回應字串 | string | Y | 成功:S_成功資訊 (urlencode)失敗: F_錯誤訊息 (urlencode) |
交易狀態查詢
操作流程
交易狀態查詢 API 的使用流程
商家拋送OP = GP及JStr取得PassCode及CheckNum; JStr的內容為json格式並以aes256加密做urlencoden送出
paynow以aes256解密取得JStr的內容,回吐PassCode及CheckNum;組成Json格式後以aes256加密並做urlencode 後回傳
商家接收回應字串做urldecode後以aes256解密,解析json格式取得CheckNum並驗證PassCode
商家以步驟3取得的CheckNum呼叫OP = GK的API,JStr的內容為json格式並以aes256加密做 urlencoden 送出
paynow以aes256解密取得JStr的內容,回吐PassCode、EncryptionKey及EncryptionIV;組成Json格式後以aes256加密並做urlencode 後回傳
商家呼叫OP = PQS_gp的API,以文件描述需要的參數組成JsonString後,利用步驟5取得的EncryptionKey及EncryptionIV將JsonString以AES256加密後,拆分成JStr1及JStr2並做urlencode,拋送文件描述的參數共6個
paynow以商家帳號、TimeStr及CheckNum取得解密用的AES256密碼解密後,回傳查詢的交易狀態字串
交易狀態查詢流程圖
參數說明
傳遞方式:Http POST method UrlEncode
Request
參數 | 名稱 | 型態 | 長度 | 必須 | 備註 |
---|---|---|---|---|---|
OP | 服務代號 | string | Y | OP = PQS_gp | |
JStr1/JStr2 | Json字串 | string | Y | 請參照JStr1/JStr2組成 | |
mem_cid | 服務代號 | string | 8-10 | Y | |
TimeStr | 時間戳 | string | 10 | Y | 加密傳送字串時使用的TimeStr |
CheckNum | 時間戳 | string | 10 | Y | 加密傳送字串取得隨機檢查碼時回傳的CheckNum |
JStr1/JStr2組成
※ 將下列參數組成Json字串後,以檢核碼串接取得的Key及IV做AES256加密後,將加密後字串對分拆解成JStr1及JStr2兩個參數,再做UrlEncode上傳
參數 | 名稱 | 型態 | 長度 | 必須 | 備註 |
---|---|---|---|---|---|
mem_cid | 商家帳號 | string | Y | ||
passcode | 交易驗證碼 | string | Y | 請以下列組合成字串後使用SHA-1雜湊函數加密並轉大寫 (2822 + mem_cid + OrderNo + 商家交易密碼 + 9955) | |
OrderNO | 商家自訂編號 | string | Y |
Response
參數 | 名稱 | 型態 | 長度 | 必須 | 備註 |
---|---|---|---|---|---|
純字串 | 回應字串 | string | Y | ※urlencode 回覆內容※ 交易成功:1開頭並以逗號分隔,逗號前為成功筆數,逗號後為19碼paynow訂單編號及(卡號後四碼或虛擬帳號)以底線分隔,是信用卡交易最後一組底線分隔為分期期數(若非分期交易則預設為 1) ex:1,50000011111469983213211_1 Or 1,5000001111146998321_95533725300857 交易失敗(有paynow訂單,授權失敗或者未完成):2開頭並以逗號分隔,逗號後為19碼paynow訂單編號及卡號後四碼或虛擬帳號及錯誤代碼(錯誤碼可能為空值),以底線分隔單號、卡號及錯誤代碼;單號底線卡號底線錯誤碼為一組,若有多組將以逗號分隔 ex:2,5000001111146998321_3211_05 Or 2,5000001111146998321_95533725300857 Or 2,5000001111146998321_95533725300857,500000111114699853195533725300866,500000111114699910295533725300871 退貨交易:3 開頭以逗號分隔退貨狀態(0:買家申請退貨 1:買賣家確認 2:銀行退款 3.賣家申請) ex:3,1 or 3,0 交易失敗(無交易訂單):回覆數字 4 ex:4 (定單待確認,使用者可能未送出授權,無 paynow 交易訂單,無法確認狀態) 其它(重覆交易):02 成功交易兩筆 03 成功交易三筆 以此類推;逗號前為成功筆數,逗號後為 19 碼 paynow 訂單編號及(卡號後四碼或虛擬帳號)以底線分隔,若是信用卡交易最後一組底線分隔為分期期數(若非分期交易則預設為 1),之後以逗號分隔每筆訂單 ex: 兩筆重覆交易 02,5000001111146998321_3211_1,5000001111146699323_4322_3 Or 702,5000001111146998321_95533725300857,5000001111146699323_4322_1 |
票券核銷碼查詢
說明
- 所有參數請以TripleDes加密,Key值固定為 28229955
參數說明
Request
傳遞方式:Http POST method UrlEncode
參數 | 名稱 | 型態 | 長度 | 必須 | 備註 |
---|---|---|---|---|---|
OP | 服務代號 | string | Y | OP = T_S | |
JStr | Json字串 | string | Y | 請參照JStr |
JStr組成
※ 將下列參數組成Json字串後,請將下列參數組成Json格式字串後TripleDes加密
參數 | 名稱 | 型態 | 長度 | 必須 | 備註 |
---|---|---|---|---|---|
buysafeno | PayNow 訂單編號 | string | Y | ||
passcode | 交易驗證碼 | string | Y | 請以下列組合成字串後使用SHA-1雜湊函數以商家密碼加密 (商家帳號+商家自訂編號+票券訂單金額+商家交易密碼) |
Response
參數 | 名稱 | 型態 | 長度 | 必須 | 備註 |
---|---|---|---|---|---|
buysafeno | PayNow 訂單編號 | string | 19 | Y | |
checkno | 票券核銷碼 | string | 7 | Y | |
passcode | 交易驗證碼 | string | Y | ||
errormessage | 錯誤描述 | string | Y | 錯誤時有值;F_錯誤資訊 |
票券核銷
說明
- 所有參數請以TripleDes加密,Key值固定為 28229955
參數說明
Request
傳遞方式:Http POST method UrlEncode
參數 | 名稱 | 型態 | 長度 | 必須 | 備註 |
---|---|---|---|---|---|
OP | 服務代號 | string | Y | OP = T_G | |
JStr | Json字串 | string | Y | 請參照JStr |
JStr組成
※ 將下列參數組成Json字串後,請將下列參數組成Json格式字串後TripleDes加密
參數 | 名稱 | 型態 | 長度 | 必須 | 備註 |
---|---|---|---|---|---|
buysafeno | PayNow 訂單編號 | string | Y | ||
checkno | 核銷碼 | string | Y | ||
passcode | 交易驗證碼 | string | Y | 請以下列組合成字串後使用SHA-1雜湊函數且以商家密碼加密 (商家帳號+商家自訂編號+票券訂單金額+商家交易密碼) |
Response
參數 | 名稱 | 型態 | 長度 | 必須 | 備註 |
---|---|---|---|---|---|
buysafeno | PayNow 訂單編號 | string | 19 | Y | |
checkno | 票券核銷碼 | string | 7 | Y | 成功取得時有值 |
passcode | 交易驗證碼 | string | Y | ||
errormessage | 錯誤描述 | string | Y | 錯誤時有值;F_錯誤資訊 |