怎麼讓本身的java系統使用支付接口

  昨天花了很久的時間學習了支付接口的教,我看了前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.一些我看視頻的截圖,你嘗試看看

 

相關文章
相關標籤/搜索