企業支付寶賬號開發接口教程

1:擁有自己的支付寶企業賬號。去產品商店選擇適合自己的方案。並簽約合同。
在這裏插入圖片描述

2:選擇合適的商家收款產品並去簽約。填寫相應的信息
在這裏插入圖片描述

3:在商家服務會有PID和KEY是關鍵的東西。

在這裏插入圖片描述

4:選擇自己簽約的產品類型,下載對應的接口api與測試代碼

即時到賬收款 --alipaydirect

網銀支付 --alipaydirect_bankpay_single

擔保交易收款 --alipaytescow

雙功能收款 --alipaydualfun

快捷支付(無線) --WS_SECURE_PAY_SDK

手機網站支付 --WS_WAP_PAYWAP

掃碼即時到賬 --alipaymobileqrcode

掃碼擔保交易 --alipaymobileqrcode

批量付款到支付寶賬戶 --alipaytranspay

快捷登錄 --alipayfastlogin

    官方給用戶自己提供了10種功能的代碼。

5:alipaydirect_bankpay_single 測試

在覈心代碼alipayconfig需要更改自己的partner和key

在這裏插入圖片描述

6:測試界面

在這裏插入圖片描述

7:網銀銀行簡碼

網銀銀行簡碼

BOCB2C 中國銀行
ICBCB2C 中國工商銀行
ICBCBTB 中國工商銀行(B2B)
CMB 招商銀行
CCB 中國建設銀行
CCBBTB 中國建設銀行(B2B)
ABC 中國農業銀行
ABCBTB 中國農業銀行(B2B)
SPDB 上海浦東發展銀行
SPDBB2B 上海浦東發展銀行(B2B)
CIB 興業銀行
GDB 廣東發展銀行
SDB 深圳發展銀行
CMBC 中國民生銀行
COMM 交通銀行
CITIC 中信銀行
CEBBANK 光大銀行
NBBANK 寧波銀行
HZCBB2C 杭州銀行
SHBANK 上海銀行
SPABANK 平安銀行
BJRCB 北京農村商業銀行
fdb101 富滇銀行
PSBC-DEBIT 中國郵政儲蓄銀行
BJBANK 北京銀行
8:錯誤代碼錯誤說明

誤代碼 說明
EXPARTNER_INFO_UNCORRECT 傳入外部商戶接口信息不正確
TRADE_BUYER_NOT_MATCH 買家賬戶與交易中不一致
TRADE_SELLER_NOT_MATCH 賣家賬戶與交易中不一致
TRADE_DATA_NOT_MATCH 請求數據與交易中不一致
SELLER_NOT_IN_SPECIFIED_SELLERS 賣家不在指定的商戶限制賣家中
ILLEGAL_SIGN 簽名驗證出錯
ILLEGAL_ARGUMENT 輸入參數有錯誤
HASH_NO_PRIVILEGE 沒有權限訪問該服務
ILLEGAL_SERVICE service參數不正確
ILLEGAL_PARTNER 合作身份者ID不正確
HAS_NO_PUBLICKEY 沒有上傳公鑰
USER_NOT_EXIST 會員不存在
OUT_TRADE_NO_EXIST 外部交易號已經存在
TRADE_NOT_EXIST 交易不存在
ILLEGAL_PAYMENT_TYPE 無效支付類型
BUYER_NOT_EXIST 買家不存在
SELLER_NOT_EXIST 賣家不存在
BUYER_SELLER_EQUAL 買家、賣家是同一帳戶
ILLEGAL_SIGN_TYPE 簽名類型不正確
COMMISION_ID_NOT_EXIST 佣金收取帳戶不存在
COMMISION_SELLER_DUPLICATE 收取佣金帳戶和賣家是同一帳戶
出現的錯誤代碼爲ILLEGAL_PARTNER_EXTERFACE

1、沒有簽約這個接口的合同。
2、簽約了相應的接口合同,但沒有生效。
3、簽約了相應的接口合同,但由於違規違法等原因被審覈部門強制關閉。

9:頁面需要修改的東西alipayapi.jsp
在這裏插入圖片描述

10:跳轉頁面第6步有截圖。賣家賬號收款的賬號。不是付款的賬號哦。

如果調試登錄了收款的支付寶賬號。會出錯的哦。錯誤截圖如下

錯誤代碼:BUYER_SELLER_EQUAL
在這裏插入圖片描述

 如果調試登錄了收款的支付寶賬號。而且頁面填寫的賣家賬號非賣家賬號(收款賬號)會出現如下錯誤

錯誤代碼:SELLER_NOT_IN_SPECIFIED_SELLERS
在這裏插入圖片描述

如果沒有錯誤。則會直接跳轉付款頁面。輸入買家賬號即可。

11:成功付款的頁面。付款頁面需要輸入購買用戶的支付寶賬號和支付密碼

在這裏插入圖片描述

12:使用springMVC封裝寫符合自己網站需求的代碼。以下代碼僅參考

這個是ALIPAYAPI代碼要獲取數據的

Date date = new Date();
//支付類型 必填 不必修改
String payment_type = “1”;

    //服務器異步通知頁面路徑
    //需http://格式的完整路徑,不能加?id=123這類自定義參數
    String notify_url = "http://localhost:8080/alipay/async";
    
    //頁面跳轉同步通知頁面路徑
    //需http://格式的完整路徑,不能加?id=123這類自定義參數,不能寫成http://localhost/
    String return_url = "http://192.168.0.222:8080/alipay/return_url";
    
    //訂單名稱
    //必填

// String subject = new String(request.getParameter(“WIDsubject”).getBytes(“ISO-8859-1”),“UTF-8”);
String subject = new String(“測試商品”.getBytes(“ISO-8859-1”),“UTF-8”);

    //付款金額
    //必填

// String total_fee = new String(request.getParameter(“WIDtotal_fee”).getBytes(“ISO-8859-1”),“UTF-8”);
String total_fee = “0.01”;

    Map<String, String> sParaTemp = new HashMap<String, String>();
    sParaTemp.put("service", "create_direct_pay_by_user");//接口服務----即時到賬
    sParaTemp.put("partner", AlipayConfig.partner);//支付寶PID
    sParaTemp.put("_input_charset", AlipayConfig.input_charset);//統一編碼
    sParaTemp.put("payment_type", payment_type);//支付類型
    sParaTemp.put("notify_url", notify_url);//異步通知頁面
    sParaTemp.put("return_url", return_url);//頁面跳轉同步通知頁面
    sParaTemp.put("seller_email", Constants.SELLER_EMAIL);//賣家支付寶賬號
    sParaTemp.put("out_trade_no", date.getTime()+payment_type);//商品訂單編號
    sParaTemp.put("subject", subject);//商品名稱
    sParaTemp.put("total_fee", total_fee);//價格
    
    //建立請求
    String sHtmlText = AlipaySubmit.buildRequest(sParaTemp, "get", "立即付款");
    request.setAttribute("sHtmlText", sHtmlText);
    
    return null;

付款是否成功的代碼

    Map<String , String> params = new HashMap<String, String>();
    Map requestParams = request.getParameterMap();
    for (Iterator iter = requestParams.keySet().iterator(); iter.hasNext();) {
        String name = (String) iter.next();
        String[] values = (String[]) requestParams.get(name);
        String valueStr = "";
        for (int i = 0; i < values.length; i++) {
            valueStr = (i == values.length - 1 )? valueStr + values[i]:valueStr+values[i]+",";
        }
        params.put(name, valueStr);
    }
    String tradeNo = request.getParameter("out_trade_no");
    String tradeStatus = request.getParameter("trade_status");
    if(AlipayNotify.verify(params)){
        if(tradeStatus.equals("TRADE_FINISHED") || tradeStatus.equals("TRADE_SUCCESS")){
            System.out.println("ok!>>>>>>>>" + tradeNo);
        }
        return "success";
    }else{
        return "fail";
    }
}

13:使用springMVC封裝寫符合自己網站需求的代碼。以下代碼僅參考 全部都寫在一個Controller裏面

/**

  • 支付寶Controller

  • @author 宗瀟帥

  • @修改日期 2014-9-25下午1:29:53
    */
    @Controller
    @RequestMapping(value="/aliapi")
    public class AlipayApiController {

    private static Log log = LogFactory.getLog(AlipayApiController.class);

    @RequestMapping(value="/index")
    public String index(HttpServletRequest request,
    HttpServletResponse response){
    return “web/pay/fund”;//付款的頁面。本頁面是爲了測試而使用的
    }

    @RequestMapping(value = “/deposit”, method = RequestMethod.POST,produces = “application/json”)
    public String deposit(HttpServletRequest request,HttpServletResponse response,Model model) throws Exception {
    // PrintWriter out = response.getWriter();
    String result = “”;
    Date date = new Date();
    // 支付類型
    // 必填,不能修改
    String payment_type = “1”;
    // 服務器異步通知頁面路徑
    // 需http://格式的完整路徑,不能加?id=123這類自定義參數
    String notify_url = “http://192.168.0.222:8080/live/aliapi/async”;
    // 頁面跳轉同步通知頁面路徑
    // 需http://格式的完整路徑,不能加?id=123這類自定義參數,不能寫成http://localhost/
    String return_url = “http://192.168.0.222:8080/live/aliapi/return_url”;
    // 商戶訂單號.
    // 商戶網站訂單系統中唯一訂單號,必填
    //String out_trade_no = date.getTime() + “”;
    // 訂單名稱
    // 必填
    String subject = “充值測試”;
    // 防釣魚時間戳
    // 若要使用請調用類文件submit中的query_timestamp函數
    String anti_phishing_key = “”;
    // 客戶端的IP地址
    // 非局域網的外網IP地址,如:221.0.0.1
    String exter_invoke_ip = “”;

     String total_fee = ServletRequestUtils.getStringParameter(request, "amount","");
     
     String body = ServletRequestUtils.getStringParameter(request, "body","test");
     //商品展示地址
     String show_url = ServletRequestUtils.getStringParameter(request, "show_url","http://www.elve.cn");
     //需以http://開頭的完整路徑,例如:http://www.xxx.com/myorder.html
    
     
     
     
     Map<String, String> sParaTemp = new HashMap<String, String>();
     sParaTemp.put("service", "create_direct_pay_by_user");//接口服務----即時到賬
     sParaTemp.put("partner", AlipayConfig.partner);//支付寶PID
     sParaTemp.put("_input_charset", AlipayConfig.input_charset);//統一編碼
     sParaTemp.put("payment_type", payment_type);//支付類型
     sParaTemp.put("notify_url", notify_url);//異步通知頁面
     sParaTemp.put("return_url", return_url);//頁面跳轉同步通知頁面
     sParaTemp.put("seller_email", Constants.SELLER_EMAIL);//賣家支付寶賬號
     sParaTemp.put("out_trade_no", date.getTime()+payment_type);//商品訂單編號
     sParaTemp.put("subject", subject);//商品名稱
     sParaTemp.put("total_fee", total_fee);//價格
     sParaTemp.put("body", body);
     sParaTemp.put("show_url", show_url);
     sParaTemp.put("anti_phishing_key", anti_phishing_key);
     sParaTemp.put("exter_invoke_ip", exter_invoke_ip);
      
     //建立請求
     try {
         String sHtmlText = AlipaySubmit.buildRequest(sParaTemp,"post","確認");  
         Gson gson = new GsonBuilder().setDateFormat("yyyy-MM-dd HH:mm:ss").create();
         String s = gson.toJson(sHtmlText);
         model.addAttribute("sHtmlText", s);
         request.setAttribute("sHtmlText", s);
         result = "{\"success\":true,\"msg\":\"跳轉成功\"}";
         StringUtil.writeToWeb(sHtmlText, "html", response);
         return null;
     } catch (Exception e) {
         if(log.isErrorEnabled()){
             log.error("ddddddddddddddddddddd");
         }
         result = "{\"success\":false,\"msg\":\"跳轉失敗,請稍候再試!\"}";
         StringUtil.writeToWeb(result, "html", response);
         return null;
     }
    

    }
    /**

    • 同步通知的頁面的Controller
    • @param request
    • @param response
    • @return
    • @author 宗瀟帥
      /
      @RequestMapping(value="/return_url")
      public String Return_url(HttpServletRequest request,HttpServletResponse response){
      return “web/pay/success”;
      }
      /
      *
    • 異步通知付款狀態的Controller
    • @param request
    • @param response
    • @return
    • @author 宗瀟帥
      */
      @SuppressWarnings(“rawtypes”)
      @RequestMapping(value="/async",method = RequestMethod.GET)
      public String async(HttpServletRequest request,
      HttpServletResponse response){
      Map<String,String> params = new HashMap<String,String>();
      Map requestParams = request.getParameterMap();
      for (Iterator iter = requestParams.keySet().iterator(); iter.hasNext()😉 {
      String name = (String) iter.next();
      String[] values = (String[]) requestParams.get(name);
      String valueStr = “”;
      for (int i = 0; i < values.length; i++) {
      valueStr = (i == values.length - 1) ? valueStr + values[i]: valueStr + values[i] + “,”;
      }
      params.put(name, valueStr);
      }
      String tradeNo = request.getParameter(“out_trade_no”);
      String tradeStatus = request.getParameter(“trade_status”);
      //String notifyId = request.getParameter(“notify_id”);
      if(AlipayNotify.verify(params)){//驗證成功
      if(tradeStatus.equals(“TRADE_FINISHED”) || tradeStatus.equals(“TRADE_SUCCESS”)) {
      //要寫的邏輯。自己按自己的要求寫
      log.error(“ok…”);
      System.out.println(">>>>>充值成功" + tradeNo);
      }
      return “web/pay/success”;
      }else{//驗證失敗
      return “web/pay/fail”;
      }

    }
    }
    14:JSP付款頁面表單提交數據並彈出付款頁面

    只做了簡單的表單提交。可以根據自己的要求修改

<%@ page contentType=“text/html;charset=UTF-8” %>

<%@ include file="/common/webMeta.jsp"%> www.elve.cn
<form id="form1" action= "${ctx }/aliapi/deposit" method="post" target="_blank">  
            <table cellpadding="10">  
                <tr>  
                    <td>充值測試</td>  
                    <td class="balance" id="userBalance"></td>  
                </tr>  
                <tr>  
                    <td><i class="zfb"></i></td>  
                    <td style="padding-bottom: 0px;">親愛的<span  
                        class="suppliment_user" id="suppliment_user"></span>,您可以使用支付寶充值積善分,請填寫以下信息  
                    </td>  
                </tr>  
                <tr>  
                    <td></td>  
                    <td>
                            金額<input type="text" name="amount" id="amount">
                    </td>  
                </tr>  

                <tr>  
                    <td></td>  
                    <td><a href="javascript:void(0);" id="doSubmit" class="blank_btn">確認</a></td>  
                </tr>  
            </table>  
</form>  
總結:企業支付寶接口開發基本完善。頁面和小功能需要自己修改就可以了。沒有什麼可難的。接口開發。只要明白怎麼跳轉就可以了。支付寶開發文檔說的很明白的

轉自:https://my.oschina.net/xshuai/blog/313809

相關文章鏈接:https://blog.csdn.net/qq_26562641/article/details/80174672
http://www.cnblogs.com/lazb/p/5881678.html

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章