支付宝支付之APP支付接口 服务器端

官方支付开发文档

回调通知参数文档

服务端SDK

pom

<!-- https://mvnrepository.com/artifact/com.alipay.sdk/alipay-sdk-java -->
<dependency>
	<groupId>com.alipay.sdk</groupId>
	<artifactId>alipay-sdk-java</artifactId>
	<version>3.4.27.ALL</version>
</dependency>

 

JAVA服务端SDK生成APP支付订单信息示例

public String sendAppPayRequest() {
		// 实例化客户端
		AlipayClient alipayClient = new DefaultAlipayClient("https://openapi.alipay.com/gateway.do","app_id","your private_key","json","GBK","alipay_public_key","RSA2");
		// 实例化具体API对应的request类,类名称和接口名称对应,当前调用接口名称:alipay.trade.app.pay
		AlipayTradeAppPayRequest request = new AlipayTradeAppPayRequest();
		// SDK已经封装掉了公共参数,这里只需要传入业务参数。以下方法为sdk的model入参方式(model和biz_content同时存在的情况下取biz_content)。
		AlipayTradeAppPayModel model = new AlipayTradeAppPayModel();
		model.setBody("一个月会员"); // 交易描述 例如:Iphone6 16G,如一笔交易多种商品以拼接形式
		model.setSubject("一个月会员"); // 商品的标题/交易标题/订单标题/订单关键字等。
		model.setOutTradeNo(paymentOrder.getPkId() + ""); // 商户网站唯一订单号
		model.setTimeoutExpress("30m"); // 绝对超时时间,格式为yyyy-MM-dd HH:mm。
		model.setGoodsType("1"); // 商品主类型 :0-虚拟类商品,1-实物类商品
		model.setTotalAmount(centTransformYuan(paymentOrder.getMoney()));
		model.setProductCode("QUICK_MSECURITY_PAY");
		request.setBizModel(model);
		request.setNotifyUrl(AppPayConfig.app_notify_url);// 回调地址 支付宝服务器主动通知商户服务器里指定的页面http/https路径。
		String orderInfo = null;
		
        //这里和普通的接口调用不同,使用的是sdkExecute
        AlipayTradeAppPayResponse response = alipayClient.sdkExecute(request);
        if(response.isSuccess()){
    		System.out.println("调用成功");
    	} else {
    		System.out.println("调用失败");
    	}
        //response.getBody()就是orderString 可以直接给客户端请求,无需再做处理。
        orderInfo = response.getBody();
		logger.info("生成支付宝支付订单信息完成 orderInfo:{}", orderInfo);
		return orderInfo;
	}

JAVA服务端验证异步通知信息参数示例

//获取支付宝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)
boolean flag = AlipaySignature.rsaCheckV1(params, alipaypublicKey, charset,"RSA2")

JAVA服务端验证同步通知信息参数示例

/**
     * 支付宝同步请求通知
     * @param body
     * @param request
     * @param httpServletResponse
     * @throws IOException
     * @throws AlipayApiException
     */
    @NotLoginRestrict
    @ResponseBody
    @RequestMapping(value = "syncNotify", method = {RequestMethod.POST,RequestMethod.GET })
    public void syncNotify(HttpServletRequest request, HttpServletResponse httpServletResponse) throws AlipayApiException {
        // -----------------1.请求参数 支付状态、订单编号--------------------------------------
        // 取得支付状态
        String payStatus = new String(request.getParameter("payStatus"));
        // 订单编号
        String outTradeNo = new String(request.getParameter("outTradeNo"));
        
        
        // 2.支付状态判断是否成功
        if (payStatus == "1") {
        	// 3.成功则根据交易订单编号查询是否成功处理
            // 4.如已成功处理则返回交易成功、未做处理则进行更新交易订单信息
		}
            
    }

请求配置

public class AppPayConfig {

	// 默认网关
	public static final String GATWAY = "https://openapi.alipay.com/gateway.do";
	// 支付宝分配给开发者的应用ID
	public static final String APP_ID = "";
	// 应用私钥(私钥加密请求参数第三方公钥解密)
	public static final String PRIVATE_KEY = "";
	// 仅支持JSON
	public static final String FORMAT = "json";
	// 编码格式
	public static final String CHARSET = "utf-8";
	// 支付宝公钥
	public static final String ALIPAY_PUBLIC_KEY = "";
	// 签名类型
	public static final String SIGN_TYPE = "RSA2";
}

APP支付产品文档

https://docs.open.alipay.com/204/105051

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值