支付寶-電腦網站支付初長成

前言

企業制定金額生成微信二維碼集成完後,客戶需要再集成支付寶,經過差文檔及看博客終於實現出來(支付寶生成指定金額二維碼,需要在“螞蟻金服開放平臺”註冊賬號,並且開通“電腦網站支付”詳情請參閱官方文檔

電腦網站支付(普通公鑰方式)

package com.litte.util;

import com.alipay.api.AlipayApiException;
import com.alipay.api.AlipayClient;
import com.alipay.api.DefaultAlipayClient;
import com.alipay.api.request.AlipayTradePagePayRequest;
import com.alipay.api.response.AlipayTradePagePayResponse;

import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Random;

/**
 * Created by Administrator on 2018/12/22.
 */
public class TestJxx {
    // 支付寶網關,aliPayUrl
    private static final String ALIPAY_URL = "https://openapi.alipay.com/gateway.do";
    // 商戶分配的appid
    private static final String ALIPAY_APPID = "APPID";
    // 應用私鑰
    private static final String APP_PRIVATE_KEY = "APP_PRIVATE_KEY ";
    // 應用公鑰
    private static final String APP_PUBLIC_KEY = "APP_PUBLIC_KEY ";
    // 支付寶公鑰
    private static final String ALIPAY_PUBLIC_KEY = "ALIPAY_PUBLIC_KEY ";
    // 請求使用的編碼格式,如utf-8,gbk,gb2312等
    private static final String CHARSET = "UTF-8";

    public static void main(String[] args) throws AlipayApiException {
        String form = "";
        try {
            AlipayClient alipayClient = new DefaultAlipayClient(ALIPAY_URL, ALIPAY_APPID, APP_PRIVATE_KEY, "json", CHARSET, ALIPAY_PUBLIC_KEY, "RSA2");
            //創建API對應的request
            AlipayTradePagePayRequest alipayRequest = new AlipayTradePagePayRequest();
            alipayRequest.setNotifyUrl("https://www.xxx.cn/wxPay/aliPayReceiptBack");
            alipayRequest.setBizContent("{" +
                    "    \"out_trade_no\":" + getOrderIdByTime() + "," +
                    "    \"product_code\":\"FAST_INSTANT_TRADE_PAY\"," +
                    "    \"total_amount\":\"0.01\"," +
                    "    \"subject\":\"支付寶支付\"," +
                    "    \"qr_pay_mode\":\"4\"," +
                    "    \"qrcode_width\":120," +
                    "    \"extend_params\":{" +
                    "    \"sys_service_provider_id\":\"sys_service_provider_id\"" +
                    "    }" +
                    "  }");//填充業務參數
            // 調用SDK生成表單
            AlipayTradePagePayResponse alipayTradePagePayResponse = alipayClient.pageExecute(alipayRequest);
            if(alipayTradePagePayResponse.isSuccess()){
            	// 返回的form表單
                form = alipayTradePagePayResponse.getBody();
            }else{
                form = "";
            }
            System.out.println("------"+form);
        } catch (AlipayApiException e) {
            e.printStackTrace();
        }

    }

    public static String getOrderIdByTime() {
        SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmss");
        String newDate = sdf.format(new Date());
        String result = "";
        Random random = new Random();
        for (int i = 0; i < 3; i++) {
            result += random.nextInt(10);
        }
        return newDate + result;
    }
}

電腦網站支付(公鑰證書方式)

package com.tbd.bigdipper.util;

import com.alipay.api.AlipayApiException;
import com.alipay.api.CertAlipayRequest;
import com.alipay.api.DefaultAlipayClient;
import com.alipay.api.request.AlipayTradePagePayRequest;
import com.alipay.api.response.AlipayTradePagePayResponse;

/**
 * Created by Administrator on 2019/8/20.
 */
public class TextJkx {
    // 支付寶網關,aliPayUrl
    private static final String ALIPAY_URL = "https://openapi.alipay.com/gateway.do";
    // 商戶分配的appid
    private static final String ALIPAY_APPID = "ALIPAY_APPID";
    // 應用私鑰
    private static final String PRIVATE_KEY = "PRIVATE_KEY";
    // 應用公鑰證書路徑
    private static final String APP_CERT_PATH = "APP_CERT_PATH";
    // 支付寶公鑰證書文件路徑
    private static final String ALIPAY_CERT_PATH = "ALIPAY_CERT_PATH";
    // 支付寶CA根證書文件路徑
    private static final String ALIPAY_ROOT_CERT_PATH = "ALIPAY_ROOT_CERT_PATH";
    // 請求使用的編碼格式,如utf-8,gbk,gb2312等
    private static final String CHARSET = "UTF-8";
    // 簽名類型
    private static final String SIGN_TYPE = "RSA2";
    // 支付寶掃碼支付回執請求接口
    private static final String ALIPAYBACKURL = "ALIPAYBACKURL";


    public static void main(String[] args) throws AlipayApiException {
        // 報文請求時自動進行簽名
        DefaultAlipayClient alipayClient = aliPaySignature();
        //創建API對應的request
        AlipayTradePagePayRequest alipayRequest = new AlipayTradePagePayRequest();
        // 交易成功後,支付寶通過 post 請求 notifyUrl(商戶入參傳入),返回異步通知參數。
        alipayRequest.setNotifyUrl(ALIPAYBACKURL);
        alipayRequest.setBizContent("{" +
                "    \"out_trade_no\":" + "20190825155036" + "," +
                "    \"product_code\":\"FAST_INSTANT_TRADE_PAY\"," +
                "    \"total_amount\":\"1\"," +
                "    \"subject\":\"支付寶支付\"" +
                "  }");//填充業務參數
        // 調用SDK生成表單
        AlipayTradePagePayResponse response = alipayClient.pageExecute(alipayRequest);
        String form = response.getBody();
        System.out.println("===form===" + form);
    }

    /**
     * @Description: 電腦網站支付報文請求時自動進行簽名
     * @Author: Mr.Jkx
     * @date: 2019/9/3 9:29
     */
    public static DefaultAlipayClient aliPaySignature() throws AlipayApiException {
        CertAlipayRequest certAlipayRequest = new CertAlipayRequest();
        certAlipayRequest.setServerUrl(ALIPAY_URL);
        certAlipayRequest.setAppId(ALIPAY_APPID);
        certAlipayRequest.setPrivateKey(PRIVATE_KEY);
        certAlipayRequest.setFormat("json");
        certAlipayRequest.setCharset(CHARSET);
        certAlipayRequest.setSignType(SIGN_TYPE);
        certAlipayRequest.setCertPath(APP_CERT_PATH);
        certAlipayRequest.setAlipayPublicCertPath(ALIPAY_CERT_PATH);
        certAlipayRequest.setRootCertPath(ALIPAY_ROOT_CERT_PATH);
        DefaultAlipayClient alipayClient = new DefaultAlipayClient(certAlipayRequest);
        return alipayClient;
    }
}

蟲洞

  1. 祕鑰配置參閱官方文檔配置祕鑰
  2. 電腦網站支付 Demo(包括JAVA,PHP,.NET)下載
  3. 簽名生成(普通公鑰方式/公鑰證書方式)簽名生成方式
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章