免费A级毛片无码专区网站-成人国产精品视频一区二区-啊 日出水了 用力乖乖在线-国产黑色丝袜在线观看下-天天操美女夜夜操美女-日韩网站在线观看中文字幕-AV高清hd片XXX国产-亚洲av中文字字幕乱码综合-搬开女人下面使劲插视频

結(jié)合springboot實(shí)現(xiàn),這里對(duì)接的是easy版本,工具用的是IDEA,WebStrom 支付寶沙箱服務(wù)

一:打開支付寶開發(fā)平臺(tái),登錄,然后點(diǎn)擊控制臺(tái)
https://open.alipay.com/

結(jié)合springboot實(shí)現(xiàn),這里對(duì)接的是easy版本,工具用的是IDEA,WebStrom 支付寶沙箱服務(wù)

文章插圖
二:滾動(dòng)到底部,選著沙箱服務(wù)
結(jié)合springboot實(shí)現(xiàn),這里對(duì)接的是easy版本,工具用的是IDEA,WebStrom 支付寶沙箱服務(wù)

文章插圖
三:獲取到對(duì)接要用的appId和公鑰私鑰
結(jié)合springboot實(shí)現(xiàn),這里對(duì)接的是easy版本,工具用的是IDEA,WebStrom 支付寶沙箱服務(wù)

文章插圖

結(jié)合springboot實(shí)現(xiàn),這里對(duì)接的是easy版本,工具用的是IDEA,WebStrom 支付寶沙箱服務(wù)

文章插圖
四:打開IDEA導(dǎo)入所需的xml文件
<!--支付寶--><!-- https://mvnrepository.com/artifact/com.alipay.sdk/alipay-easysdk --><dependency><groupId>com.alipay.sdk</groupId><artifactId>alipay-easysdk</artifactId><version>2.2.0</version></dependency>五:編寫實(shí)體類:
import lombok.Data;@Datapublic class Alipay {private String traceNo;private String totalAmount;private String subject;private String alipayTraceNo;}六:編寫yaml文件(這里的回調(diào)要用網(wǎng)絡(luò)https服務(wù),這里建議使用花生殼可以完成域名訪問?。?br /> #支付寶配置alipay:appId: ?#私鑰appPrivateKey: ?#公鑰alipayPublicKey: ?#回調(diào)地址notifyUrl: ?七:編寫服務(wù)類:
import com.alipay.easysdk.factory.Factory;import com.alipay.easysdk.kernel.Config;import lombok.Data;import org.springframework.boot.context.properties.ConfigurationProperties;import org.springframework.stereotype.Component;import javax.annotation.PostConstruct;@Data@Component@ConfigurationProperties(prefix = "alipay")public class AplipayConfig {private String appId;private String appPrivateKey;private String alipayPublicKey;private String notifyUrl;@PostConstructpublic void init() {// 設(shè)置參數(shù)(全局只需設(shè)置一次)Config config = new Config();config.protocol = "https";config.gatewayHost = "openapi.alipaydev.com";config.signType = "RSA2";config.appId = this.appId;config.merchantPrivateKey = this.appPrivateKey;config.alipayPublicKey = this.alipayPublicKey;config.notifyUrl = this.notifyUrl;Factory.setOptions(config);System.out.println("=======支付寶SDK初始化成功=======");}}【結(jié)合springboot實(shí)現(xiàn),這里對(duì)接的是easy版本,工具用的是IDEA,WebStrom 支付寶沙箱服務(wù)】八:編寫控制器(寫完控制器建議直接測(cè)試訪問看看可不可以訪問的到,鏈接在第九步)
import com.alipay.easysdk.factory.Factory;import com.alipay.easysdk.payment.page.models.AlipayTradePagePayResponse;import com.rookie.sixthbackstage.entity.Alipay;import com.rookie.sixthbackstage.entity.OrderItem;import com.rookie.sixthbackstage.mapper.OrderItemMapper;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.web.bind.annotation.GetMapping;import org.springframework.web.bind.annotation.PostMapping;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.bind.annotation.RestController;import javax.servlet.http.HttpServletRequest;import java.net.URLEncoder;import java.util.HashMap;import java.util.Map;@RestController@RequestMapping("/alipay")public class AliPayController {@AutowiredOrderItemMapper orderItemMapper;@GetMapping("/alipay") // &subject=xxx&traceNo=xxx&totalAmount=xxxpublic String pay(Alipay aliPay) {AlipayTradePagePayResponse response;try {//發(fā)起API調(diào)用(以創(chuàng)建當(dāng)面付收款二維碼為例)response = Factory.Payment.Page().pay(URLEncoder.encode(aliPay.getSubject(), "UTF-8"), aliPay.getTraceNo(), aliPay.getTotalAmount(), "《這里放支付成功的地址!》");} catch (Exception e) {System.err.println("調(diào)用遭遇異常,原因:" + e.getMessage());throw new RuntimeException(e.getMessage(), e);}return response.getBody();}@PostMapping("/notify")// 注意這里必須是POST接口public String payNotify(HttpServletRequest request) throws Exception {if (request.getParameter("trade_status").equals("TRADE_SUCCESS")) {System.out.println("=========支付寶異步回調(diào)========");Map<String, String> params = new HashMap<>();Map<String, String[]> requestParams = request.getParameterMap();for (String name : requestParams.keySet()) {params.put(name, request.getParameter(name));// System.out.println(name + " = " + request.getParameter(name));}int tradeNo = Integer.parseInt(params.get("out_trade_no"));String gmtPayment = params.get("gmt_payment");String alipayTradeNo = params.get("trade_no");double pay_price= Double.parseDouble(params.get("buyer_pay_amount"));// 支付寶驗(yàn)簽if (Factory.Payment.Common().verifyNotify(params)) {// 驗(yàn)簽通過System.out.println("交易名稱: " + params.get("subject"));System.out.println("交易狀態(tài): " + params.get("trade_status"));System.out.println("支付寶交易憑證號(hào): " + params.get("trade_no"));System.out.println("商戶訂單號(hào): " + params.get("out_trade_no"));System.out.println("交易金額: " + params.get("total_amount"));System.out.println("買家在支付寶唯一id: " + params.get("buyer_id"));System.out.println("買家付款時(shí)間: " + params.get("gmt_payment"));System.out.println("買家付款金額: " + params.get("buyer_pay_amount"));// 支付成功后,修改自己的訂單狀態(tài),這里的方法是我自己寫的,根據(jù)自己實(shí)際情況來做更改OrderItem orderItem=new OrderItem(0,tradeNo,0,pay_price,gmtPayment,"","已支付");orderItemMapper.updateOrderItemById(orderItem);}}return "success";}}

經(jīng)驗(yàn)總結(jié)擴(kuò)展閱讀