国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

使用binary-wang開發(fā)微信小程序的登錄和微信支付

這篇具有很好參考價值的文章主要介紹了使用binary-wang開發(fā)微信小程序的登錄和微信支付。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。


貼個官網(wǎng),建議down下來他的源碼,對照著開發(fā)更方便,因為備注很詳盡。

其它不多廢話了,我直接寫步驟了。


1. Maven引入

時間2023年5月,目前最新版本是4.5.0

		<dependency>
            <groupId>com.github.binarywang</groupId>
            <artifactId>weixin-java-miniapp</artifactId>
            <version>4.5.0</version>
        </dependency>
        <dependency>
      		<groupId>com.github.binarywang</groupId>
      		<artifactId>weixin-java-pay</artifactId>
      		<version>4.5.0</version>
    	</dependency>

2. 微信小程序參數(shù)配置

考慮到多微信小程序和微信支付多商戶的問題,我們的配置將會是以集合的形式存在

2.1 propertie格式
wx.mini.configs[0].appid:wx0123948575
wx.mini.configs[0].secret:4023c4f58d704d9
wx.mini.configs[1].appid:wx01239485jo
wx.mini.configs[1].secret:4023c4f58d

每組的配置項以類似下標的形式區(qū)分開

2.2 yaml格式
wx:
  mini:
    	login:
    		configs:
      			- appid: wx02792790
        		  secret: 4023c4f58d704d9
        pay:
        	configs:
        		- mchId: xxxxx

" - " 后面表示一組數(shù)據(jù), 登錄和支付的必傳參數(shù),自己補全吧
yaml的格式應該是有問題的,各位自己注意下就好

3. 類

3.1 Properties對應的對象
@Data
@ConfigurationProperties(prefix = "wx.mini.login")
public class WxMpLoginProperties {
    private List<Config> configs;
    @Data
    public static class Config {
        /**
         * 設置微信小程序的appid
         */
        private String appid;

        /**
         * 設置微信小程序的Secret
         */
        private String secret;

        /**
         * 設置微信小程序消息服務器配置的token
         */
        private String token;

        /**
         * 設置微信小程序消息服務器配置的EncodingAESKey
         */
        private String aesKey;

        /**
         * 消息格式,XML或者JSON
         */
        private String msgDataFormat;
    }
}
@Data
@ConfigurationProperties(prefix = "wx.mini.pay")
public class WxMpPayProperties {
private List<Config> configs;
@Data
public static class Config {
    private String mchId;
    private String wxApiV3Key;
    private String notify_url;
    /**
     * 證書-序列號
     * 1D685BC1A16B008C7714E3A255C9408607D1738C
     */
    private String mchSerialNo;
    /**
     * https://api.mch.weixin.qq.com/v3/certificates
     */
    private String v3CertUrl;
    /**
     * 證書所在服務器位置 如 /payment/yfyxs/apiclient_key.pem
     */
    private String keyPath;
    /**
     * apiclient_key.pem證書文件的內容
     */
    private String apiClientKey;
    /**
     * apiclient_cert.pem證書文件的內容
     */
    private String apiClientCert;
    /**
     * 商戶簽名使用 商戶私鑰 ,證書序列號包含在請求HTTP頭部的  Authorization的serial_no
     * 微信支付簽名使用微信支付平臺私鑰,證書序列號包含在應答HTTP頭部的Wechatpay-Serial
     * 商戶上送敏感信息時使用微信支付平臺公鑰加密,證書序列號包含在請求HTTP頭部的 Wechatpay-Serial
     */
}
}

這2個類編寫完之后@ConfigurationProperties會報錯,但是先不要管它。

3.2 WxMpConfig
@Slf4j
@Configuration
@EnableConfigurationProperties({WxMpLoginProperties.class,WxMpPayProperties.class})
public class WxMpConfig {

    private final WxMpLoginProperties loginProperties;
	private final WxMpPayProperties payProperties;
    public WxMpConfig(WxMpLoginProperties loginProperties, WxMpPayProperties payProperties) {
        this.loginProperties = loginProperties;
        this.payProperties = payProperties;
    }

    /**
     * 與微信小程序有關的總service
     * @return WxMaService
     */
    @Bean
    public WxMaService wxMaService() {
        List<WxMpLoginProperties.Config> configs = this.loginProperties.getConfigs();
        if (configs == null) {
            throw new ApiException("沒有微信小程序配置啊");
        }
        WxMaServiceImpl maService = new WxMaServiceImpl();
        Map<String, WxMaDefaultConfigImpl> multiConfigs = configs.stream()
                .map(cof -> {
                    WxMaDefaultConfigImpl config = new WxMaDefaultConfigImpl();
                    config.setAppid(cof.getAppid());
                    config.setSecret(cof.getSecret());
                    config.setToken(cof.getToken());
                    config.setAesKey(cof.getAesKey());
                    config.setMsgDataFormat(cof.getMsgDataFormat());
                    return config;
                })
                .collect(Collectors.toMap(WxMaDefaultConfigImpl::getAppid, Function.identity(), (o, n) -> o));
        maService.setMultiConfigs(multiConfigs);
        return maService;
    }

  @Bean
    public WxPayService wxPayService() {
        List<WxMpPayProperties.Config> configs = this.payProperties.getConfigs();
        if (configs == null) {
            throw new ApiException("沒有微信小程序配置啊");
        }
      	WxPayService wxPayService = new WxPayServiceImpl();
        this.payProperties.getConfigs().stream().forEach(merchant -> {
      		WxPayConfig payConfig = new WxPayConfig();
      		payConfig.setMchId(merchant.getMchId());
      		payConfig.setCertSerialNo(merchant.getMchSerialNo());
     	 	payConfig.setApiV3Key(merchant.getWxApiV3Key());
      		payConfig.setPrivateKeyContent(merchant.getApiClientKey().getBytes());
      		payConfig.setPrivateCertContent(merchant.getApiClientCert().getBytes());
      		wxPayService.addConfig(merchant.getMchId(), payConfig);
      		// 可以指定是否使用沙箱環(huán)境
      		payConfig.setUseSandboxEnv(false);
    });
    return wxPayService;
    }
    
}

到目前為止我們的準備工作就做完了。剩下的就是業(yè)務邏輯代碼的開發(fā)了。

4. 業(yè)務代碼編寫

4.1 登錄的code2session demo

具體的完整的微信登錄流程不會寫在這里,我們只是看下如果使用binary-wang給我們封裝的接口(再強調下,只是demo所以整體無關規(guī)范問題,在此service層不面向接口編程)

@Service
@Slf4j
public class WeiXinLoginDemoService {
	@Autowired
    private WxMaService wxMaService;
    
	public void weixinCode2SessionDemo(String appId) {
		if (!wxMaService.switchover(appId)) {
            throw new ApiException(String.format("未找到對應appid=[%s]的配置,請核		實!", appId));
        }
        //code 2 session
		WxMaJscode2SessionResult jscode2SessionResult = wxMaService.getUserService().getSessionInfo(wcp.getCode());
		log.info("result:{}", jscode2SessionResult.toString());
	}
}

4.2 微信支付demo

具體的微信支付邏輯這里也不會寫,只是告訴你用binary-wang做微信支付的話我們需要準備什么東西。

@Service
@Slf4j
public class WeiXinPayDemoService {
	@Autowired
    private WxPayService wxPayService;
    /**
    * 統(tǒng)一下單demo
    **/
	public void weixinUnifiedOrderV3Demo(String mchId) {
		if (!wxPayService.switchover(mchId)) {
            throw new ApiException(String.format("未找到對應mchid=[%s]的配置,請核		實!", mchId));
        }
        //調用統(tǒng)一下單接口,WxPayUnifiedOrderV3Request具體需要的邏輯參數(shù)需要參考官方文檔,但是我們閱讀unifiedOrderV3這個接口的源碼
        //就能知道appId mchId 以及url都不需要我們傳入,我們只要傳具體的業(yè)務參數(shù)即可比如貴司生成的orderId
		WxPayUnifiedOrderV3Result wxPayUnifiedOrderV3Result = wxPayService.unifiedOrderV3(TradeTypeEnum.H5, new WxPayUnifiedOrderV3Request());
		log.info("result:{}", wxPayUnifiedOrderV3Result.toString());
	}
}

以上差不多了。有錯誤的話,感謝指出。有問題的話,共同討論。文章來源地址http://www.zghlxwxcb.cn/news/detail-444226.html

到了這里,關于使用binary-wang開發(fā)微信小程序的登錄和微信支付的文章就介紹完了。如果您還想了解更多內容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。如若轉載,請注明出處: 如若內容造成侵權/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領支付寶紅包贊助服務器費用

相關文章

  • 小白開發(fā)微信小程序48--退出登錄頁面實現(xiàn)
  • uniapp開發(fā)微信小程序的登錄功能實現(xiàn)

    小程序的登錄是必不可少的,那我們如何去實現(xiàn)這個功能呢 1.首先我們是需要去 調用uni.getUserProfile()去獲取用戶信息的 ,得到一些登錄接口相關的一些數(shù)據(jù) 2.再去 調用uni.login()這個api去獲取code字段 3.結合以上這兩個api獲取的一些數(shù)據(jù)組合成接口所需要的參數(shù),然后通過調

    2024年02月15日
    瀏覽(19)
  • uniapp開發(fā)微信小程序登錄獲取openid并解決code無效問題:invalid code

    uniapp開發(fā)微信小程序登錄獲取openid并解決code無效問題:invalid code

    場景: 實現(xiàn)微信支付的時候需要獲取到openid,openid需要在登錄的時候用登錄返回的code獲取 1.登錄獲取 code ,用code獲取 openid 解決方法: 報錯code無效:invalid code: 1.先在微信小程序管理平臺找到APPID,這里的 https://mp.weixin.qq.com/wxamp/devprofile ; 2.檢查項目的project.config.json的APP

    2024年02月11日
    瀏覽(23)
  • 使用Appium 測試微信小程序和微信公眾號方法

    使用Appium 測試微信小程序和微信公眾號方法

    由于騰訊系QQ、微信等都是基于騰訊自研X5內核,不是google原生webview,需要打開TBS內核Inspector調試功能才能用Chrome瀏覽器查看頁面元素,并實現(xiàn)Appium自動化測試微信小程序和微信公眾號。 前提條件Appium環(huán)境搭建,這里不多說了,可查閱Appium環(huán)境搭建文章。 因夜神等模擬器是

    2024年02月13日
    瀏覽(24)
  • 如何使用vscode開發(fā)微信小程序

    如何使用vscode開發(fā)微信小程序

    在vscode安裝以下幾個插件,再將微信小程序的項目導入即可進行小程序開發(fā)。vscode只能編輯代碼,效果還需要在微信開發(fā)者工具中查看。插件安裝完成之后,文件就能和微信小程序運行效果同步,調試等還需要在微信開發(fā)者工具中進行。

    2024年02月07日
    瀏覽(15)
  • uniapp開發(fā)微信小程序使用高德地圖

    uniapp? 官方文檔?地圖組件控制??地圖組件 高德地圖key需要公司去申請,之后自己在下載高德地圖微信小程序插件 下好的js文件放在項目中,之后在vue項目中的main.js文件中全局注入 頁面引入并使用

    2024年02月15日
    瀏覽(88)
  • 使用base64加密解密的多種方法:包含pc端和微信小程序

    1、pc端 Window 對象 Window 對象表示瀏覽器中打開的窗口。 平常在開發(fā)pc端瀏覽器的時候。如果要加密或者解密成為一個 base-64 編碼的字符串。我們都可以使用Window 對象里的對象方法: atob() 解碼一個 base-64 編碼的字符串。 btoa() 創(chuàng)建一個 base-64 編碼的字符串 我們可以直接在瀏覽

    2024年02月15日
    瀏覽(22)
  • 開發(fā)微信小程序使用原生開發(fā)還是uniapp開發(fā)

    開發(fā)微信小程序使用原生開發(fā)還是uniapp開發(fā)

    大家好,我是蔓云科技的小蔓(寫代碼的平面師)。 今天給大家?guī)硪婚T知識普及課,開發(fā)小程序使用原生還是uniapp,如果你想開發(fā)一款小程序,通過這個視頻你會得到答案。 相信大家對小程序都不陌生吧,在生活的方方面面中都有它的身影,比如:社區(qū)團購、商城購物、

    2024年02月17日
    瀏覽(90)
  • 如何使用uni-app開發(fā)微信小程序

    如何使用uni-app開發(fā)微信小程序

    uni-app 是一個使用 Vue.js 開發(fā)所有前端應用的框架。開發(fā)者編寫一套代碼,可發(fā)布到 iOS、Android、H5、以及各種小程序(微信/支付寶/百度/頭條/QQ/釘釘/淘寶)、快應用等多個平臺。 詳細的 uni-app 官方文檔,請翻閱https://uniapp.dcloud.net.cn uni-app 官方推薦使用 HBuilderX 來開發(fā) uni-ap

    2024年02月10日
    瀏覽(27)
  • 使用uniapp開發(fā)微信小程序的微信支付流程

    在我們做一些購物車的結算功能時是一定會有支付功能的,那我們如何去做微信支付這個功能呢,首先我們先要理清思路,并且要了解到接口需要哪些數(shù)據(jù)以及會返回哪些數(shù)據(jù) 注意:一定要先看接口文檔! 創(chuàng)建訂單。 ○ 請求創(chuàng)建訂單的 API 接口:把(訂單金額、收貨地址、

    2024年02月09日
    瀏覽(95)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領取紅包,優(yōu)惠每天領

二維碼1

領取紅包

二維碼2

領紅包