Skip to main content

CashFlow API

環境位址

正式:https://www.paynow.com.tw/service/PayNowAPI_JS.aspx

測試:https://test.paynow.com.tw/service/PayNowAPI_JS.aspx

編碼格式:所有參數傳遞時,請以URL Encode 編碼,所有網頁字集為UTF-8


請款服務

操作流程說明

  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=CP_gp 的API,以文件描述需要的參數組成JsonString後,利用步驟5取得的EncryptionKey及EncryptionIV將JsonString以AES256加密後,拆分成JStr1及JStr2並做urlencode,拋送文件描述的參數共6個

  7. PayNow回應請款結果

請款流程圖

captureflow


參數說明

傳遞方式:Http POST method UrlEncode

Request

參數名稱型態長度必須備註
OP服務代號stringYOP = CP_gp
JStr1/JStr2Json字串stringY請將下列參數組成Json格式字串
UserID:商家帳號 (統編/身分證)
Buysafeno:PayNow訂單編號(最小19碼;多筆訂單請用逗號(,)分隔)
PassCode:交易驗證碼(請以下列組合成字串後使用SHA-1雜湊函數加密並轉大寫
2822 + UserID + 商家交易密碼 + 9955)
將上列參數組成Json字串後,以檢核碼串接取得的Key及IV做AES256加密後,將加密後字串對分拆解成JStr1及JStr2兩個參數,再做UrlEncode上傳
mem_cid服務代號string8-10Y
TimeStr時間戳string10Y加密傳送字串時使用的TimeStr
CheckNum時間戳string10Y加密傳送字串取得隨機檢查碼時回傳的CheckNum

Response

參數名稱型態長度必須備註
純字串回應字串stringY成功: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文件日期string8YYYYYMMDD
TOTALRECORDS此文件總筆數string8Y
WEBNO身份證/統編string10Y英文大寫
BUYSAFENO欲請款訂單編號string19YYYYYMMDD
CAPTUREPRICE實撥金額stringYYYYYMMDD

會員可請款資料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回應退款結果

退款流程圖

captureflow


參數說明

傳遞方式:Http POST method UrlEncode

Request

參數名稱型態長度必須備註
OP服務代號stringYOP = CP_gp
JStr1/JStr2Json字串stringY請參照JStr1/JStr2組成
mem_cid服務代號string8-10Y
TimeStr時間戳string10Y加密傳送字串時使用的TimeStr
CheckNum時間戳string10Y加密傳送字串取得隨機檢查碼時回傳的CheckNum

JStr1/JStr2組成

※ 將下列參數組成Json字串後,以檢核碼串接取得的Key及IV做AES256加密後,將加密後字串對分拆解成JStr1及JStr2兩個參數,再做UrlEncode上傳

參數名稱型態長度必須備註
mem_type服務代號stringY商家類型(數字 1.買家 2.賣家)
buysafenoPayNow訂單編號stringY
mem_cid商家帳號stringY
passcode交易驗證碼stringY請以下列組合成字串後使用SHA-1雜湊函數加密並轉大寫
2822 + UserID + 商家交易密碼 + 9955)
mem_bankaccno退款入帳帳號stringY
accountbankno退款入帳銀行代碼stringY
mem_bankaccount退款入帳銀行名稱stringY
refundvalue退款原因stringY
refundmode退款模式stringY
buyerid消費者帳號stringY可保持空值(若與原始交易不同請帶入)
buyername消費者姓名stringY可保持空值(若與原始交易不同請帶入)
buyeremail消費者EmailstringY可保持空值(若與原始交易不同請帶入)
refundprice退款金額stringY

Response

參數名稱型態長度必須備註
純字串回應字串stringY成功: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回傳取消自動授權結果

取消自動授權流程圖

captureflow


參數說明

傳遞方式:Http POST method UrlEncode

Request

參數名稱型態長度必須備註
OP服務代號stringYOP = CPA_gp
JStr1/JStr2Json字串stringY請參照JStr1/JStr2組成
mem_cid服務代號string8-10Y
TimeStr時間戳string10Y加密傳送字串時使用的TimeStr
CheckNum時間戳string10Y加密傳送字串取得隨機檢查碼時回傳的CheckNum

JStr1/JStr2組成

※ 將下列參數組成Json字串後,以檢核碼串接取得的Key及IV做AES256加密後,將加密後字串對分拆解成JStr1及JStr2兩個參數,再做UrlEncode上傳

參數名稱型態長度必須備註
mem_cid商家帳號stringY
passcode交易驗證碼stringY請以下列組合成字串後使用SHA-1雜湊函數加密並轉大寫
(2822 + mem_cid + OrderNo + 商家交易密碼 + 9955)
OrderNO商家自訂編號stringY

Response

參數名稱型態長度必須備註
純字串回應字串stringY成功:S_成功資訊(urlencode)
失敗:F_錯誤訊息(urlencode)

交易狀態查詢

操作流程

交易狀態查詢 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 = PQS_gp的API,以文件描述需要的參數組成JsonString後,利用步驟5取得的EncryptionKey及EncryptionIV將JsonString以AES256加密後,拆分成JStr1及JStr2並做urlencode,拋送文件描述的參數共6個

  7. paynow以商家帳號、TimeStr及CheckNum取得解密用的AES256密碼解密後,回傳查詢的交易狀態字串

交易狀態查詢流程圖

captureflow

參數說明

傳遞方式:Http POST method UrlEncode

Request

參數名稱型態長度必須備註
OP服務代號stringYOP = PQS_gp
JStr1/JStr2Json字串stringY請參照JStr1/JStr2組成
mem_cid服務代號string8-10Y
TimeStr時間戳string10Y加密傳送字串時使用的TimeStr
CheckNum時間戳string10Y加密傳送字串取得隨機檢查碼時回傳的CheckNum

JStr1/JStr2組成

※ 將下列參數組成Json字串後,以檢核碼串接取得的Key及IV做AES256加密後,將加密後字串對分拆解成JStr1及JStr2兩個參數,再做UrlEncode上傳

參數名稱型態長度必須備註
mem_cid商家帳號stringY
passcode交易驗證碼stringY請以下列組合成字串後使用SHA-1雜湊函數加密並轉大寫
(2822 + mem_cid + OrderNo + 商家交易密碼 + 9955)
OrderNO商家自訂編號stringY

Response

參數名稱型態長度必須備註
純字串回應字串stringY※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服務代號stringYOP = T_S
JStrJson字串stringY請參照JStr

JStr組成

※ 將下列參數組成Json字串後,請將下列參數組成Json格式字串後TripleDes加密

參數名稱型態長度必須備註
buysafenoPayNow 訂單編號stringY
passcode交易驗證碼stringY請以下列組合成字串後使用SHA-1雜湊函數以商家密碼加密
(商家帳號+商家自訂編號+票券訂單金額+商家交易密碼)

Response

參數名稱型態長度必須備註
buysafenoPayNow 訂單編號string19Y
checkno票券核銷碼string7Y
passcode交易驗證碼stringY
errormessage錯誤描述stringY錯誤時有值;F_錯誤資訊

票券核銷

說明

  • 所有參數請以TripleDes加密,Key值固定為 28229955

參數說明

Request

傳遞方式:Http POST method UrlEncode

參數名稱型態長度必須備註
OP服務代號stringYOP = T_G
JStrJson字串stringY請參照JStr

JStr組成

※ 將下列參數組成Json字串後,請將下列參數組成Json格式字串後TripleDes加密

參數名稱型態長度必須備註
buysafenoPayNow 訂單編號stringY
checkno核銷碼stringY
passcode交易驗證碼stringY請以下列組合成字串後使用SHA-1雜湊函數且以商家密碼加密
(商家帳號+商家自訂編號+票券訂單金額+商家交易密碼)

Response

參數名稱型態長度必須備註
buysafenoPayNow 訂單編號string19Y
checkno票券核銷碼string7Y成功取得時有值
passcode交易驗證碼stringY
errormessage錯誤描述stringY錯誤時有值;F_錯誤資訊