阿里云支付宝沙箱支付

阿里云支付宝沙箱支付

项目文件是maven项目
第一步pom.xml引入jar包

<!--    沙箱支付依赖-->
    <dependency>
      <groupId>com.alipay.sdk</groupId>
      <artifactId>alipay-sdk-java</artifactId>
      <version>4.20.0.ALL</version>
    </dependency>

创建一个 AlipayConfig 类

package com.alipay.config;

import java.io.FileWriter;
import java.io.IOException;
/* *
 *类名:AlipayConfig
 *功能:基础配置类
 *详细:设置帐户有关信息及返回路径
 *修改日期:2017-04-05
 *说明:
 *以下代码只是为了方便商户测试而提供的样例代码,商户可以根据自己网站的需要,按照技术文档编写,并非一定要使用该代码。
 *该代码仅供学习和研究支付宝接口使用,只是提供一个参考。
 */

public class AlipayConfig {
	
//↓↓↓↓↓↓↓↓↓↓请在这里配置您的基本信息↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓

	// 应用ID,您的APPID,收款账号既是您的APPID对应支付宝账号
	public static String app_id = "";
	
	// 商户私钥,您的PKCS8格式RSA2私钥
    public static String merchant_private_key = "";
	
	// 支付宝公钥,查看地址:https://openhome.alipay.com/platform/keyManage.htm 对应APPID下的支付宝公钥。
    public static String alipay_public_key = "";

	// 服务器异步通知页面路径  需http://格式的完整路径,不能加?id=123这类自定义参数,必须外网可以正常访问
	
	//支付成功后跳转的地址 改为自己修改订单状态的地址。
	// public static String return_url = "http://本机ip地址:8081/order/updateOrderStatus";
	public static String notify_url = "http://工程公网访问地址/alipay.trade.page.pay-JAVA-UTF-8/notify_url.jsp";

	// 页面跳转同步通知页面路径 需http://格式的完整路径,不能加?id=123这类自定义参数,必须外网可以正常访问
	public static String return_url = "http://工程公网访问地址/alipay.trade.page.pay-JAVA-UTF-8/return_url.jsp";

	// 签名方式
	public static String sign_type = "RSA2";
	
	// 字符编码格式
	public static String charset = "utf-8";
	
	// 支付宝网关
	public static String gatewayUrl = "https://openapi.alipay.com/gateway.do";
	
	// 支付宝网关
	public static String log_path = "C:\\";


//↑↑↑↑↑↑↑↑↑↑请在这里配置您的基本信息↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑

    /** 
     * 写日志,方便测试(看网站需求,也可以改成把记录存入数据库)
     * @param sWord 要写入日志里的文本内容
     */
    public static void logResult(String sWord) {
        FileWriter writer = null;
        try {
            writer = new FileWriter(log_path + "alipay_log_" + System.currentTimeMillis()+".txt");
            writer.write(sWord);
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            if (writer != null) {
                try {
                    writer.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }
    }
}

购物车页面的提交按钮,当点击提交,页面跳转到ShopcarController类,沙箱支付页面去,付完钱到OrderController类中。

submit();

    function submit() {
        // 获取全部的商品信息进行提交到后台
        $.ajax({
            url: "/shopcar/shopCarBalance",
            data: {
                bookid: bookid,
                ids: ids,
                totalcount: total_count,
                totalprice: total_price,
                cname: addName,
                phone: addPhone,
                address: addAddrerss,
                express: express
            },
            dataType: "json",
            type: "post",
            success: function (addOrderObj) {
                if (addOrderObj.code == 1) {
                     location.href="/shopcar/pay?orderno="+addOrderObj.data.ordernumber+"&money="+addOrderObj.data.totalprice;
                } else {
                    layer.msg("提交订单失败!", {icon: 5})
                }
            }
        })
    }
}

ShopcarController类,沙箱支付页面



/**
 * 确认订单
 */
@RestController
@RequestMapping("/shopcar")
public class ShopcarController {
    @Autowired
    private ShopcarMapper shopcarMapper;

    @Autowired
    private AddressMapper addressMapper;

    @Autowired
    private BookMapper bookMapper;

    @Autowired
    private OrderMapper orderMapper;

    @Autowired
    private Order_detailMapper orderDetailMapper;

    @Autowired
    private BooktypeMapper bookTypeMapper;
    /**
     * 支付的时候添加到订单里面
     * @param order
     * @param session
     * @return
//     */
//    shopCarBalance
    @RequestMapping("shopCarBalance")
    public CommonResult shopCarBalance(Order order, HttpSession session, Integer bookid, String ids,String count, String price){

        User user = (User) session.getAttribute("user");
        order.setPname(user.getName()); //下单人的姓名
        order.setUid(user.getUid()); //下单人的编号
        long orderNo = new Date().getTime();
        order.setOrderNumber(orderNo+""+user.getUid()); //订单号
        order.setStatus(5); //订单状态 5 未支付
        order.setPdate(new Date()); //下单时间
        System.out.println(order);
        orderMapper.insert(order);

        System.out.println("~~~~~~~~~~~~bookid==========="+bookid);
        if (bookid !=null ){
            //添加一本书
            Book book = bookMapper.selectByPrimaryKey(bookid); //根据图书id查询图书信息
            Order_detail orderDetail = new Order_detail();
            orderDetail.setBookid(book.getBookid());
            orderDetail.setBookname(book.getBookname());
            orderDetail.setAuthor(book.getBookauthor());
            orderDetail.setPublisher(book.getBookpublisher());
            Integer count1 = Integer.valueOf(count);
            orderDetail.setCount(count1);
            orderDetail.setPrice(price);
            Booktype booktype = bookTypeMapper.selectByPrimaryKey(book.getTypeid());
            orderDetail.setBooktype(booktype.getBookType());

            orderDetail.setUrl(book.getUrl());
            orderDetail.setPid(order.getPid());
            orderDetail.setStatus(0);
            orderDetailMapper.insert(orderDetail);
        }

//        添加多个
        System.out.println("~~~~~~~~~ids~~~~~"+ids);
        if (ids!=null && ids!=""){
            String[] split = ids.split(",");//多个bookid
            for (String s:split){
                System.out.println(s);
            }
            System.out.println(split+"===========");
            for (String s:split){
                Integer ss = Integer.valueOf(s);
                Shopcar shopcar = shopcarMapper.selectByPrimaryKey(ss);
                Book book = bookMapper.selectByPrimaryKey(shopcar.getBookid());

                System.out.println(book);
                Order_detail orderDetail = new Order_detail();
                orderDetail.setBookid(book.getBookid());
                orderDetail.setBookname(book.getBookname());
                orderDetail.setAuthor(book.getBookauthor());
                orderDetail.setPublisher(book.getBookpublisher());
                orderDetail.setCount(shopcar.getCount());
                orderDetail.setPrice(shopcar.getPrice());
                Booktype booktype = bookTypeMapper.selectByPrimaryKey(book.getTypeid());
                orderDetail.setBooktype(booktype.getBookType());

                orderDetail.setUrl(book.getUrl());
                orderDetail.setPid(order.getPid());
                orderDetail.setStatus(0);
                orderDetailMapper.insert(orderDetail);
            }

        }
        return new CommonResult(1,"添加订单成功",order);
    }
/*沙箱*/
    @RequestMapping("pay")
    public String pay(String orderno, String money, HttpServletRequest request){
        try {
            //获得初始化的AlipayClient
            AlipayClient alipayClient = new DefaultAlipayClient(AlipayConfig.gatewayUrl, AlipayConfig.app_id, AlipayConfig.merchant_private_key, "json", AlipayConfig.charset, AlipayConfig.alipay_public_key, AlipayConfig.sign_type);

            //设置请求参数
            AlipayTradePagePayRequest alipayRequest = new AlipayTradePagePayRequest();
            alipayRequest.setReturnUrl(AlipayConfig.return_url);
            alipayRequest.setNotifyUrl(AlipayConfig.notify_url);

            //商户订单号,商户网站订单系统中唯一订单号,必填
            String out_trade_no = new String(orderno.getBytes("ISO-8859-1"), "UTF-8");
            //付款金额,必填
            String total_amount = new String(money.getBytes("ISO-8859-1"), "UTF-8");
            //订单名称,必填
            String subject = new String("qy143图书管理".getBytes("ISO-8859-1"), "UTF-8");
            //商品描述,可空

            alipayRequest.setBizContent("{\"out_trade_no\":\"" + out_trade_no + "\","
                    + "\"total_amount\":\"" + total_amount + "\","
                    + "\"subject\":\"" + subject + "\","
                    + "\"product_code\":\"FAST_INSTANT_TRADE_PAY\"}");

            //若想给BizContent增加其他可选请求参数,以增加自定义超时时间参数timeout_express来举例说明
            //alipayRequest.setBizContent("{\"out_trade_no\":\""+ out_trade_no +"\","
            //		+ "\"total_amount\":\""+ total_amount +"\","
            //		+ "\"subject\":\""+ subject +"\","
            //		+ "\"body\":\""+ body +"\","
            //		+ "\"timeout_express\":\"10m\","
            //		+ "\"product_code\":\"FAST_INSTANT_TRADE_PAY\"}");
            //请求参数可查阅【电脑网站支付的API文档-alipay.trade.page.pay-请求参数】章节

            //请求
            String result = alipayClient.pageExecute(alipayRequest).getBody();
            return result;
        }catch (Exception e){
            e.printStackTrace();
        }
        return null;
        //输出

    }

}

        

OrderController 用户支付成功跳转这个页面

@Controller
@RequestMapping("order")
public class OrderController {
    @Autowired
    ShopcarMapper shopcarMapper;

    @Autowired
    private OrderMapper orderMapper;

    @Autowired
    Order_detailMapper order_detailMapper;
    @RequestMapping("updateOrderStatus")
    public String updateOrderStatus(String out_trade_no){
        System.out.println(out_trade_no);
        Order order=new Order();
        order.setOrderNumber(out_trade_no);
        order.setStatus(0);
        orderMapper.updateOrderStatus(order);
        return "redirect:/gereng.jsp";
    }
}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值