支付宝-电脑网站支付初长成

前言

企业制定金额生成微信二维码集成完后,客户需要再集成支付宝,经过差文档及看博客终于实现出来(支付宝生成指定金额二维码,需要在“蚂蚁金服开放平台”注册账号,并且开通“电脑网站支付”详情请参阅官方文档

电脑网站支付(普通公钥方式)

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. 签名生成(普通公钥方式/公钥证书方式)签名生成方式
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值