Rumah  >  Artikel  >  Java  >  Bagaimana untuk melaksanakan fungsi pembayaran Java?

Bagaimana untuk melaksanakan fungsi pembayaran Java?

WBOY
WBOYke hadapan
2023-05-08 20:05:332392semak imbas

SDK pembayaran paling mudah dalam sejarah

Mula-mula mari kita lihat API:

package com.joe.pay;

import com.joe.pay.pojo.*;

/**
 * 支付服务接口
 *
 * @author joe
 * @version 2018.06.29 11:32
 */
public interface PayService {
    /**
     * 调用第三方支付
     *
     * @param request 支付参数
     * @return 支付结果
     */
    SysResponse<PayResponse> pay(PayRequest request);

    /**
     * 申请退款
     *
     * @param request 退款请求
     * @return 退款响应
     */
    SysResponse<RefundResponse> refund(RefundRequest request);
}

Seperti yang anda lihat, antara muka PayService menyediakan kaedah pembayaran dan kaedah bayaran balik. Mari kita lihat definisi parameter kaedah pembayaran:

package com.joe.pay.pojo;

import lombok.Data;

/**
 * 支付参数,除了openid外所有参数必填
 *
 * @author joe
 * @version 2018.07.02 10:36
 */
@Data
public class PayRequest implements Request{
    /**
     * 商户网站唯一订单号
     */
    private String outTradeNo;
    /**
     * 对一笔交易的描述信息
     */
    private String body;
    /**
     * 商品的标题/交易标题/订单标题/订单关键字等。
     * <p>
     * 对于微信支付来说需传入应用市场上的APP名字-实际商品名称,天天爱消除-游戏充值。
     */
    private String subject;
    /**
     * 订单生成时间,格式为yyyy-MM-dd HH:mm:ss
     */
    private String createTime;
    /**
     * 支付时长,单位为秒,如果设置300就是五分钟,超过五分钟订单自动取消
     */
    private int expire = 300;
    /**
     * 订单金额,单位为分
     */
    private int totalAmount;
    /**
     * 发起请求的用户的实际IP
     */
    private String ip;
    /**
     * 支付类型:APP、WEB(微信对应公众号,支付宝对应网页支付)
     */
    private String tradeType = "APP";
    /**
     * 用户openid,只有在微信公众号支付时需要
     */
    private String openid;
    /**
     * 附加数据,会与结果一并返回
     */
    private String attach;
}

OK, saya percaya bahawa pelajar yang tidak pernah membuat pembayaran pun boleh memahami parameter di atas dengan jelas dan intuitif Ia adalah beberapa maklumat pesanan asas

Parameter bayaran balik adalah lebih mudah dan memerlukan sedikit maklumat. Dengan ini, kita boleh melihat kod ujian pembayaran:

package com.joe.pay.pojo;

import lombok.Data;
import org.hibernate.validator.constraints.NotEmpty;

import javax.validation.constraints.Size;

/**
 * 退款请求
 *
 * @author joe
 * @version 2018.07.05 17:12
 */
@Data
public class RefundRequest {
    /**
     * 第三方账单ID,与outTradeNo不能同时为空
     */
    private String orderId;
    /**
     * 商户系统订单ID,与orderId不能同时为空
     */
    private String outTradeNo;
    /**
     * 商户退款单号
     * <p>
     * 退款支持单笔交易分多次退款,多次退款需要提交原支付订单的商户订单号和设置不同的退款单号。申请退款总金
     * <p>
     * 额不能超过订单金额。 一笔退款失败后重新提交,请不要更换退款单号,请使用原商户退款单号。
     */
    @NotEmpty(message = "商户退款单号不能为空")
    private String outRefundNo;
    /**
     * 订单总金额,单位为分
     */
    @Size(min = 1)
    private int totalFee;
    /**
     * 退款金额,不能大于订单总金额
     * <p>
     * 注:多次退款总金额不能大于订单总金额
     */
    @Size(min = 1)
    private int refundFee;
    /**
     * 退款原因
     * <p>
     * 可以为空
     */
    private String refundDesc;
}

Atas ialah kandungan terperinci Bagaimana untuk melaksanakan fungsi pembayaran Java?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Artikel ini dikembalikan pada:yisu.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam