官方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 端

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.如果覺得對你有幫助就點個贊吧
這也算是我自己真正接觸支付寶支付的一個心路曆程,完整的記錄下來,希望能幫助更多的人,一起進步……就是淦