真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

java支付功能怎么實現(xiàn)

這篇文章主要講解了“java支付功能怎么實現(xiàn)”,文中的講解內(nèi)容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“java支付功能怎么實現(xiàn)”吧!

10年的羅平網(wǎng)站建設(shè)經(jīng)驗,針對設(shè)計、前端、開發(fā)、售后、文案、推廣等六對一服務(wù),響應(yīng)快,48小時及時工作處理。營銷型網(wǎng)站的優(yōu)勢是能夠根據(jù)用戶設(shè)備顯示端的尺寸不同,自動調(diào)整羅平建站的顯示方式,使網(wǎng)站能夠適用不同顯示終端,在瀏覽器中調(diào)整網(wǎng)站的寬度,無論在任何一種瀏覽器上瀏覽網(wǎng)站,都能展現(xiàn)優(yōu)雅布局與設(shè)計,從而大程度地提升瀏覽體驗。成都創(chuàng)新互聯(lián)公司從事“羅平網(wǎng)站設(shè)計”,“羅平網(wǎng)站推廣”以來,每個客戶項目都認真落實執(zhí)行。

史上最簡單的支付SDK

首先我們先看下API:

package com.joe.pay;

import com.joe.pay.pojo.*;

/**
 * 支付服務(wù)接口
 *
 * @author joe
 * @version 2018.06.29 11:32
 */
public interface PayService {
    /**
     * 調(diào)用第三方支付
     *
     * @param request 支付參數(shù)
     * @return 支付結(jié)果
     */
    SysResponse pay(PayRequest request);

    /**
     * 申請退款
     *
     * @param request 退款請求
     * @return 退款響應(yīng)
     */
    SysResponse refund(RefundRequest request);
}
   

可以看到,PayService接口提供了支付方法和退款方法,下面我們看下支付方法的參數(shù)定義:

package com.joe.pay.pojo;

import lombok.Data;

/**
 * 支付參數(shù),除了openid外所有參數(shù)必填
 *
 * @author joe
 * @version 2018.07.02 10:36
 */
@Data
public class PayRequest implements Request{
    /**
     * 商戶網(wǎng)站唯一訂單號
     */
    private String outTradeNo;
    /**
     * 對一筆交易的描述信息
     */
    private String body;
    /**
     * 商品的標題/交易標題/訂單標題/訂單關(guān)鍵字等。
     * 

     * 對于微信支付來說需傳入應(yīng)用市場上的APP名字-實際商品名稱,天天愛消除-游戲充值。      */     private String subject;     /**      * 訂單生成時間,格式為yyyy-MM-dd HH:mm:ss      */     private String createTime;     /**      * 支付時長,單位為秒,如果設(shè)置300就是五分鐘,超過五分鐘訂單自動取消      */     private int expire = 300;     /**      * 訂單金額,單位為分      */     private int totalAmount;     /**      * 發(fā)起請求的用戶的實際IP      */     private String ip;     /**      * 支付類型:APP、WEB(微信對應(yīng)公眾號,支付寶對應(yīng)網(wǎng)頁支付)      */     private String tradeType = "APP";     /**      * 用戶openid,只有在微信公眾號支付時需要      */     private String openid;     /**      * 附加數(shù)據(jù),會與結(jié)果一并返回      */     private String attach; }

   

OK,上邊的參數(shù)相信就算沒做過支付的同學也能很清晰直觀的看懂這些信息,都是一些訂單基本信息,下面我們來看退款參數(shù)的定義:

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;
    /**
     * 商戶系統(tǒng)訂單ID,與orderId不能同時為空
     */
    private String outTradeNo;
    /**
     * 商戶退款單號
     * 

     * 退款支持單筆交易分多次退款,多次退款需要提交原支付訂單的商戶訂單號和設(shè)置不同的退款單號。申請退款總金      * 

     * 額不能超過訂單金額。 一筆退款失敗后重新提交,請不要更換退款單號,請使用原商戶退款單號。      */     @NotEmpty(message = "商戶退款單號不能為空")     private String outRefundNo;     /**      * 訂單總金額,單位為分      */     @Size(min = 1)     private int totalFee;     /**      * 退款金額,不能大于訂單總金額      * 

     * 注:多次退款總金額不能大于訂單總金額      */     @Size(min = 1)     private int refundFee;     /**      * 退款原因      * 

     * 可以為空      */     private String refundDesc; }

   

退款參數(shù)就更簡單了,需要的信息也是相當少。有了這些之后我們就可以來看支付測試代碼了:

package com.joe.pay;

import com.joe.pay.pojo.*;
import com.joe.pay.pojo.prop.PayProp;
import com.joe.utils.common.DateUtil;
import com.joe.utils.common.Tools;
import org.junit.Assert;
import org.junit.Before;
import org.junit.Test;

/**
 * 支付測試
 *
 * @author joe
 * @version 2018.07.02 14:38
 */
public class PayServiceTest {
    /**
     * 微信配置
     */
    private PayProp wxProp;
    private PayProp aliProp;
    /**
     * 微信服務(wù)
     */
    private PayService wxPayService;
    private PayService aliPayService;

    @Before
    public void init() {
        //配置微信支付,需要將下列參數(shù)替換為自己的參數(shù)
        wxProp = PayProp.builder()
                .appid("123123123")
                .notifyUrl("http://www.baidu.com")
                .useWxPay()
                .certInput(null)
                .key("123123123")
                .mchId("123123123123")
                .password("123123123123")
                .build();

        wxPayService = PayServiceFactory.getInstance(wxProp);

        String privateKey = "MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQDEuQvaAad8+PAUVLeh9tqNsWNDCiAXEal4krM0E1"
                + "4oHiUvzOT8Xf5BYZeMmiA+G+Z4iT2dP6bNRBIth7W5COh51v8TDf4dYxqV3Jw7jyQF2K/p74izFXm96yDXz3cMotRdDW3JdcC"
                + "ME2tgrlSjJxN26qPCrHh+OL9Y/yqJGhsAHKlaIYQ4S8F9B3rIPMAv6MbTuHFrFXkwuJqesupTwUqzmPgriy/2Au9ZApnpVCex"
                + "sKIkjMwpmOe3FxaQ9U6271NA9jmzbg7ge5BlfblQL3lIkEQdoqPPKrfLbO3djN1ORn1vhKrIAUhIQAqWKDVdz9dGxrIZckGOe"
                + "8iuUGOs8D4VAgMBAAECggEBAIzyuJcekE5uXjVy7Y9SOw1Ch5hE/PEKao5FLbimF9ROpP42o+pdvgpCTj8jPu7BNsQuMMM2E+"
                + "EGYK/WiFFnHIlYIbIZWHTdyPKO+jGCQaEevAu04BDP1kZI7WMy9m1LTTTOplat06OJVmoS/flXyg5t159ny31EU3UEfgl1dts"
                + "AayODTTRkRUjYXYXSOSDLZjlxSntNS9seklPgEeinc2umrdzJuzciKspK1XLqpCvc+1WA2NlTkoW6Hc9aj61ySCOTkF/3OVjj"
                + "G58jiUMzSeRsG3gq3PEJfhw2FUiJxn04ZRId74tIKrjKV4Np97WdmFEkpTEUTqvSp3AUYm/wJ5ECgYEA9pzaM+dd7vacLbgkA"
                + "e3N8dfyJggSJWm5TpangYIfQBXp+TiLhHFP6lhpCrs/qoxdsmM6LtzEkchvAQOA1kgNgRhm4s1pihKc7aAqK9YxE2tT5Z8XXd"
                + "9SXdLoHXe7GW3Q2ivouMV+J31mhOwSlogR5q0AztXJCl0FH9HHehMyAC8CgYEAzDYJOTOiHm5xjAJ337dtVe1zGUUBwv58B2O"
                + "wZXp129frnOepM+B663aMbrh+IUzVSQWqufGKUkLwjbRmwjrs9Lw4nFYtNGYVp1wnFawVOXy532tthYG5m3i/KcXjIRwnNHew"
                + "9Xh5q9rDc30yPKMps+Uijrp7ktQIRfh+QbOi8PsCgYBQccXz3GsVwjgb6c9FGc9uLmT85vEUZzJdYmNtqYaMHxndhAZuw4+v/"
                + "/rz1zTjazo9MIUQOE+exmT/Tac/Pu24yL73CM5+jafHE9HtzsbfcMlDQ+wZYPm7RUsWIbJUjy/rmxsk+rc2Jn/EqEU/+U7tkk"
                + "2LKs2TpdhAEuwg9BYBXQKBgQCKAZKmJ7DOJBF0b06X0ByBz6DTWQFhyB4F2GcjjWkNE5TVSvHcbz5i1pD9Wo1S79vMJ5pDY2r"
                + "5QOfUvDAd3zi4BGO1s7+FA+BqZCq9yLfnS9VJmg5ABXVsDmQSVPu0KpSMLr9WhP34FjW0XM2QkSvjuVxrXLeaeNTGhLK+sCnT"
                + "9QKBgHfd3hhLWjO4zh99B+PRYFgpnJa9S5E1zzoejZVIJhK5q60KLV5n/HMxuHTGRZxpbfcH4/44d3Yz7ieccmCiPtqxFYUwP"
                + "W0JukNWDL2tOzTSZ5ABAwqorV3bM67mLUSt0O5dL4YtSBJ2J3F6joO1fTZEcUCybO/A5J4wTZDOV1AR";

        //配置支付寶支付,需要將下列參數(shù)替換為自己的參數(shù)
        aliProp = PayProp.builder()
                .appid("123123123")
                .notifyUrl("http://www.baidu.com")
                .useAliPay()
                .publicKey("123123")
                .privateKey(privateKey)
                .build();
        aliPayService = PayServiceFactory.getInstance(aliProp);
    }

    /**
     * 測試微信支付
     */
    @Test
    public void doWxPay() {
        doPay(wxPayService);
    }

    /**
     * 測試支付寶支付
     */
    @Test
    public void doAliPay() {
        doPay(aliPayService);
    }

    /**
     * 測試微信退款
     * 

     * 注意:該測試當前通不過,因為沒有提供正確的證書,若想要測試通過則需要在配置文件中提供正確的微信證書和單號      */     @Test     public void doWxRefund() {         doRefund(wxPayService);     }     /**      * 測試支付寶退款      * 

     * 注意:該測試當前通不過,若想要測試通過則需要提供正確的單號      */     @Test     public void doAliRefund() {         doRefund(aliPayService);     }     /**      * 校驗響應(yīng)      *      * @param response 響應(yīng)      */     private void check(SysResponse response) {         Assert.assertTrue(response.isSuccess());         Assert.assertTrue(response.getData().isSuccess());     }     /**      * 發(fā)起支付請求      *      * @param service service      */     private void doPay(PayService service) {         SysResponse response = service.pay(buildPay());         check(response);     }     /**      * 發(fā)起退款請求      *      * @param service service      */     private void doRefund(PayService service) {         SysResponse response = service.refund(buildRefund());         System.out.println("結(jié)果是:" + response);     }     /**      * 構(gòu)建一個支付訂單      *      * @return 支付訂單      */     private PayRequest buildPay() {         PayRequest payRequest = new PayRequest();         payRequest.setOutTradeNo(Tools.createUUID());         payRequest.setBody("天天愛消除-游戲充值");         payRequest.setSubject("天天愛消除-游戲充值");         payRequest.setCreateTime(DateUtil.getFormatDate(DateUtil.BASE));         payRequest.setTotalAmount(100 * 10);         payRequest.setIp("106.120.141.226");         return payRequest;     }     /**      * 構(gòu)建一個退款訂單      *      * @return 退款訂單      */     private RefundRequest buildRefund() {         RefundRequest request = new RefundRequest();         request.setOutTradeNo("123456");         request.setOutRefundNo("123456");         request.setTotalFee(100 * 10);         request.setRefundFee(100);         return request;     } }

感謝各位的閱讀,以上就是“java支付功能怎么實現(xiàn)”的內(nèi)容了,經(jīng)過本文的學習后,相信大家對java支付功能怎么實現(xiàn)這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是創(chuàng)新互聯(lián),小編將為大家推送更多相關(guān)知識點的文章,歡迎關(guān)注!


本文題目:java支付功能怎么實現(xiàn)
文章來源:http://weahome.cn/article/iggsge.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部