APP调用支付宝客户端发起支付

话不多说,直接上核心代码!!!

另附RSA密钥生成工具地址:
https://docs.open.alipay.com/291/105971/

	/**
	 * 调用支付宝支付
	 */
	private PayResponse getAliPayOrderStr(String orderId,String cookie) throws AlipayApiException {
		//实例化客户端(参数:网关地址、商户appid、商户私钥、格式、编码、支付宝公钥、加密类型),为了取得预付订单信息
        AlipayClient alipayClient = new DefaultAlipayClient(AlipayConfig.URL, AlipayConfig.APPID, AlipayConfig.RSA_PRIVATE_KEY, AlipayConfig.FORMAT, AlipayConfig.CHARSET, 
		        AlipayConfig.ALIPAY_PUBLIC_KEY,AlipayConfig.SIGNTYPE);
	        
        //实例化具体API对应的request类,类名称和接口名称对应,当前调用接口名称:alipay.trade.app.pay 
        AlipayTradeAppPayRequest ali_request = new AlipayTradeAppPayRequest();
	        
        //SDK已经封装掉了公共参数,这里只需要传入业务参数。以下方法为sdk的model入参方式
        AlipayTradeAppPayModel model = new AlipayTradeAppPayModel();
	    //获取订单信息
        MembershipLevel membershipInfo = membershipLevelMapper.selectByPrimaryKey(orderId);
        //业务参数传入,可以传很多,参考API
        //model.setPassbackParams(URLEncoder.encode(request.getBody().toString())); //公用参数(附加数据)
        //model.setBody(orderTest.getBody());//对一笔交易的具体描述信息。如果是多种商品,请将商品描述字符串累加传给body。
        model.setSubject(membershipInfo.getMembershipName());//商品名称
        model.setOutTradeNo(new Date().getTime()+"");//商户订单号(自动生成)
        model.setTimeoutExpress("30m");//交易超时时间
        model.setTotalAmount(membershipInfo.getAdmissionFee()+"");
        model.setProductCode("QUICK_MSECURITY_PAY"); //销售产品码(固定值)
        ali_request.setBizModel(model);  
//        ali_request.setNotifyUrl(AlipayConfig.notify_url);//异步回调地址(后台)
//        ali_request.setReturnUrl(AlipayConfig.return_url);//同步回调地址(APP)
	        
	    // 这里和普通的接口调用不同,使用的是sdkExecute
		AlipayTradeAppPayResponse alipayTradeAppPayResponse = alipayClient.sdkExecute(ali_request); //返回支付宝订单信息(预处理)
		String orderString = null;
		if(alipayTradeAppPayResponse != null ){
			orderString = alipayTradeAppPayResponse.getBody();//就是orderString 可以直接给APP请求,无需再做处理。
		}
		//创建订单
		String uuid = Identities.uuid();
		createEntryOrder(cookie,membershipInfo,uuid);//创建新的商户支付宝订单
		
		PayResponse payResponse = new PayResponse();
		payResponse.setSign(orderString);
		payResponse.setMoney(membershipInfo.getAdmissionFee()+"");
		payResponse.setOrderId(uuid);
		return payResponse;
	}

你可能感兴趣的:(APP调用支付宝客户端发起支付)