銀聯電子支付報文說明


  1 請求報文
  2 Version    版本號
  3 MerId    商戶號
  4 MerOrderNo    必填,變長 32位,同一商戶同一交易日期內不可重復
  5 TranDate    商戶提交交易的日期,例如交易日期為2015年1月2日,則值為20150102
  6 TranTime    商戶提交交易的時間,例如交易時間10點11分22秒,則值為101122
  7 OrderAmt    單位:分
  8 BusiType    0001(注意:字符串類型)
  9 MerPageUrl    0    商戶前台頁面接收交易結果的地址,用於引導使用者支付后返回商戶網站頁面
 10 MerBgUrl    商戶后台接收交易結果的地址
 11 CommodityMsg    0    用來描述購買商品的信息,ChinaPay原樣返回
 12 MerResv    0    商戶自定義,ChinaPay原樣返回
 13 
 14 Signature    商戶報文簽名信息,報文中的所有字段都參與簽名(Signature除外)
 15 
 16 應答報文
 17 * MerId    商戶號
 18 * MerOrderNo    商戶訂單號
 19 * TranDate    交易日期 年月日
 20 * TranTime    交易時間 時分秒
 21 * OrderAmt    訂單金額 單位分
 22 * OrderStatus    訂單支付狀態 0000為支付成功狀態,0001為未支付,其它為失敗狀態
 23 * MerResv    商戶私有域 自定義原樣返回
 24 * TranReserved    交易擴展域    json格式 原樣返回
 25 * Signature    簽名
 26 
 27 1、開發過程中,商戶簽名報SecurityException異常
 28 
 29 檢查交易證書密碼是否配置正確,並檢查配置文件security.properties是否配置正確。
 30 
 31 需要將security.properties放在類路徑下,並配置如下:
 32 
 33 #交易證書路徑
 34 
 35 sign.file=D:/cert_cp/000000000000001.pfx
 36 
 37 #交易證書密碼
 38 
 39 sign.file.password=123456
 40 
 41 #交易證書的密鑰容器格式
 42 
 43 sign.cert.type=PKCS12
 44 
 45 #報文中不參與簽名的字段名稱,多個字段用逗號進行分隔
 46 
 47 sign.invalid.fields=Signature,CertId
 48 
 49 #驗簽證書路徑
 50 
 51 verify.file=D:/cert_cp/cp_test.cer
 52 
 53 #簽名值字段名稱
 54 
 55 signature.field=Signature
 56 
 57 2、開發過程中,商戶簽名報“未初始化配置”異常
 58 
 59 檢查簽名或驗簽之前是否調用SecssUtil.init();方法,如果未調用,則調用SecssUtil.init()方法初始化安全簽名配置
 60 
 61 3、簽名過程出現 Illegal key size錯誤
 62 
 63 請檢查下載的pfx證書是否正確,或者重新申請CFCA交易證書
 64 
 65 4、交易失敗!錯誤信息:證書未配置
 66 
 67 這個報錯通常有兩個原因,一是沒有申請交易證書,二是交易地址提交錯誤,測試地址和正式地址搞錯了。
 68 
 69 5、交易失敗!錯誤信息:驗簽失敗。
 70 
 71 需要確認交易證書在Internet選項---內容---證書---頒發給的名字和在商戶服務管理系統里面查到的交易證書的證書名稱是一樣的。
 72 證書確認沒有問題,需要確認參加簽名的字段和傳過來的字段是一樣的。
 73 
 74 
 75 簽名示例代碼
 76 
 77 require 'SecssUtil.class.php';
 78 
 79 $securityPropFile="D:/Zend/workspaces/DefaultWorkspace12/chinapaySECSS_PHP/security.properties";
 80 
 81 $paramArray=array(
 82 
 83 "AcqCode"=>"000000000000014",
 84 
 85 "BankInstNo"=>"",
 86 
 87 "BusiType"=>"0001",
 88 
 89 "CommodityMsg"=>"ChinaPay測試-商品信息",
 90 
 91 "CurryNo"=> "CNY",
 92 
 93 " AccessType"=>"0",
 94 
 95 " MerBgUrl"=>"http://172.16.9.233:9080/CPOA_TEST/mer/receiveStdasServlet",
 96 
 97 " MerPageUrl"=>"http://172.16.9.233:9080/CPOA_TEST/receive",
 98 
 99 " MerSplitMsg"=>"");
100 
101 $secssUtil = new SecssUtil();
102 
103 $secssUtil->init($securityPropFile); //初始化安全控件:
104 
105 $secssUtil->sign($paramArray);
106 
107 if("00"!==$secssUtil.getErrCode()){
108 
109 echo"簽名過程發生錯誤,錯誤信息為-->".$secssUtil.getErrMsg();
110 
111 return;
112 
113 }
114 
115 $signature==$secssUtil->getSign();
116 
117 echo "簽名數據為:".$signature;
118 
119  
120 
121 驗證簽名示例代碼
122 
123 require 'SecssUtil.class.php';
124 
125 $securityPropFile="D:/Zend/workspaces/DefaultWorkspace12/chinapaySECSS_PHP/security.properties";
126 
127 $paramArray=array(
128 
129 "AcqCode"=>"000000000000014",
130 
131 "BankInstNo"=>"",
132 
133 "BusiType"=>"0001",
134 
135 "CommodityMsg"=>"ChinaPay測試-商品信息",
136 
137 "CurryNo"=> "CNY",
138 
139 " AccessType"=>"0",
140 
141 " MerBgUrl"=>"http://172.16.9.233:9080/CPOA_TEST/mer/receiveStdasServlet",
142 
143 " MerPageUrl"=>"http://172.16.9.233:9080/CPOA_TEST/receive",
144 
145 " MerSplitMsg"=>"",
146 
147 "Signature"=>"………"
148 
149 );
150 
151 $secssUtil = new SecssUtil();
152 
153 $secssUtil->init($securityPropFile); //初始化安全控件:
154 
155 $secssUtil->verify($paramArray);
156 
157 if("00"!==$secssUtil.getErrCode()){
158 
159 echo"驗簽過程發生錯誤,錯誤信息為-->".$secssUtil.getErrMsg();
160 
161 return;
162 
163 }
164 
165 echo "驗簽通過。";
166 
167 敏感數據加密示例代碼
168 
169 require 'SecssUtil.class.php';
170 
171 $securityPropFile="D:/Zend/workspaces/DefaultWorkspace12/chinapaySECSS_PHP/security.properties";
172 
173 $plainData="testtest";
174 
175 $secssUtil = new SecssUtil();
176 
177 $secssUtil->init($securityPropFile); //初始化安全控件:
178 
179 $secssUtil->encryptData ($plainData);
180 
181 if("00"!==$secssUtil.getErrCode()){
182 
183 echo"加密過程發生錯誤,錯誤信息為-->".$secssUtil.getErrMsg();
184 
185 return;
186 
187 }
188 
189 echo "加密后的密文為:".$secssUtil->getEncValue();
190 
191  
192 
193 密碼加密示例代碼
194 
195 require 'SecssUtil.class.php';
196 
197 $securityPropFile="D:/Zend/workspaces/DefaultWorkspace12/chinapaySECSS_PHP/security.properties";
198 
199 $card="6225882125408888";
200 
201 $pin="123456";
202 
203 $secssUtil = new SecssUtil();
204 
205 $secssUtil->init($securityPropFile); //初始化安全控件:
206 
207 $secssUtil->encryptPin($pin, $card);
208 
209 if("00"!==$secssUtil.getErrCode()){
210 
211 echo"密碼加密過程發生錯誤,錯誤信息為-->".$secssUtil.getErrMsg();
212 
213 return;
214 
215 }
216 
217 echo "加密后的PIN密文為:".$secssUtil->getEncPin();
218 
219 文件驗簽示例代碼
220 
221 require ' SecssUtil.class.php';
222 
223 $securityPropFile="D:/Zend/workspaces/DefaultWorkspace12/chinapaySECSS_PHP/security.properties";
224 
225 $secssUtil = new SecssUtil();
226 
227 $secssUtil->init($securityPropFile);
228 
229 $file="D:/Zend/workspaces/DefaultWorkspace12/ChinaPaySECSS_PHP/測試文件.txt";
230 
231 echo "verify start time".date('y-m-d h:i:s',time())."\r\n";
232 
233 $secssUtil->verifyFile($file);
234 
235 if("00"===$secssUtil->getErrCode()){
236 
237 echo "文件驗簽成功,errcode=[" .$secssUtil->getErrCode()."]\r\n";
238 
239 }else{
240 
241 echo "文件驗簽失敗,errcode=[" .$secssUtil->getErrCode()."]\r\n";
242 
243 }
244 
245 echo "verify end time".date('y-m-d h:i:s',time())."\r\n";

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM