女人让男人桶爽30分钟,精品一区二区,在线观看 ,久久久久亚洲精品,免费网站看av片,男女啪啪18禁无遮挡激烈

您好!歡迎來到源碼碼網(wǎng)!

個人開發(fā)者如何使用支付寶沙箱開發(fā)支付功能

  • 軟件教程
  • 來源:源碼碼網(wǎng)
  • 編輯:admin
  • 時間:2020-10-24 19:46
  • 閱讀:845

個人開發(fā)者如何使用支付寶沙箱開發(fā)支付功能?今天源碼碼網(wǎng)小編整理了一些資料,僅供大家學(xué)習(xí)參考:

準(zhǔn)備工作

登錄支付寶的開發(fā)者中心控制臺,如圖:

個人開發(fā)者如何使用支付寶沙箱開發(fā)支付功能

設(shè)置密鑰:

個人開發(fā)者如何使用支付寶沙箱開發(fā)支付功能

個人開發(fā)者如何使用支付寶沙箱開發(fā)支付功能

生成密鑰的工具,如圖:

個人開發(fā)者如何使用支付寶沙箱開發(fā)支付功能

個人開發(fā)者如何使用支付寶沙箱開發(fā)支付功能

下面還有安卓版的支付寶(沙箱版),配合使用。


代碼

接下來我們就可以著手進(jìn)行開發(fā)。文檔很豐富,大家可以根據(jù)自己的情況選用,我這里就是用Spring Boot,采用老版的支付寶服務(wù)端SDK,簡單地實現(xiàn)一下當(dāng)面付、PC網(wǎng)頁掃碼付、支付寶回調(diào)通知接口(無外網(wǎng)環(huán)境下如何測試)、基于AOP的驗簽、基于hibernate-validator的參數(shù)校驗以及全局異常捕獲。因為只是學(xué)習(xí)功能,所以代碼寫的不是那么規(guī)整,而且不涉及數(shù)據(jù)庫。

之前在工作中,支付作為一個基礎(chǔ)服務(wù),是用Dubbo服務(wù)提供對外接口的,隨著后續(xù)的發(fā)展,出現(xiàn)了一系列的問題:

  1. 一開始是沒有消息驗簽的。

  2. 回調(diào)業(yè)務(wù)系統(tǒng)的接口是HTTP,因為支付服務(wù)不可能也用Dubbo Service的方式調(diào)業(yè)務(wù)系統(tǒng)的接口,這得引入多少業(yè)務(wù)系統(tǒng)的jar啊。這樣一來,就很別扭了,你調(diào)我接口Dubbo Service,我調(diào)你接口HTTP請求。

  3. 業(yè)務(wù)系統(tǒng)都要引入支付服務(wù)的jar包。

所以后來改成HTTP服務(wù)了。

先看一下結(jié)構(gòu)圖:

個人開發(fā)者如何使用支付寶沙箱開發(fā)支付功能

pom.xml引入jar包:

<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-web</artifactId>
		</dependency>
		<!-- https://mvnrepository.com/artifact/com.google.guava/guava -->
		<dependency>
			<groupId>com.google.guava</groupId>
			<artifactId>guava</artifactId>
			<version>29.0-jre</version>
		</dependency>
		<!-- https://mvnrepository.com/artifact/com.google.code.gson/gson -->
		<dependency>
			<groupId>com.google.code.gson</groupId>
			<artifactId>gson</artifactId>
		</dependency>
		<!-- https://mvnrepository.com/artifact/com.alipay.sdk/alipay-sdk-java -->
		<dependency>
			<groupId>com.alipay.sdk</groupId>
			<artifactId>alipay-sdk-java</artifactId>
			<version>4.10.145.ALL</version>
		</dependency>
		<!-- https://mvnrepository.com/artifact/org.hibernate.validator/hibernate-validator -->
		<dependency>
			<groupId>org.hibernate.validator</groupId>
			<artifactId>hibernate-validator</artifactId>
		</dependency>
		<!-- https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-starter-aop -->
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-aop</artifactId>
		</dependency>

在實際工作中,微服務(wù)的背景下,要分配給每個業(yè)務(wù)系統(tǒng)一個clientId、一個驗證消息簽名用的密鑰,還有支付渠道ID——支付寶當(dāng)面付、掃碼支付、APP支付,微信小程序支付等等,不同的channelId對應(yīng)不同的處理策略。

我們在工作中支付流程是:

1、用戶發(fā)起支付,業(yè)務(wù)系統(tǒng)搜集訂單信息,通過HTTP請求至支付服務(wù)(這里可以是異步也可以是同步)。

2、支付服務(wù)對消息進(jìn)行驗簽,校驗參數(shù)合法性,入庫,轉(zhuǎn)發(fā)請求至支付寶或微信(這里可以是異步也可以是同步)。

3、如果是同步,則直接將返回的信息回傳給業(yè)務(wù)系統(tǒng),例如PC網(wǎng)頁掃碼支付,支付寶就返回了<form>標(biāo)簽的HTML代碼,業(yè)務(wù)系統(tǒng)的前端頁面要嵌進(jìn)去。如果是當(dāng)面付這種,其實是可以走異步的,按需處理吧。

4、用戶完成支付后,支付寶會有兩個回調(diào)return_url、notify_url告知支付狀態(tài),支付服務(wù)接到結(jié)果后再回調(diào)業(yè)務(wù)系統(tǒng)的接口,回寫支付狀態(tài)。

驗簽的AOP代碼:

image.png

image.png

image.png

我在這里使用了AOP而非Filter,僅僅是因為我不喜歡Filter獲取消息體時,inputStream無法傳入Controller,還要額外處理一下。公司里面倒是用Filter的多,不知道大家在實際工作中是如何處理的。

消息加密方法:

image.png

消息加密的方法有很多種,而且每個客戶分配的密鑰也必須不同,我這里只是為了展示一下功能,采用了Guava的Hashing.sha256方法,實際工作中要按照要求進(jìn)行修改。

HTTP請求除了放在body的json消息體外,還要在header上放入固定的sign,postman請求如圖:

個人開發(fā)者如何使用支付寶沙箱開發(fā)支付功能

下面是PayController:

image.png

image.png

image.png


alipayNotify這個方法我們后面再說。支付渠道應(yīng)該有個枚舉類,這里省略了。

Controller里的pay方法有點像策略模式,根據(jù)不同的支付渠道ID,使用對應(yīng)的處理Service。只是我們這里省下了Context類。

對參數(shù)的校驗,這里放在Controller了,大家可以按照公司的開發(fā)規(guī)范,放在Service也可以。處理類代碼如下:

image.png

image.png


IPayService這個沒什么好說的,就是通用的方法,本例就寫了一個支付接口。

下面是當(dāng)面付的Service,因為是學(xué)習(xí)測試用,所以省略了訂單入庫的代碼:

image.png

image.png

其中AlipayConfig里面就是之前我們在支付寶上配置的公鑰、私鑰、網(wǎng)關(guān)地址、APPID、還有我們的回調(diào)接口,這些信息應(yīng)該從配置文件或者DB里面獲取。image.png

支付寶接收的金額是元,小數(shù)點后兩位,也就是只到分了。而我們在工作中,實際上金額存的都是long型,沒有小數(shù)點,直接到分,這里要寫一個專門的工具類處理一下,本例省略了。

付款碼就是沙箱支付寶APP中,“付款”-“查看數(shù)字”。測試的時候要快,因為這段數(shù)字會變。

下面是PC網(wǎng)頁掃碼付的Service:


image.png

image.png

image.png

這里返回的是一段HTML代碼(微信支付返回的是一個二維碼),我們拿到之后,可以新建一個HTML文件放進(jìn)去,直接掃碼支付。

個人開發(fā)者如何使用支付寶沙箱開發(fā)支付功能

掃碼支付后,支付寶會回調(diào)我們提供的return_url和notify_url接口,告知結(jié)果,但是作為個人開發(fā),如果沒有外網(wǎng)IP,該如何驗證一下呢?

先說一下return_url和notify_url的區(qū)別。

掃碼支付完成后,支付網(wǎng)頁會同步跳轉(zhuǎn)到return_url,展示一些信息,這是個get請求,僅發(fā)一次。

而notify_url是由支付寶后端發(fā)起的post請求,如果我們不返回success消息,支付寶會進(jìn)行重發(fā)。

所以從工作中來說,我們一般是把return_url做一個臨時展示,而在notify_url中進(jìn)行一些邏輯處理,例如回寫訂單狀態(tài)等操作。

在測試開發(fā)中,因為我們沒有外網(wǎng)IP,網(wǎng)頁會彈出一個信息框,告知地址無法訪問,這時候我們就可以把整個url復(fù)制下來,自己在瀏覽器上訪問一下,從而可以驗證我們的回調(diào)接口是否正常。



特別聲明:
1、如無特殊說明,內(nèi)容均為本站原創(chuàng)發(fā)布,轉(zhuǎn)載請注明出處;
2、部分轉(zhuǎn)載文章已注明出處,轉(zhuǎn)載目的為學(xué)習(xí)和交流,如有侵犯,請聯(lián)系客服刪除;
3、編輯非《源碼碼網(wǎng)》的文章均由用戶編輯發(fā)布,不代表本站立場,如涉及侵犯,請聯(lián)系刪除;
全部評論(0)
推薦閱讀
  • CSS 媒體查詢(@media)寬度范圍設(shè)置建議
  • CSS 媒體查詢(@media)寬度范圍設(shè)置建議
  • 語法正確性:代碼使用現(xiàn)代范圍查詢語法(width>=1200pxandwidth<1400px),在支持該語法的瀏覽器(如Chrome104+、Firefox63+、Safari15.4+)中有效。邏輯正確性:當(dāng)視口寬度在1200px(含)至1400px(不含)之間時,body的padding-top會設(shè)置為4px,符合用戶需求。兼容性建議:傳統(tǒng)寫法:為兼容舊版瀏覽器,建議改用:@media?(w
  • 源碼教程
  • 來源:源碼碼網(wǎng)
  • 編輯:源碼碼網(wǎng)
  • 時間:2025-05-06 21:55
  • 閱讀:81
  • VS Code配置Vue自動補(bǔ)全代碼教程
  • VS Code配置Vue自動補(bǔ)全代碼教程
  • 在VSCode中配置Vue開發(fā)的自動補(bǔ)全代碼可以通過以下步驟實現(xiàn),以提高開發(fā)效率:1.安裝必要插件Volar(推薦用于Vue3)針對Vue3和語法,提供更強(qiáng)大的支持。Vetur(適用于Vue2)若項目使用Vue2,安裝Vetur并禁用Volar以避免沖突。VueVSCodeSnippets提供常用代碼片段(如v-for,?v-model等)。2.配置VSCode設(shè)
  • 源碼教程
  • 來源:源碼碼網(wǎng)
  • 編輯:源碼碼網(wǎng)
  • 時間:2025-04-21 21:35
  • 閱讀:189
  • 中文域名有價值嗎?他的優(yōu)缺點是什么?
  • 中文域名有價值嗎?他的優(yōu)缺點是什么?
  • 中文域名(如“例子.中國”或“news.新華網(wǎng)”)作為互聯(lián)網(wǎng)本地化的重要體現(xiàn),近年來在特定場景下展現(xiàn)了獨(dú)特的價值,但也存在爭議和局限性。以下從多個角度分析其價值與挑戰(zhàn):1.核心價值點(1)用戶友好性與品牌本土化降低記憶門檻:對中文用戶而言,母語域名更直觀易記,尤其適合面向非英語用戶的中小企業(yè)、地方機(jī)構(gòu)或中老年群體。例如,“新華網(wǎng).中國”比“xinhuanet.com”更容易被普通用戶記住。強(qiáng)化品牌標(biāo)識:中文域名可直接體現(xiàn)品牌名稱(如“
  • 行業(yè)資訊
  • 來源:源碼碼網(wǎng)
  • 編輯:源碼碼網(wǎng)
  • 時間:2025-04-19 14:08
  • 閱讀:178
聯(lián)系客服
源碼代售 源碼咨詢 素材咨詢 聯(lián)系客服
029-84538663
手機(jī)版

掃一掃進(jìn)手機(jī)版
返回頂部