天天看點

Java訂單支付接入支付寶一訂單支付實作

官方SDK- Demo

官方文檔連結:https://opendocs.alipay.com/open/54/106370#JAVA%20%E8%B0%83%E7%94%A8%E7%A4%BA%E4%BE%8B

1.接入邏輯

商家背景:指的是我們自己的項目背景

商家App:指的是我們自己的項目的app 端

Java訂單支付接入支付寶一訂單支付實作

2.如何進行SDK的調用

①先初始化 AlipayClient 對象:

AlipayClient alipayClient = new DefaultAlipayClient(URL, APP_ID, APP_PRIVATE_KEY, FORMAT, CHARSET, ALIPAY_PUBLIC_KEY, SIGN_TYPE);
           

②參數說明:(具體的參數就參照文章頂部的連結,按照官方說明擷取即可)

配置參數 示例值解釋 擷取方式/示例值
URL 支付寶網關(固定) https://openapi.alipay.com/gateway.do
APP_ID 開發者應用私鑰,由開發者自己生成 建立應用并擷取 APPID
APP_PRIVATE_KEY APPID 即建立應用後生成
FORMAT 參數傳回格式,隻支援 json json(固定)
CHARSET 請求和簽名使用的字元編碼格式,支援 GBK 和 UTF-8 據實際工程編碼配置
ALIPAY_PUBLIC_KEY 支付寶公鑰,由支付寶生成
SIGN_TYPE 商戶生成簽名字元串所使用的簽名算法類型,目前支援 RSA2 和 RSA,推薦使用 RSA2 RSA2

③注意:

接下來,就可以用 alipayClient 來調用具體的 API 了。alipayClient 隻需要初始化一次,後續調用不同的API都可以使用同一個 alipayClient 對象

3.訂單支付

項目中訂單支付調用的支付接口(直接上代碼):

// 訂單支付接口:

public Result alipayAppPay(Order order) {	//  這裡的參數是對應的訂單資訊
	//執行個體化用戶端--參數要一一對應
AlipayClient alipayClient = new DefaultAlipayClient("https://openapi.alipay.com/gateway.do", APP_ID, APP_PRIVATE_KEY, "json", CHARSET, ALIPAY_PUBLIC_KEY, "RSA2");
//執行個體化具體API對應的request類,類名稱和接口名稱對應,目前調用接口名稱:alipay.trade.app.pay
AlipayTradeAppPayRequest request = new AlipayTradeAppPayRequest();
//SDK已經封裝掉了公共參數,這裡隻需要傳入業務參數。以下方法為sdk的model入參方式(model和biz_content同時存在的情況下取biz_content)。
AlipayTradeAppPayModel model = new AlipayTradeAppPayModel();

model.setSubject("App支付測試Java");  //付款後支付寶消息通知中的商品說明
model.setOutTradeNo("202012101123");//我們自己項目中的訂單号-保證唯一 ,從訂單參數中取
model.setTotalAmount("0.01");		//訂單實際支付價格,從訂單參數中取	
model.setProductCode("QUICK_MSECURITY_PAY");
request.setBizModel(model);
request.setNotifyUrl("商戶外網可以通路的異步位址");// 支付成功後回調位址, 下文有說明
AlipayTradeAppPayResponse response = null;
        try {
            response = alipayClient.sdkExecute(request);
        } catch (AlipayApiException e) {
            e.printStackTrace();
        }
        if (response.isSuccess()) {
            Order order1 = new Order();
            order1.setPayType(ConstantUtil.PAY_TYPE_2);
            Example example = new Example(Order.class);
            example.createCriteria().andEqualTo("orderSn", order.getOrderSn());
            orderMapper.updateByExampleSelective(order1, example);
            System.out.println(response.getBody());
            result.setData(response.getBody());
            System.out.println("調用成功");
        } else {
            System.out.println("調用失敗");
        }
}
	 return result;		 // 到這裡支付就完成了,上述代碼可結合自己實際進行修改使用	
           

4.支付回調

上述 3 中還涉及到支付的一個回調通知可以了解為:支付完成後,支付寶通知我們,然後我們對自己系統中的對應訂單資料做相應的處理:

下一篇接着淦支付回調

5.如果覺得對你有幫助就點個贊吧

這也算是我自己真正接觸支付寶支付的一個心路曆程,完整的記錄下來,希望能幫助更多的人,一起進步……就是淦