1. 程式人生 > >支付寶支付介面總結

支付寶支付介面總結

登陸

螞蟻金服提供了支付的測試環境和測試商家賣家賬號和賣家賬號,也提供了一套demo
登陸時使用自己真實線上的支付寶,服務可選擇個人自研開發。

~> 開放平臺-沙箱環境

沙箱配置

在這裡插入圖片描述

APPID和支付寶閘道器都是其自動生成提供的,不需要配置,沙箱只需要在在這裡配置金鑰。記得用私鑰簽名公鑰驗證下其正確性。

1.只能填寫和修改應用公鑰,支付寶公鑰會自動對應生成,兩個公鑰是不一樣的(僅僅頭尾像而已)
2.配置AlipayConfig.java的公鑰屬性使用的是支付寶公鑰
3.這個支付寶閘道器都是沙箱測試環境的,真實線上環境的閘道器沒有 dev,線上的APPID 是另外的。在建立應用時才有

快速接入文件
在這裡插入圖片描述

買家和賣家的測試賬號
在這裡插入圖片描述

測試可以下載其提供的沙箱支付寶(介面功能和真實線上支付寶幾乎一樣,就是閘道器和賬號是測試的而已),這樣測試給錢直接掃碼方便。


Demo案例解析

以下是官方提供的樣例中的AlipayConfig.java配置檔案
package com.alipay.config;

import java.io.FileWriter;
import java.io.IOException;

/* *
 *類名:AlipayConfig
 *功能:基礎配置類
 *詳細:設定帳戶有關資訊及返回路徑
 *修改日期:2017-04-05
 *說明:
 *以下程式碼只是為了方便商戶測試而提供的樣例程式碼,商戶可以根據自己網站的需要,按照技術文件編寫,並非一定要使用該程式碼。
 *該程式碼僅供學習和研究支付寶介面使用,只是提供一個參考。
 */
public class AlipayConfig { //↓↓↓↓↓↓↓↓↓↓請在這裡配置您的基本資訊↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓ // 應用ID,您的APPID,收款賬號既是您的APPID對應支付寶賬號 public static String app_id = "2016091900549628"; // 商戶私鑰,您的PKCS8格式RSA2私鑰 public static String merchant_private_key = "應用公鑰對應的私鑰"; // 支付寶公鑰,檢視地址:https://openhome.alipay.com/platform/keyManage.htm 對應APPID下的支付寶公鑰。
public static String alipay_public_key = "支付寶公鑰!!!!,不是應用公鑰"; /** * 1.伺服器非同步通知頁面路徑 需http://格式的完整路徑,不能加?id=123這類自定義引數,必須外網可以正常訪問 * 2.確實是必須外網可以訪問,測試過了,基本是這沙箱的配置測試也需要這個可以外網訪問,不然支付寶那邊(猜測是閘道器那邊處理的)非同步返回找不到url。 * 3. 所謂非同步通知,類似回撥函式,就是其支付成功了會自動呼叫的一個頁面,採用POST請求,可以獲取支付訂單引數,這裡我改為自己寫的一個測試Servlet(花生殼殼域名內網穿透) */ public static String notify_url = "http://170d491b26.iok.la/alipay.trade.page.pay-JAVA-UTF-8/PayServlet"; // 支付成功後跳轉到的頁面,可以自定義,Get方式,可以獲取到一些支付訂單引數,!無需公網IP public static String return_url = "http://127.0.0.1:8080/alipay.trade.page.pay-JAVA-UTF-8/return_url.jsp"; // 簽名方式 public static String sign_type = "RSA2"; // 字元編碼格式 public static String charset = "utf-8"; // 支付寶閘道器,這裡是測試閘道器,線上閘道器是"https://openapi.alipay.com/gateway.do",沒有dev public static String gatewayUrl = "https://openapi.alipaydev.com/gateway.do"; // 以下是日誌,可以暫時不管 ..... }

return_url

return_url是支付成功後自動跳轉到的你指定頁面,測試過可以不用外網訪問,GET方式,可以獲取使用者請求。return_url.jsp也是其提供的一個樣例檔案,原始碼就是輸出一下幾個交易引數到http。
如下圖:

在這裡插入圖片描述

notify_url

1.notify_url是必須要外網可以訪問的(我這裡採用的是花生殼內網穿透)
2.如果支付成功了支付寶閘道器那邊會自動呼叫的,這個響應的url需要返回一個 “success” / “fail” 可以參照其提供的return_url.jsp
3.以下是我寫的那個測試的PayServlet作為notify_url

package controller;

import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
 
import java.util.Map;

/**
 * 測試支付功能的處理接收的非同步通知回撥方法
 * 
 * @author chgl16
 * @date 2018-11-20
 * @version 1.0
 */
@WebServlet("/PayServlet")
public class PayServlet extends HttpServlet {
	private static final long serialVersionUID = 1L;
       
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		doPost(request, response);
	}
	
	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		System.out.println("進入doPost"); 
		String total_amount = request.getParameter("total_amount");
		System.out.println("total_amount: " + total_amount);
		Map<String, String[]> map = request.getParameterMap();
		System.out.println("輸出引數集合: " + map.toString());
		response.getWriter().write("success");
		System.out.println("結束了");
	}
}

執行測試

執行index.jsp,測試付款,其會自動生成訂單號

在這裡插入圖片描述
點選付款按鈕會跳轉到其提供的alipy.trade.page.pay.jsp然後在到官方的支付介面
在這裡插入圖片描述
這時可以使用下載的支付沙箱版支付寶掃描付款或者登陸付款,登陸的都是測試的買家賬號。支付成功會有幾個跳轉
在這裡插入圖片描述
最後跳轉到return_url,如下
在這裡插入圖片描述
支付成功後,也自動呼叫了notify_url,就是我定義的PayServelt
在這裡插入圖片描述

上線

需要申請稽核,以獲取

=》開發者申請中心
在這裡插入圖片描述

需要設定一些上線選擇,然後提交稽核
在這裡插入圖片描述

待續。。。。