maven支付宝支付案例

maven支付宝支付案例

一、配置环境

1.进入支付宝开放平台申请沙箱环境
https://open.alipay.com/platform/home.htm
在这里插入图片描述
2.安装支付宝开放平台开发助手
在这里插入图片描述

3.安装花生壳,内网穿透工具
在这里插入图片描述

4.手机安装客户端调试工具
在这里插入图片描述

二、使用步骤

1.创建个mven项目

2.去支付宝开放平台复制demo

https://opendocs.alipay.com/open/54/106370

@RestController
@RequestMapping("/pay/ali")
public class AliPayController {
    /**
     * APP_ID 应用id
     */
    public final static String APP_ID = "2021000118687712";
    /**
     * 应用私钥
     */
    public final static String APP_PRIVATE_KEY = "";
    /**
     * 编码
     */
    public final static String CHARSET = "UTF-8";
    /**
     * 支付宝公钥
     */
    public final static String ALIPAY_PUBLIC_KEY = "";
    /**
     * 沙箱网关
     */
    public final static String GATEWAY_URL = "https://openapi.alipaydev.com/gateway.do";
    /**
     * 格式化
     */
    public final static String FORMAT = "json";
    /**
     * 签名类型
     */
    public final static String SIGNTYPE = "RSA2";

    /**
     * 获取订单信息
     */
    @GetMapping("/getOrderInfo")
    public void getOrderInfo() {
        //实例化客户端
        AlipayClient alipayClient = new DefaultAlipayClient(GATEWAY_URL, APP_ID, APP_PRIVATE_KEY, FORMAT, CHARSET, ALIPAY_PUBLIC_KEY, SIGNTYPE);
        //实例化具体API对应的request类,类名称和接口名称对应,当前调用接口名称:alipay.trade.app.pay
        AlipayTradeAppPayRequest request = new AlipayTradeAppPayRequest();
        //SDK已经封装掉了公共参数,这里只需要传入业务参数。以下方法为sdk的model入参方式(model和biz_content同时存在的情况下取biz_content)。
        AlipayTradeAppPayModel model = new AlipayTradeAppPayModel();
        model.setBody("我是测试数据");
        model.setSubject("App支付测试Java");
        model.setOutTradeNo("支付单号,可以是中英文数字的组合");
        model.setTimeoutExpress("30m");
        model.setTotalAmount("998");//价格
        model.setProductCode("QUICK_MSECURITY_PAY");
        request.setBizModel(model);
        request.setNotifyUrl("商户外网可以访问的异步地址");
        try {
            //这里和普通的接口调用不同,使用的是sdkExecute
            AlipayTradeAppPayResponse response = alipayClient.sdkExecute(request);
            System.out.println(response.getBody());//就是orderString 可以直接给客户端请求,无需再做处理。
        } catch (AlipayApiException e) {
            e.printStackTrace();
        }
    }

    @RequestMapping("/notify_url")
    public String notify_url(HttpServletRequest request) {

        //获取支付宝POST过来反馈信息
        Map<String, String> params = new HashMap<String, String>();
        Map requestParams = request.getParameterMap();
        for (Iterator iter = requestParams.keySet().iterator(); iter.hasNext(); ) {
            String name = (String) iter.next();
            String[] values = (String[]) requestParams.get(name);
            String valueStr = "";
            for (int i = 0; i < values.length; i++) {
                valueStr = (i == values.length - 1) ? valueStr + values[i]
                        : valueStr + values[i] + ",";
            }
            //乱码解决,这段代码在出现乱码时使用。
            //valueStr = new String(valueStr.getBytes("ISO-8859-1"), "utf-8");
            params.put(name, valueStr);
        }
        //切记alipaypublickey是支付宝的公钥,请去open.alipay.com对应应用下查看。
        //boolean AlipaySignature.rsaCheckV1(Map<String, String> params, String publicKey, String charset, String sign_type)
        try {
            boolean flag = AlipaySignature.rsaCheckV1(params, ALIPAY_PUBLIC_KEY, CHARSET, SIGNTYPE);
            //如果验签失败
            if (!flag) {
                return "fail";
            }
            System.out.println("修改订单成功!");
            return "success";
        } catch (AlipayApiException e) {
            e.printStackTrace();
            return "fail";
        }
    }

    public static void main(String[] args) {
        AliPayController aliPayController = new AliPayController();
        aliPayController.getOrderInfo();
    }
}

3.测试

将控制台打印的sdk放到客户端测试工具小雪糕测试支付,注意参数

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值