支付宝支付

package com.chart.web.controller.aliPay;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;



@Controller
public class AlipayController {

    private AlipayUtil alipayUtil;

    @Autowired
    public void setAlipayUtil(AlipayUtil alipayUtil) {
        this.alipayUtil = alipayUtil;
    }

    @GetMapping("/")
    public String index(){
        return "index";
    }

    @PostMapping("/create")
    public String create(String id, String price, String title, Model model){
        String pay = alipayUtil.pay(id, price, title);
        model.addAttribute("qrCode", pay);
        return "pay";
    }

    @GetMapping("/return")
    public String returnNotice(String out_trade_no, Model model){
        String query = alipayUtil.query(out_trade_no);
        model.addAttribute("query", query);
        return "query";
    }

    @PostMapping("/notify")
    public void notifyUrl(String trade_no, String total_amount, String trade_status){
        System.err.println("支付宝订单编号:" + trade_no + ", 订单金额: " + total_amount + ",订单状态:" + trade_status);
    }
}

package com.chart.web.controller.aliPay;

import com.alibaba.fastjson.JSONObject;
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.request.AlipayTradePrecreateRequest;
import com.alipay.api.request.AlipayTradeQueryRequest;
import com.alipay.api.response.AlipayTradePagePayResponse;
import com.alipay.api.response.AlipayTradePrecreateResponse;
import com.alipay.api.response.AlipayTradeQueryResponse;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;



@Component
public class AlipayUtil {

    @Value("${alipay.appid}")
    private String appid;
    @Value("${alipay.url}")
    private String url;
    @Value("${alipay.privateKey}")
    private String privateKey;
    @Value("${alipay.publicKey}")
    private String publicKey;
    @Value("${alipay.alipayPublicKey}")
    private String alipayPublicKey;
    @Value("${alipay.notifyUrl}")
    private String notifyUrl;
    @Value("${alipay.returnUrl}")
    private String returnUrl;

    public String pay(String id, String price, String title ){
        AlipayClient alipayClient = new DefaultAlipayClient(url,appid,privateKey,"json","GBK", alipayPublicKey,"RSA2");
        AlipayTradePrecreateRequest request = new AlipayTradePrecreateRequest();
        //        设置支付成功后的回调地址,改地址必须外网可以访问到才行,所以调试该步骤必须要在外网环境,否则会出现支付成功但是却不能回调
//        request.setNotifyUrl("");

        JSONObject bizContent = new JSONObject();
        bizContent.put("out_trade_no", id);
        bizContent.put("total_amount", price);
        bizContent.put("subject", title);
//        bizContent.put("product_code", "FAST_INSTANT_TRADE_PAY");
        bizContent.put("product_code", "FACE_TO_FACE_PAYMENT");
        request.setBizContent(bizContent.toString());
//        request.setBizContent("{" +
//                "\"product_code\":\"FACE_TO_FACE_PAYMENT\"" +
//                "\"out_trade_no\":\"20150320010101001\"," +
//                "\"seller_id\":\"2088102146225135\"," +
//                "\"total_amount\":88.88," +
//                "\"discountable_amount\":8.88," +
//                "\"subject\":\"Iphone6 16G\"," +
//                "      \"goods_detail\":[{" +
//                "        \"goods_id\":\"apple-01\"," +
//                "\"goods_name\":\"ipad\"," +
//                "\"quantity\":1," +
//                "\"price\":2000," +
//                "\"goods_category\":\"34543238\"," +
//                "\"categories_tree\":\"124868003|126232002|126252004\"," +
//                "\"body\":\"特价手机\"," +
//                "\"show_url\":\"http://www.alipay.com/xxx.jpg\"" +
//                "        }]," +
//                "\"body\":\"Iphone6 16G\"," +
//                "\"operator_id\":\"yx_001\"," +
//                "\"store_id\":\"NJ_001\"," +
//                "\"disable_pay_channels\":\"pcredit,moneyFund,debitCardExpress\"," +
//                "\"enable_pay_channels\":\"pcredit,moneyFund,debitCardExpress\"," +
//                "\"terminal_id\":\"NJ_T_001\"," +
//                "\"extend_params\":{" +
//                "\"sys_service_provider_id\":\"2088511833207846\"," +
//                "\"industry_reflux_info\":\"{\\\\\\\"scene_code\\\\\\\":\\\\\\\"metro_tradeorder\\\\\\\",\\\\\\\"channel\\\\\\\":\\\\\\\"xxxx\\\\\\\",\\\\\\\"scene_data\\\\\\\":{\\\\\\\"asset_name\\\\\\\":\\\\\\\"ALIPAY\\\\\\\"}}\"," +
//                "\"card_type\":\"S0JP0000\"" +
//                "    }," +
//                "\"timeout_express\":\"90m\"," +
//                "\"settle_info\":{" +
//                "        \"settle_detail_infos\":[{" +
//                "          \"trans_in_type\":\"cardSerialNo\"," +
//                "\"trans_in\":\"A0001\"," +
//                "\"summary_dimension\":\"A0001\"," +
//                "\"settle_entity_id\":\"2088xxxxx;ST_0001\"," +
//                "\"settle_entity_type\":\"SecondMerchant、Store\"," +
//                "\"amount\":0.1" +
//                "          }]" +
//                "    }," +
//                "\"merchant_order_no\":\"20161008001\"," +
//                "\"business_params\":\"{\\\"data\\\":\\\"123\\\"}\"," +
//                "\"qr_code_timeout_express\":\"90m\"" +
//                "  }");
        AlipayTradePrecreateResponse response;
        try {
            response = alipayClient.execute(request);
            if(response.isSuccess()){
                System.out.println("调用成功");
                String qr_code = response.getQrCode();
                // 需要修改为运行机器上的路径
                String filePath = String.format("d:/qr-%s.png",
                        response.getOutTradeNo());
                System.out.println("filePath:" + filePath);
                return qr_code;
            } else {
                System.out.println("调用失败");
                return"调用失败";
            }
        } catch (AlipayApiException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
            return"调用异常";
        }
    }

//    public String pay(String id, String price, String title ){
//        AlipayClient alipayClient = new DefaultAlipayClient(url,appid,privateKey,"json","UTf-8",alipayPublicKey,"RSA2");
//        AlipayTradePagePayRequest request = new AlipayTradePagePayRequest();
//        request.setNotifyUrl(notifyUrl);
//        request.setReturnUrl(returnUrl);
//        JSONObject bizContent = new JSONObject();
//        bizContent.put("out_trade_no", id);
//        bizContent.put("total_amount", price);
//        bizContent.put("subject", title);
        bizContent.put("product_code", "FAST_INSTANT_TRADE_PAY");
//        bizContent.put("product_code", "FACE_TO_FACE_PAYMENT");
//
//        request.setBizContent(bizContent.toString());
//        AlipayTradePagePayResponse response = null;
//        String form = null;
//        try {
//            response = alipayClient.execute(request);
//            form = response.getBody();
//        } catch (AlipayApiException e) {
//            e.printStackTrace();
//        }
//        System.out.println(response);
//        if(response.isSuccess()){
//            System.out.println("调用成功");
//        } else {
//            System.out.println("调用失败");
//        }
//        return form;
//    }

    public String query(String id){
        AlipayClient alipayClient = new DefaultAlipayClient(url,appid,privateKey,"json","UTf-8",publicKey,"RSA2");
        AlipayTradeQueryRequest request = new AlipayTradeQueryRequest();
        JSONObject bizContent = new JSONObject();
        bizContent.put("out_trade_no", id);
        request.setBizContent(bizContent.toString());
        AlipayTradeQueryResponse response = null;
        String body = null;
        try {
            response = alipayClient.execute(request);
            body = response.getBody();
        } catch (AlipayApiException e) {
            e.printStackTrace();
        }
        if(response.isSuccess()){
            System.out.println("调用成功");
        } else {
            System.out.println("调用失败");
        }
        return body;
    }
}

在这里插入代码片
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值