摘要:一微信官方文檔微信支付開發(fā)流程公眾號支付首先我們到微信支付的官方文檔的開發(fā)步驟部分查看一下需要的設(shè)置。配置微信公眾賬號支付配置支付類所有方法都在這個類里發(fā)起支付微信公眾賬號支付訂單異步回調(diào)這就是這個所說的行代碼解決微信支付。
文章有不當(dāng)之處,歡迎指正,如果喜歡微信閱讀,你也可以關(guān)注我的微信公眾號:好好學(xué)java,獲取優(yōu)質(zhì)學(xué)習(xí)資源。一、微信官方文檔微信支付開發(fā)流程(公眾號支付)
首先我們到微信支付的官方文檔的開發(fā)步驟部分查看一下需要的設(shè)置。
[圖片上傳失敗...(image-5eb825-1531014079742)]
因為微信支付需要較高的權(quán)限,只有認(rèn)證了得服務(wù)號才有使用微信支付接口的權(quán)限,我們個人很難申請到,所以需要向其他朋友借用賬號。
來到文檔的業(yè)務(wù)流程部分,查看微信支付的流程(我覺得這個還是需要十分仔細(xì)的了解和查看的,這有助于你理解微信開發(fā)的流程)。
然后,訪問微信支付接口是要傳遞的參數(shù)很多,見統(tǒng)一下單
[圖片上傳失敗...(image-df7051-1531014079742)]
通過查看上面的這些微信支付的官方文檔之后,我相信你對這些應(yīng)該有了一定的了解了,但是還是覺得微信支付的開發(fā)十分的麻煩,所以我們接下來使用第三方的sdk來開發(fā)。
二、微信支付第三方sdk開發(fā)(公眾號支付)這個是公眾號支付,我們使用best-pay-sdk,這個SDK使用PayRequest和PayResponse對請求接口和相應(yīng)結(jié)果做了大量的封裝,主要需要動態(tài)傳入的參數(shù)是openid(用戶唯一標(biāo)識)和orderId。接下來我們看看如何開發(fā)。
1、配置//微信公眾賬號支付配置 WxPayH5Config wxPayH5Config = new WxPayH5Config(); wxPayH5Config.setAppId("xxxxx"); wxPayH5Config.setAppSecret("xxxxxxxx"); wxPayH5Config.setMchId("xxxxxx"); wxPayH5Config.setMchKey("xxxxxxx"); wxPayH5Config.setNotifyUrl("http://xxxxx"); //支付類, 所有方法都在這個類里 BestPayServiceImpl bestPayService = new BestPayServiceImpl(); bestPayService.setWxPayH5Config(wxPayH5Config);2、發(fā)起支付
PayRequest payRequest = new PayRequest(); payRequest.setPayTypeEnum(BestPayTypeEnum.WXPAY_H5); payRequest.setOrderId("123456"); payRequest.setOrderName("微信公眾賬號支付訂單"); payRequest.setOrderAmount(0.01); payRequest.setOpenid("openid_xxxxxx"); bestPayService.pay(payRequest);3、異步回調(diào)
bestPayService.asyncNotify();
這就是這個sdk所說的10行代碼解決微信支付。
支付完成后,微信會返回給把支付結(jié)果以一段支付xml的數(shù)據(jù)返回給我們,我們需要將這段數(shù)據(jù)傳遞給異步通知url(notify_url),來完成支付結(jié)果的驗證(驗證簽名,驗證支付狀態(tài)),這兩步SDK都為我們做好了,只需這樣調(diào)用bestPayService.asyncNotify(notifyData);,完成驗證后,我們需要返回給微信這樣一段數(shù)據(jù):
告訴微信已完成驗證,不要再給我們發(fā)送異步通知的請求。
是不是還是不太清楚如何集成到項目?沒關(guān)系,這個還有示例demo,可以更加明了的清楚。
三、demo運行demo網(wǎng)址為:https://github.com/Pay-Group/...
我們最主要的controller放在這里:
@Controller @Slf4j public class PayController { @Autowired private BestPayServiceImpl bestPayService; /** * 發(fā)起支付 */ @GetMapping(value = "/pay") public ModelAndView pay(@RequestParam("openid") String openid, Mapmap) { PayRequest request = new PayRequest(); Random random = new Random(); //支付請求參數(shù) request.setPayTypeEnum(BestPayTypeEnum.WXPAY_H5); request.setOrderId(String.valueOf(random.nextInt(1000000000))); request.setOrderAmount(0.01); request.setOrderName("最好的支付sdk"); request.setOpenid(openid); log.info("【發(fā)起支付】request={}", JsonUtil.toJson(request)); PayResponse payResponse = bestPayService.pay(request); log.info("【發(fā)起支付】response={}", JsonUtil.toJson(payResponse)); map.put("payResponse", payResponse); return new ModelAndView("pay/create", map); } /** * 異步回調(diào) */ @PostMapping(value = "/notify") public ModelAndView notify(@RequestBody String notifyData) throws Exception { log.info("【異步回調(diào)】request={}", notifyData); PayResponse response = bestPayService.asyncNotify(notifyData); log.info("【異步回調(diào)】response={}", JsonUtil.toJson(response)); return new ModelAndView("pay/success"); } }
這個可以自己去下載就可以,下面看一下一下如何運行
項目說明需要在Jdk版本>1.8上運行
本項目采用SpringBoot1.5.1開發(fā)
src/main/java/com/github/lly835 ├── PayDemoApplication.java ├── ServletInitializer.java ├── config │ └── PayConfig.java //支付密鑰配置類 └── controller └── PayController.java //支付調(diào)用運行示例
運行前需要先配置好密鑰, 見PayConfig.java
運行命令
git clone https://github.com/Pay-Group/best-pay-demo cd best-pay-demo mvn clean package java -jar target/*.war
瀏覽器訪問http://127.0.0.1:8080/pay
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/71517.html
摘要:設(shè)計模式可以通過提供經(jīng)過驗證的經(jīng)過驗證的開發(fā)范例來加速開發(fā)過程。將流程作為突破點,并在多個領(lǐng)域工作,包括流量控制,并發(fā),斷路和負(fù)載保護(hù),以保護(hù)服務(wù)穩(wěn)定性。 1. JCSprout(Java核心知識庫) Github地址: https://github.com/crossoverJie/JCSprout star: 12k 介紹: 處于萌芽階段的 Java 核心知識庫。 2....
摘要:本文是淺析微信支付系列文章的第三篇,主要會講一下在開發(fā)前的一些注意事項。淺析微信支付系列已經(jīng)更新兩篇了喲,沒有看過的朋友們可以看一下。開通微信支付需要注冊登陸微信商戶平臺,微信支付相關(guān)的信息都需要在這個平臺上進(jìn)行操作。 本文是【淺析微信支付】系列文章的第三篇,主要會講一下在開發(fā)前的一些注意事項。 淺析微信支付系列已經(jīng)更新兩篇了喲~,沒有看過的朋友們可以看一下。 淺析微信支付:前篇大綱...
摘要:淺析微信支付前篇大綱本文是淺析微信支付系列文章的第一篇,主要會介紹一下為何寫下這個系列以及對于微信支付的一點小經(jīng)驗,與君共勉。下面講一下我是如何去學(xué)習(xí)微信支付的。 淺析微信支付:前篇大綱 本文是【淺析微信支付】系列文章的第一篇,主要會介紹一下為何寫下這個系列以及對于微信支付的一點小經(jīng)驗,與君共勉。 以下會分幾個步驟講一下我學(xué)習(xí)微信支付的過程,也是一部辛酸史,也是希望朋友們不要再次跌進(jìn)...
摘要:小程序仍在不斷更新和完善,舊代碼可能會因不符合新政策,在下次發(fā)布的時候無法正常運行。用戶微信支付后,需要后臺推送消息到服務(wù)器,才能確認(rèn)支付成功。小程序也存在兼容性問題,對待不愿更新微信的用戶,要像對待忠實的用戶一樣,小程序基礎(chǔ)庫版本分布。 小程序沒有跳轉(zhuǎn)公眾號、跳轉(zhuǎn)公眾號圖文素材的能力。除非用戶通過掃描二維碼進(jìn)入小程序的情景,可以顯示關(guān)注公眾號組件。公眾號菜單、公眾號圖文素材可以打開...
摘要:未使用微信如果網(wǎng)頁中未使用微信用戶在微信中打開網(wǎng)站可能會觸發(fā)這個錯誤,目前看來只有忽略。關(guān)于微信支付方法監(jiān)聽事件之后再進(jìn)行下一步操作方法直接使用文檔中的支付代碼,不要使用公眾號支付文檔里面的代碼。 Fundebug并沒有使用微信JS-SDK,然而卻收到了WeixinJSBridge is not defined的報錯: showImg(https://segmentfault.com...
閱讀 1435·2021-11-22 15:24
閱讀 2529·2021-10-11 11:06
閱讀 2337·2021-10-09 09:45
閱讀 2535·2021-09-09 09:33
閱讀 642·2019-08-30 15:53
閱讀 1447·2019-08-30 12:48
閱讀 682·2019-08-29 13:47
閱讀 508·2019-08-26 18:27