Springboot整合支付寶支付加內網穿透工具實現本地回調


640?wx_fmt=gif

項目中我們集成了支付寶,用戶可以使用支付寶來進行支付

項目測試時,我們當然也需要一套測試環境對支付流程進行測試

如果我們使用線上的支付寶配置進行測試,那么我們必須使用真實貨幣進行支付

並且支付的金額會進入生產環境的支付寶綁定銀行卡中,造成諸多不便

這里,支付寶為測試提供了一個沙箱環境,使我們可以使用虛擬貨幣進行支付測試

這篇文章就來詳細說一下支付寶沙箱環境的配置和使用

首先創建支付寶配置文件類:

@Configuration	
@Data	
public class AliPayConfig {	

	
    /**	
     * 應用ID,您的APPID,收款賬號既是您的APPID對應支付寶賬號	
     */	
    @Value("${sdk.alipay.appID}")	
    private String appID;	

	
    /**	
     * 商戶私鑰,您的PKCS8格式RSA2私鑰	
     */	
    @Value("${sdk.alipay.merchantPrivateKey}")	
    private String merchantPrivateKey;	

	
    /**	
     * 支付寶公鑰	
     */	
    @Value("${sdk.alipay.alipayPublicKey}")	
    private String alipayPublicKey;	

	
    /**	
     * 簽名方式	
     */	
    @Value("${sdk.alipay.signType}")	
    private String signType;	

	
    /**	
     * 網關	
     */	
    @Value("${sdk.alipay.gatewayUrl}")	
    private String gatewayUrl;	

	
    /**	
     * 編碼	
     */	
    @Value("${sdk.alipay.charset}")	
    private String  charset;	

	
    /**	
     * 異步通知地址	
     */	
    @Value("${sdk.alipay.notifyUrl}")	
    private String notifyUrl;	

	
    /**	
     * 類型	
     */	
    @Value("${sdk.alipay.format}")	
    private String format;	

	
    /**	
     * 商戶號	
     */	
    @Value("${sdk.alipay.sysServiceProviderId}")	
    private String  sysServiceProviderId;	

登陸支付寶開放平台進行沙箱環境配置

640?wx_fmt=png

注意:沙箱環境的支付寶網關、公鑰私鑰都和正式不同,現在做的是沙箱環境的模擬支付

生成RSA密鑰:https://docs.open.alipay.com/291/106074	
上傳應用公鑰並獲取支付鑰:https://docs.open.alipay.com/291/105972/	
使用應用私鑰生成請求簽名:https://docs.open.alipay.com/291/105974/	
使用支付寶公鑰驗簽:https://docs.open.alipay.com/291/106074/	
下載密匙生成工具:https://docs.open.alipay.com/291/105971

640?wx_fmt=png

然后生成密鑰:

640?wx_fmt=png

生成公鑰 私鑰以后把公鑰上傳到支付寶,在開發者配置中點擊 RSA2(SHA256)密鑰

如下圖:

640?wx_fmt=png

上傳成功之后點擊查看支付寶公鑰,注意這里不要搞反了在配置文件中我們要的是支付寶給我們的公鑰不是我們剛剛生成的公鑰!

640?wx_fmt=png

配置成功,現在配置項目

打開配置文件添加配置:

640?wx_fmt=png

商戶私鑰就是剛剛生成的私鑰	
支付寶公鑰不是我們生成的公鑰,是支付寶給我們的公鑰	
切記 不然簽名校驗會不通過

添加生成支付代碼,簡單創建支付沒有加參數和業務代碼:

  @Override	
    public String payWithAliPay() throws AlipayApiException {	
        /**	
         * 業務代碼	
         */	
        String order_no = UUID.randomUUID().toString();    //77777777	
        String body = "";	
        String total_fee = "999.99";  //真實金錢	
        AlipayClient alipayClient = new DefaultAlipayClient(aliPayConfig.getGatewayUrl(), aliPayConfig.getAppID(), aliPayConfig.getMerchantPrivateKey(), aliPayConfig.getFormat(),	
                aliPayConfig.getCharset(), aliPayConfig.getAlipayPublicKey(), aliPayConfig.getSignType()); //獲得初始化的AlipayClient	
        AlipayTradePrecreateRequest request = new AlipayTradePrecreateRequest();//創建API對應的request類	
        JSONObject jsonObject = new JSONObject();	
        /**	
         * 訂單號	
         */	
        jsonObject.put("out_trade_no", order_no);	
        /**	
         * 支付金額	
         */	
        jsonObject.put("total_amount", total_fee);	
        jsonObject.put("body", "");	
        /**	
         * 訂單主題	
         */	
        jsonObject.put("subject", "測試支付寶支付");	
        /**	
         * 訂單支付有效時間	
         */	
        jsonObject.put("timeout_express", "90m");	
        request.setBizContent(jsonObject.toString());	
        request.setNotifyUrl(aliPayConfig.getNotifyUrl());	
        AlipayTradePrecreateResponse response = alipayClient.execute(request);	
        System.err.print(response.getBody());	
        //根據response中的結果繼續業務邏輯處理	
        if (response.getMsg().equals("Success")) {	
            String qrcode = response.getQrCode();	
            return qrcode;	
//            return qrcode;	
        }	
        return "請求失敗";	

	
    }	

返回結果:

https://qr.alipay.com/bax06188ujygeuazvcah0008

生成二維碼,這里就不使用代碼生成了

640?wx_fmt=png

下載沙箱支付寶進行掃描:

640?wx_fmt=jpeg

支付寶支付是需要回調的

推薦一個內網穿透工具Ngrok

使用方法:

640?wx_fmt=png

640?wx_fmt=png

把地址copy到項目的支付寶回調地址中即可

GIT地址:https://github.com/sunluomeng/springboot-alipay

有問題的話可以在公眾號內留言,我會第一時間回復

或者回復“內網” 獲得工具

長按識別二維碼,了解更多


640?wx_fmt=jpeg


                                              

                                         

640?wx_fmt=gif


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM