昨天花了很久的時間學習了支付接口的教,我看了前7集,就夠用了,你們上網搜索一下傳智播客在線支付還不錯。java
1.一開始有一個form表單app
2.這個表單是他幫你寫好的,有不少銀行,銀行的name都是特定的學習
3.這個表單要提交,教程中使用的是servlet,我使用的是struts2,原理其實也差很少,就是跳轉以後要處理事務,servlet處理的功能跟struts中的dao+action是差很少的測試
4.提交以後,要定義一些屬性,有一些屬性若是你的表單是有上傳上來的,那就使用一些手段去獲取,若是沒有賦值的你就要本身給他賦值。ui
5.他有一個加密類,你在給一個屬性賦值的時候是要用到的。這個屬性叫作md5hmac、編碼
6.以後這些屬性都傳到另一個表單,這個表單是要跳轉到支付接口的,這個表單是不用給用戶看到的(我用的方法就是用js語言設置這個表單自動提交)加密
7.最後就會跳轉到這個支付頁面的spa
備註:調試
1.這個須要有兩個屬性,如截圖的前兩個,是須要這個企業提供給你,我截圖的這個過時了,我用時候跳轉到頁面,可是用不了code
2.加密類
1 /** 2 * @param aValue 3 * @return 4 */ 5 public static String digest(String aValue) { 6 aValue = aValue.trim(); 7 byte value[]; 8 try { 9 value = aValue.getBytes(encodingCharset); 10 } catch (UnsupportedEncodingException e) { 11 value = aValue.getBytes(); 12 } 13 MessageDigest md = null; 14 try { 15 md = MessageDigest.getInstance("SHA"); 16 } catch (NoSuchAlgorithmException e) { 17 e.printStackTrace(); 18 return null; 19 } 20 return toHex(md.digest(value)); 21 22 } 23 24 // public static void main(String[] args) { 25 // System.out.println(hmacSign("AnnulCard1000043252120080620160450.0http://localhost/SZXpro/callback.asp這 26 27 4564868265473632445648682654736324511","8UPp0KE8sq73zVP370vko7C39403rtK1YwX40Td6irH216036H27Eb12792t")); 28 // } 29 } 30 ---------------------- 31 b./payment/src/com/credream/utils/PanymentUtil.java 32 package com.credream.utils; 33 34 public class PanymentUtil { 35 /** 36 * 生成hmac方法 37 * 38 * @param p0_Cmd 業務類型 39 * @param p1_MerId 商戶編號 40 * @param p2_Order 商戶訂單號 41 * @param p3_Amt 支付金額 42 * @param p4_Cur 交易幣種 43 * @param p5_Pid 商品名稱 44 * @param p6_Pcat 商品種類 45 * @param p7_Pdesc 商品描述 46 * @param p8_Url 商戶接收支付成功數據的地址 47 * @param p9_SAF 送貨地址 48 * @param pa_MP 商戶擴展信息 49 * @param pd_FrpId 銀行編碼 50 * @param pr_NeedResponse 應答機制 51 * @param keyValue 商戶密鑰 52 * @return 53 */ 54 public static String buildHmac(String p0_Cmd,String p1_MerId, 55 String p2_Order, String p3_Amt, String p4_Cur,String p5_Pid, String p6_Pcat, 56 String p7_Pdesc,String p8_Url, String p9_SAF,String pa_MP,String pd_FrpId, 57 String pr_NeedResponse,String keyValue) { 58 StringBuffer sValue = new StringBuffer(); 59 // 業務類型 60 sValue.append(p0_Cmd); 61 // 商戶編號 62 sValue.append(p1_MerId); 63 // 商戶訂單號 64 sValue.append(p2_Order); 65 // 支付金額 66 sValue.append(p3_Amt); 67 // 交易幣種 68 sValue.append(p4_Cur); 69 // 商品名稱 70 sValue.append(p5_Pid); 71 // 商品種類 72 sValue.append(p6_Pcat); 73 // 商品描述 74 sValue.append(p7_Pdesc); 75 // 商戶接收支付成功數據的地址 76 sValue.append(p8_Url); 77 // 送貨地址 78 sValue.append(p9_SAF); 79 // 商戶擴展信息 80 sValue.append(pa_MP); 81 // 銀行編碼 82 sValue.append(pd_FrpId); 83 // 應答機制 84 sValue.append(pr_NeedResponse); 85 86 String sNewString = DigestUtil.hmacSign(sValue.toString(), keyValue); 87 return sNewString; 88 } 89 90 /** 91 * 返回校驗hmac方法 92 * 93 * @param hmac 支付網關發來的加密驗證碼 94 * @param p1_MerId 商戶編號 95 * @param r0_Cmd 業務類型 96 * @param r1_Code 支付結果 97 * @param r2_TrxId 易寶支付交易流水號 98 * @param r3_Amt 支付金額 99 * @param r4_Cur 交易幣種 100 * @param r5_Pid 商品名稱 101 * @param r6_Order 商戶訂單號 102 * @param r7_Uid 易寶支付會員ID 103 * @param r8_MP 商戶擴展信息 104 * @param r9_BType 交易結果返回類型 105 * @param keyValue 密鑰 106 * @return 107 */ 108 public static boolean verifyCallback(String hmac, String p1_MerId, 109 String r0_Cmd, String r1_Code, String r2_TrxId, String r3_Amt, 110 String r4_Cur, String r5_Pid, String r6_Order, String r7_Uid, 111 String r8_MP, String r9_BType, String keyValue) { 112 StringBuffer sValue = new StringBuffer(); 113 // 商戶編號 114 sValue.append(p1_MerId); 115 // 業務類型 116 sValue.append(r0_Cmd); 117 // 支付結果 118 sValue.append(r1_Code); 119 // 易寶支付交易流水號 120 sValue.append(r2_TrxId); 121 // 支付金額 122 sValue.append(r3_Amt); 123 // 交易幣種 124 sValue.append(r4_Cur); 125 // 商品名稱 126 sValue.append(r5_Pid); 127 // 商戶訂單號 128 sValue.append(r6_Order); 129 // 易寶支付會員ID 130 sValue.append(r7_Uid); 131 // 商戶擴展信息 132 sValue.append(r8_MP); 133 // 交易結果返回類型 134 sValue.append(r9_BType); 135 String sNewString = DigestUtil.hmacSign(sValue.toString(), keyValue); 136 137 if (hmac.equals(sNewString)) { 138 return true; 139 } 140 return false; 141 } 142 }
3.記得你調試的時候要用企業給的測試環境下的支付網址
4.一些我看視頻的截圖,你嘗試看看