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

SpringBoot對(duì)接微信小程序支付功能開(kāi)發(fā)(二,支付回調(diào)功能)

這篇具有很好參考價(jià)值的文章主要介紹了SpringBoot對(duì)接微信小程序支付功能開(kāi)發(fā)(二,支付回調(diào)功能)。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

接著上一篇: SpringBoot對(duì)接微信小程序支付功能開(kāi)發(fā)(一,下單功能)

在上一篇下單功能中我們有傳支付結(jié)果回調(diào)地址。
微信支付回調(diào)接口怎么寫,微信開(kāi)發(fā)專欄,spring boot,微信小程序,java
下面是回調(diào)接口實(shí)現(xiàn)

package com.office.miniapp.controller;


import cn.hutool.core.date.DateTime;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.office.miniapp.constants.ProjectConstant;
import com.office.miniapp.entity.TdOrders;
import com.office.miniapp.entity.TdShops;
import com.office.miniapp.entity.TdWxPay;
import com.office.miniapp.service.TdOrdersService;
import com.office.miniapp.service.TdShopsService;
import com.office.miniapp.service.TdWxPayService;
import com.office.miniapp.utils.HttpClientUtil;
import com.office.miniapp.utils.WxPayUtil;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.*;

import javax.servlet.http.HttpServletRequest;
import java.io.BufferedReader;
import java.io.IOException;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;
import java.util.Random;

/**
 * <p>
 * 支付表 前端控制器
 * </p>
 *
 * @author XQD
 * @since 2022-08-13
 */
@Slf4j
@RestController
@RequestMapping("/wxPay")
public class TdWxPayController extends BaseController {

    @PostMapping("/callback")
    public Object callback(HttpServletRequest request) {
        log.info("【支付回調(diào)】");
        System.out.println("Wechatpay-Timestamp:" + request.getHeader("Wechatpay-Timestamp"));
        System.out.println("Wechatpay-Nonce:" + request.getHeader("Wechatpay-Nonce"));
        System.out.println("Wechatpay-Signature:" + request.getHeader("Wechatpay-Signature"));
        System.out.println("Wechatpay-Serial:" + request.getHeader("Wechatpay-Serial"));
        Map result = new HashMap();
        result.put("code", "FAIL");
        try {
            StringBuilder signStr = new StringBuilder();
            // 應(yīng)答時(shí)間戳\n
            signStr.append(request.getHeaders("Wechatpay-Timestamp")).append("\n");
            // 應(yīng)答隨機(jī)串\n
            signStr.append(request.getHeaders("Wechatpay-Nonce")).append("\n");
            // 應(yīng)答報(bào)文主體\n
            BufferedReader br = request.getReader();
            String str = null;
            StringBuilder builder = new StringBuilder();
            while ((str = br.readLine()) != null) {
                builder.append(str);
            }
            System.out.println("支付應(yīng)答報(bào)文主體:" + builder);
            signStr.append(builder.toString()).append("\n");
            // 第一步:驗(yàn)證簽名
            if (WxPayUtil.signVerify(request.getHeader("Wechatpay-Serial"), signStr.toString(), request.getHeader("Wechatpay-Signature"))) {
                result.put("message", "sign error");
                return result;
            }
            // 第二步:解密密文
            String decryptOrder = WxPayUtil.decryptOrder(builder.toString());
            System.out.println("解密后支付信息:" + decryptOrder);
            JSONObject jsonObject = JSON.parseObject(decryptOrder);
            //String transactionId = jsonObject.getString("transaction_id");
            //String appid= jsonObject.getString("appid");
            //String successTime = new DateTime(jsonObject.getString("success_time")).toString();
            //JSONObject jsonPayer = JSON.parseObject(jsonObject.getString("payer"));
            //String openid= jsonPayer.getString("openid");
            //解密后的支付信息存入數(shù)據(jù)庫(kù)...
            //第三步:驗(yàn)證訂單,解密后的訂單信息和自己數(shù)據(jù)庫(kù)中的訂單信息進(jìn)行比對(duì)
            //金額對(duì)比  orders.getAmount()為數(shù)據(jù)庫(kù)中的訂單金額
            if (orders.getAmount().equals(jsonAmout.getInteger("total"))) {
                if ("SUCCESS".equals(jsonObject.getString("trade_state"))) {
                     // 支付成功...
                     //根據(jù)支付信息查詢已存的訂單信息,進(jìn)行狀態(tài)改變等操作,根據(jù)業(yè)務(wù)操作
                    }
               }
            result.put("code", "SUCCESS");
            result.put("message", "成功");
        } catch (IOException e) {
            e.printStackTrace();
        }
        return result;
    }
}

根據(jù)官網(wǎng)給的參數(shù)進(jìn)行業(yè)務(wù)處理

微信支付回調(diào)接口怎么寫,微信開(kāi)發(fā)專欄,spring boot,微信小程序,java

這就完成了,微信支付回調(diào)你的地址,并且把支付的信息傳進(jìn)來(lái),剩下就要根據(jù)自己業(yè)務(wù)進(jìn)行操作。
注意:
1,驗(yàn)證簽名和解密的操作在上一篇下單功能的文章中的WxPayUtil 中
2,這個(gè)地址必須為線上地址,https前綴的域名+/wxPay/callback。文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-668972.html

到了這里,關(guān)于SpringBoot對(duì)接微信小程序支付功能開(kāi)發(fā)(二,支付回調(diào)功能)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

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

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包