springboot項目之小程序企業微信支付

小程序企業微信支付

老樣子這塊東西和推送其實也差不多,都是小程序的後臺接口,爲什麼會涉及到企業微信支付,是因爲有搶紅包的功能,雖然說這個搶紅包的功能可能不是十全十美。但是我覺得有必要記錄一下關於小程序企業支付這一塊,還是貼代碼吧,大多都是代碼有問題的地方會具體解。
1、支付業務代碼


	SortedMap<Object, Object> packageParams = new TreeMap<Object, Object>();
	//微信公衆號的appid
	packageParams.put("mch_appid", MCH_APPID);
	//商務號
	packageParams.put("mchid", MCHID);
	//隨機生成後數字,保證安全性
	packageParams.put("nonce_str", WxPayUtil.create_random_str());
	//生成商戶訂單號
	packageParams.put("partner_trade_no", WxPayUtil.create_random_str());
	// 支付給用戶openid(每一個用戶登錄小程序都會產生一個codeId然後用這個codeId可以換取openId,具體方法在推送的文章已經講過了,就不在多囉嗦了)
	packageParams.put("openid", wxUserBandEntity.getOpenId());
	//是否驗證真實姓名呢
	packageParams.put("check_name", "NO_CHECK");
	//收款用戶姓名
	packageParams.put("re_user_name", mUserId);
	//企業付款金額,單位爲分
	packageParams.put("amount", amount);
	//企業付款操作說明信息。必填。
	packageParams.put("desc", "紅包雨活動");
	//調用接口的機器Ip地址 設爲固定
	packageParams.put("spbill_create_ip", "127.0.0.1");
	logger.info("打印簽名參數" + packageParams.toString());
	//生成簽名
	String signString = WxPayUtil.creatSign("utf-8", packageParams);
	//封裝退款對象
	packageParams.put("sign", signString);
	//將map轉化爲xml
	String reuqestXml = XmlUtil.getRequestXml(packageParams);
	logger.info("xml格式化的參數::----    " + reuqestXml);
	
	try {
		String weixinPost = ClientCustomSSL.doWxPayClient(WX_URL, reuqestXml);
		logger.info("打印返回接口" + weixinPost);
		//7.0 解析返回的xml數據
		CorporatePaymentResultEntity corporatePaymentResultEntity = XmlUtil.xmlToBean(weixinPost, CorporatePaymentResultEntity.class);
		//保存搶紅包的用戶信息
		redEnvelopedRainInfoEntity.setGrabTime(new Date());
		redEnvelopedRainInfoEntity.setMUserId(mUserId);
	
		if ("SUCCESS".equalsIgnoreCase(corporatePaymentResultEntity.getResult_code()) && "SUCCESS".equalsIgnoreCase(corporatePaymentResultEntity.getReturn_code())) {
			//8表示退款成功
			//TODO 執行成功付款後的業務邏輯
			//return successPayMoneyByBankCard(submitMoney,cmms_amt,enterpriceToCustomerByCard,applyId,companyId);
			//這個地方是支付成功之後的後續邏輯,比如保存支付信息,保存支付業務,等等具體看自己的需求
			logger.info("企業支付成功");
		} else {
			//2表示失敗
			//9 表示退款失敗
			//TODO 調用service的方法 ,存儲失敗提現的記錄咯
			//failToPayMoneyByBankCard(enterpriceToCustomerByCard,applyId);
			//這個地方是支付失敗之後的後續邏輯,比如記錄訂單重新發送等等
			logger.info("企業支付失敗");
	
		}
	
	} catch (Exception e) {
		// TODO Auto-generated catch block
		e.printStackTrace();
	
	}
	

以上的代碼是具體的支付業務調用代碼,然後看一下小程序接口文檔–企業支付

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章