支付宝线下门店扫码支付开发

转载 2016年06月01日 15:50:24

支付宝扫码支付

一.开发前准备

https://doc.open.alipay.com/doc2/detail.htm?spm=0.0.0.0.B6xA20&treeId=26&articleId=103239&docType=1

1.开通支付宝企业号

2.签约认证

3.创建应用,审核通过。

4.上传应用公钥。

二.开发demo从支付宝官网下载


alipay-sdk-Java-ALL20150604113758-source.jar

alipay-sdk-java-ALL20150604113758.jar


/**
	 * 调用支付宝扫码支付二维码生成
	 * 
	 * @return
	 */
	public String aliQr() {
		String orderId = httpServletRequest.getParameter("orderId");
		String out_trade_no = getTradeNo();
		String total_amount = httpServletRequest.getParameter("total_amount");
		String subject = "";
		String companyId = getCompanyInfo().getCompanyId();
		Order o = null;
		try {
			o = orderService.getOrderById(Integer.parseInt(orderId));
			subject = CommonCompanyName(o.getCompanyId(), o.getSubCompanyId())
					+ "的商品" + total_amount + "元";
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		AlipayTradePrecreateResponse response = qrPay(out_trade_no,
				total_amount, subject, companyId, orderId, o.getSubCompanyId());
		if (null != response && response.isSuccess()) {
			ResponseWriteUtil.writeHTML("{\"code\":\"" + response.getQrCode()
					+ "\"," + "\"outTradeNo\":\"" + response.getOutTradeNo()
					+ "\"}");
			// 生成自定义二维码图片
			// String path = "/qrcode/" + companyId + "/" + out_trade_no +
			// ".png";
			// String qrCodePath = ServletActionContext.getServletContext()
			// .getRealPath(path);
			// ZXingQrCode.createQrCodeImg(300, 300, response.getQrCode(),
			// qrCodePath);
			// 保存二维码值
			HashMap<String, Object> map = new HashMap<String, Object>();
			map.put("orderId", orderId);
			map.put("aliqrcodeUrl", response.getQrCode());
			// map.put("aliqrcodeUrl", ConfigUtil.SYS_BASE_URL + path);
			orderService.updateAliQrCodeByOrderId(map);
		} else {
			ResponseWriteUtil.writeHTML("{\"code\":\"0\"}");// 不存在
		}
		return null;
	}

	public String CommonCompanyName(String companyId, String subCompanyId) {
		Seller seller = sellerService.findSellerByCompanyId(companyId);
		String commonMsg = "";
		SubCompany subCompany = null;
		if (StringUtils.isNotBlank(subCompanyId)) {
			subCompany = subCompanyService.fetchSubCompanyBySid(subCompanyId);
		}
		if (subCompany == null) {// 主店
			commonMsg = seller.getCompanyName();
		} else {// 分店
			commonMsg = subCompany.getCompanyShortName();
		}
		return commonMsg;
	}

	/**
	 * 是否配置了支付宝二维码支付
	 * 
	 * @return
	 */
	public String isExistByAliPayQrCode() {
		String companyId = httpServletRequest.getParameter("companyId");
		String subCompanyId = httpServletRequest.getParameter("subCompanyId");
		HashMap<String, Object> map2 = new HashMap<String, Object>();
		map2.put("companyId", companyId);
		map2.put("subCompanyId", subCompanyId);
		ALIPayConfigure aliPayConfigure = aliPayConfigureService
				.selectAppId(map2);
		if (aliPayConfigure != null) {
			ResponseWriteUtil.writeHTML("{\"code\":\"" + 1 + "\"}");
		} else {
			ResponseWriteUtil.writeHTML("{\"code\":\"" + 0 + "\"}");
		}
		return null;
	}

/**
	 * 回调通知处理
	 * 
	 * @return
	 */
	public String notifyMsgByAliPay() {
		String orderId = httpServletRequest.getParameter("orderId");
		String totalAmount = httpServletRequest.getParameter("totalAmount");
		String outTradeNo = httpServletRequest.getParameter("outTradeNo");
		System.out.println("订单号:" + orderId + ",订单金额:" + totalAmount
				+ ",商户交易号:" + outTradeNo);
		System.out.println("支付宝异步回调通知:");
		// 判断付款是否成功,已成功则不再记录付款信息
		if (orderService.ifOrderPaid(Integer.parseInt(orderId)) > 0) {
			log.info("付款已成功,不再记录付款信息");
			ResponseWriteUtil.writeHTML("success");
			return null;
		}
		aliPayService.aliPayFinsh(Integer.parseInt(orderId), totalAmount,
				outTradeNo);
		System.out.println("系统订单业务处理完成");
		ResponseWriteUtil.writeHTML("success");// 告诉支付宝我已处理,不需要重复发异步通知
		System.out.println("支付宝异步回调通知成功结束");
		return null;
	}

js页面

//*************start*********aliPayByQr******************************
//是否配置了支付宝扫码
function isExistByAliPayQrCode(){
	var companyId=$("#companyId").val();
	var subCompanyId=$("#subCompanyId").val();
	if(subCompanyId==null||subCompanyId=='null'||subCompanyId==undefined){
		subCompanyId="";
	}
	$.ajax({
		url : '<%=basePath%>/aliPay!isExistByAliPayQrCode.action?companyId='+companyId+'&subCompanyId='+subCompanyId,
		async : false,
		type : "post",
		dataType : "json",
		success : function(result) {
			 if(result.code!='0'){
			 	$("#aliQrBtn").show();
			 }else{
			 	$("#aliQrBtn").hide();
			 	layer.msg("商家没有配置支付宝扫码支付!");
			 }
		}
	});
}
	
function aliQrClick(){
	var total_amount=$("#paymentAmount").val();
	var orderId=$("#myorderId").val();
	//check
	var paySize=$(".payMoneyC").length;
	var ptypeNum=$(".ptype:checked").length;
	var paySum=0;
	if(ptypeNum<=0){
		layer.msg("支付方式至少选择一个!");
		return;
	}
	if(ptypeNum!=1){
		layer.msg("支付方式只能是支付宝扫码支付!");
		return;
	}
	var companyId=$("#companyId").val();
	var subCompanyId=$("#subCompanyId").val();
	if(subCompanyId==null||subCompanyId=='null'||subCompanyId==undefined){
		subCompanyId="";
	}
	$.ajax({
		url : '<%=basePath%>/aliPay!aliQr.action',
		async : false,
		type : "post",
		dataType : "json",
		data:{"total_amount":total_amount,"orderId":orderId},
		success : function(result) {
			if(result.code!='0'){
				$("#aliQrBtn").hide();
				$("#outputALIQr").show();
				<span style="color:#ff0000;">jQuery('#outputALIQr').qrcode({width:200,height:200,text:result.code});//</span><span style="color: rgb(255, 0, 0); font-family: Arial, Helvetica, sans-serif;">js</span><span style="color: rgb(255, 0, 0); font-family: Arial, Helvetica, sans-serif;">二维码生成</span><span style="color:#ff0000;">
</span>				window.setInterval(finshAliQrPay, 8000); 
			}else{
				layer.msg("支付宝二维码生成出错!");
			}
		}
	});
}

function qrQueryRetry(out_trade_no){
	$.ajax({
		url : '<%=basePath%>/aliPay!aliQueryRetry.action',
		async : false,
		type : "post",
		dataType : "json",
		data:{"out_trade_no":out_trade_no},
		success : function(result) {
		}
	});
}
var aliNum=0;
function finshAliQrPay(){
 	var orderId=$("#myorderId").val();
	$.ajax({
		url : '<%=basePath%>/aliPay!<span style="color:#cc0000;background-color: rgb(255, 255, 255);">notifyOrderCashFinshed</span>.action?orderId='+orderId,
		async : false,
		type : "post",
		dataType : "json",
		data:$('#finishForm').serialize(),
		success : function(result) {
			 if(result.code!='0'){
			 	layer.msg("支付宝扫码支付交易成功,订单3秒后即将关闭!");
			 	window.setTimeout(function(){
			 	//关闭弹出窗之前,跳转到其他页面
			    parent.window.location.href="<%=path%>/"+result.redirectUrl;
			    closeLayerDialog();
			 	},3000); 
			 }else{
			    aliNum=aliNum+1;
			 	$("#aliQrPayNotifyNum").val(aliNum);
			 }
		}
	});
}

//*************end*******aliPayByQr********************************

5.aliPayService 实现类

import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
import java.util.List;

import javax.annotation.Resource;

import org.apache.log4j.Logger;
import org.springframework.stereotype.Service;

import com.alipay.api.AlipayApiException;
import com.alipay.api.AlipayClient;
import com.alipay.api.DefaultAlipayClient;
import com.alipay.api.request.AlipayTradePrecreateRequest;
import com.alipay.api.request.AlipayTradeQueryRequest;
import com.alipay.api.request.AlipayTradeRefundRequest;
import com.alipay.api.response.AlipayTradePrecreateResponse;
import com.alipay.api.response.AlipayTradeQueryResponse;
import com.alipay.api.response.AlipayTradeRefundResponse;


@Service("aliPayService")
public class ALIPayServiceImpl implements ALIPayService {
	Logger log = Logger.getLogger(ALIPayServiceImpl.class);

	@Resource
	private OrderDAO orderDAO;
	@Resource
	private SerialNumMngDAO serialNumMngDAO;
	@Resource
	private ALIPayTradeLogsDAO aliPayTradeLogsDAO;
	@Resource
	private ALIPayConfigureDAO aliPayConfigureDAO;

	@Resource
	private ALIPayTradeLogsService aliPayTradeLogsService;
	@Resource
	private ALIPayConfigureService aliPayConfigureService;
	@Resource
	private OrderService orderService;

	@Override
	public void aliPayFinsh(Integer orderId, String totalAmount,
			String outTradeNo) {
		// TODO Auto-generated method stub
		Order o = null;
		float paymentAmount = Float.parseFloat(totalAmount);
		try {
			o = orderDAO.getOrderbyId(orderId);
			// 系统交易流水记录
			List<OrderPlus> ops = new ArrayList<OrderPlus>();
			OrderPlus op = new OrderPlus();
			op.setOrderId(o.getId());
			op.setOrderAmount(o.getAmount());
			op.setPaymentAmount(paymentAmount);
			op.setPaymentTime(new Date());
			op.setPaymentType(EnumUtil.PAYMENT_TYPE.alipayqrbycompay.getCode());
			op.setNotes("支付宝扫码支付:支付金额为" + paymentAmount);
			ops.add(op);
			orderDAO.insertOrderPlusPitch(ops);

			// 更新系统订单业务
			HashMap<String, Object> map = new HashMap<String, Object>();
			map.put("orderId", o.getId());
			// 外卖
			if (o.getIsTakeOut() == 1) {
				map.put("dealSts", EnumUtil.ORDER_dealSts.finished.getCode());
			} else {
				map.put("dealSts", EnumUtil.ORDER_dealSts.paid.getCode());
			}
			map.put("finishTime", new Date());
			map.put("paymentAmount", paymentAmount);
			map.put("orderPersonNum", 0);
			map.put("orderTime", o.getOrderTime());
			serialNumMngDAO.finishOrder(map);

			// 支付宝交易流水记录
			HashMap<String, Object> map2 = new HashMap<String, Object>();
			map2.put("companyId", o.getCompanyId());
			map2.put("subCompanyId", o.getSubCompanyId());
			ALIPayConfigure alipc = aliPayConfigureDAO.selectAppId(map2);
			ALIPayTradeLogs aliPaytl = new ALIPayTradeLogs();
			aliPaytl.setOutTradeNo(outTradeNo);
			if (alipc != null) {
				aliPaytl.setAppId(alipc.getAppId());
			}
			aliPaytl.setOrderId(String.valueOf(orderId));
			aliPaytl.setTotalAmount(paymentAmount);
			aliPaytl.setChannel("ALI_OFFLINE_QRCODE");
			aliPaytl.setTradeDate(new Date());
			aliPayTradeLogsDAO.insert(aliPaytl);

		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}

	@Override
	public HashMap<String, Object> refundOrderByALIQr(String orderId,
			String refund_amount) {
		// TODO Auto-generated method stub
		HashMap<String, Object> map = new HashMap<String, Object>();
		ALIPayTradeLogs ali = aliPayTradeLogsService.selectByOrderId(Integer
				.parseInt(orderId));
		if (ali != null) {
			Order o = null;
			try {
				o = orderService.getOrderById(Integer.parseInt(orderId));
			} catch (Exception e) {
				e.printStackTrace();
			}
			HashMap<String, Object> queryMap = query(ali.getOutTradeNo(),
					o.getCompanyId(), o.getSubCompanyId());
			int flag = (Integer) queryMap.get("flag");
			String tradeNo = (String) queryMap.get("tradeNo");
			if (flag == 1) {
				boolean refundFlag = refundOrder(tradeNo, refund_amount, "",
						o.getCompanyId(), o.getSubCompanyId());
				map.put("refundFlag", refundFlag);
				map.put("refundMsg", "支付宝扫码(企业)提示:该支付款按原路退到买家帐号,请注意查收!");
			} else if (flag == 2) {
				map.put("refundFlag", false);
				map.put("refundMsg", "平台提示:支付宝扫码等待付款");
			} else if (flag == 3) {
				map.put("refundFlag", false);
				map.put("refundMsg", "平台提示:支付宝扫码未付款关闭,或已付款的订单全额退款后关闭");
			} else if (flag == 4) {
				map.put("refundFlag", false);
				map.put("refundMsg", "平台提示:支付宝扫码订单不可退款或撤销");
			} else if (flag == 0) {
				map.put("refundFlag", false);
				map.put("refundMsg", "平台提示:支付宝扫码请求未成功,请重试");
			}
		}
		return map;
	}

	public HashMap<String, Object> query(final String out_trade_no,
			String companyId, String subCompanyId) {
		String tradeNo = "";
		HashMap<String, Object> map = new HashMap<String, Object>();
		AlipayClient alipayClient = getAlipayClientByCompanyId(companyId,
				subCompanyId);
		AlipayTradeQueryRequest request = new AlipayTradeQueryRequest();
		String biz_content = "{\"out_trade_no\":\"" + out_trade_no + "\"}";
		request.setBizContent(biz_content);
		AlipayTradeQueryResponse response = null;
		try {
			response = alipayClient.execute(request);
			System.out.println(response.getBody());
			System.out.println(response.getCode());
			if (null != response && response.isSuccess()) {
				System.out.println("买家账号:" + response.getBuyerLogonId());
				System.out.println("商户订单号:" + response.getOutTradeNo());
				System.out.println("支付宝交易号:" + response.getTradeNo());
				System.out.println("总金额:" + response.getTotalAmount());
				System.out.println("订单状态:" + response.getTradeStatus());
				if (response.getCode().equals("10000")) {
					tradeNo = response.getTradeNo();
					if ("TRADE_SUCCESS".equalsIgnoreCase(response
							.getTradeStatus())) {
						map.put("tradeNo", tradeNo);
						map.put("flag", 1);
						// 表示已付款
					} else if ("WAIT_BUYER_PAY".equalsIgnoreCase(response
							.getTradeStatus())) {
						map.put("tradeNo", tradeNo);
						map.put("flag", 2);
						// 表示等待付款
					} else if ("TRADE_CLOSED".equalsIgnoreCase(response
							.getTradeStatus())) {
						map.put("tradeNo", tradeNo);
						map.put("flag", 3);
						// 表示未付款关闭,或已付款的订单全额退款后关闭
					} else if ("TRADE_FINISHED".equalsIgnoreCase(response
							.getTradeStatus())) {
						// 此状态,订单不可退款或撤销
						map.put("tradeNo", tradeNo);
						map.put("flag", 4);
					}
				} else {
					// 如果请求未成功,请重试
					map.put("tradeNo", tradeNo);
					map.put("flag", 0);
				}
			}
		} catch (AlipayApiException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		return map;
	}

	/**
	 * 申请退单
	 * 
	 * @param trade_no
	 * @author jinlong.rhj
	 * @date 2015年4月27日
	 * @version 1.0
	 * @return
	 */
	public boolean refundOrder(String trade_no, String refund_amount,
			String out_request_no, String companyId, String subCompanyId) {
		boolean flag = false;
		AlipayClient alipayClient = getAlipayClientByCompanyId(companyId,
				subCompanyId);
		AlipayTradeRefundRequest request = new AlipayTradeRefundRequest();

		String biz_content = "{\"trade_no\":\""
				+ trade_no
				+ "\",\"refund_amount\":\""
				+ refund_amount
				+ "\",\"out_request_no\":\""
				+ out_request_no
				+ "\",\"refund_reason\":\"正常退单\",\"store_id\":\"\",\"terminal_id\":\"\"}";
		System.out.println(biz_content);
		request.setBizContent(biz_content);

		AlipayTradeRefundResponse response = null;

		try {
			response = alipayClient.execute(request);
			// System.out.println(response.getBody());
			// System.out.println(response.getCode());
			// System.out.println(response.getMsg());
			// System.out.println(response.getSubCode());
			// System.out.println(response.getSubMsg());
			// System.out.println(response.getBuyerLogonId());
			// System.out.println(response.getFundChange());
			// System.out.println(response.getOpenId());
			// System.out.println(response.getOutTradeNo());
			// System.out.println(response.getRefundFee());
			// System.out.println(response.getGmtRefundPay());
			// System.out.println(response.getOpenId());
			if (null != response && response.isSuccess()) {
				if (response.getCode().equals("10000")) {
					if (response.getFundChange().equals("Y")) {
						// 退款成功,资金有变动,做业务及账务处理
						flag = true;
					} else {
						// 资金无变动,不必做账务处理
					}
				} else {
					// 没有撤销成功,需要重试几次
					// refundOrderRetry(trade_no, refund_amount, out_request_no,
					// 6);
				}
			}
		} catch (AlipayApiException e) {
			e.printStackTrace();
		}
		return flag;
	}

	@Override
	public AlipayClient getAlipayClientByCompanyId(String companyId,
			String subCompanyId) {
		HashMap<String, Object> map2 = new HashMap<String, Object>();
		map2.put("companyId", companyId);
		map2.put("subCompanyId", subCompanyId);
		ALIPayConfigure aliPayConfigure = aliPayConfigureService
				.selectAppId(map2);
		DefaultAlipayClient alipayClient = null;
		if (aliPayConfigure != null) {
			alipayClient = new DefaultAlipayClient(
					AlipayServiceEnvConstants.ALIPAY_GATEWAY,
					aliPayConfigure.getAppId(),
					aliPayConfigure.getPrivateKey(), "json",
					AlipayServiceEnvConstants.CHARSET,
					AlipayServiceEnvConstants.ALIPAY_PUBLIC_KEY);
		}
		return alipayClient;
	}

	/**
	 * 支付宝扫码支付二维码生成接口
	 * 
	 * @param out_trade_no
	 * @param total_amount
	 * @param subject
	 * @param companyId
	 * @return
	 */
	public AlipayTradePrecreateResponse qrPay(String out_trade_no,
			String total_amount, String subject, String companyId,
			String orderId, String subCompanyId) {
		SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
		String time_expire = sdf.format(System.currentTimeMillis() + 24 * 60
				* 60 * 1000);
		StringBuilder sb = new StringBuilder();
		sb.append("{\"out_trade_no\":\"" + out_trade_no + "\",");
		sb.append("\"total_amount\":\"" + total_amount
				+ "\",\"discountable_amount\":\"0.00\",");
		sb.append("\"subject\":\"" + subject + "\",");
		sb.append("\"time_expire\":\"" + time_expire + "\"}");
		System.out.println(sb.toString());

		AlipayClient alipayClient = getAlipayClientByCompanyId(companyId,
				subCompanyId);

		// 使用SDK,构建群发请求模型
		AlipayTradePrecreateRequest request = new AlipayTradePrecreateRequest();
		request.setBizContent(sb.toString());
		request.setNotifyUrl(ConfigUtil.SYS_BASE_URL
				+ "/aliPay!notifyMsgByAliPay.action" + "?orderId=" + orderId
				+ "&totalAmount=" + total_amount + "&outTradeNo="
				+ out_trade_no);
		AlipayTradePrecreateResponse response = null;
		// 商家配置不成功
		if (alipayClient == null) {
			return response;
		}
		try {
			// 使用SDK,调用交易下单接口
			response = alipayClient.execute(request);

			System.out.println(response.getBody());
			System.out.println(response.isSuccess());
			System.out.println(response.getMsg());
			// 这里只是简单的打印,请开发者根据实际情况自行进行处理
			if (null != response && response.isSuccess()) {
				if (response.getCode().equals("10000")) {
					System.out.println("商户订单号:" + response.getOutTradeNo());
					System.out.println("二维码值:" + response.getQrCode());// 商户将此二维码值生成二维码,然后展示给用户,用户用支付宝手机钱包扫码完成支付
					// 二维码的生成,网上有许多开源方法,可以参看:http://blog.csdn.net/feiyu84/article/details/9089497

				} else {
					// 打印错误码
					System.out.println("错误码:" + response.getSubCode());
					System.out.println("错误描述:" + response.getSubMsg());
				}
			}
		} catch (AlipayApiException e) {
		}
		return response;
	}

}


ALIPayService接口

import java.util.HashMap;

import com.alipay.api.AlipayClient;
import com.alipay.api.response.AlipayTradePrecreateResponse;

public interface ALIPayService {

	/**
	 * 支付宝扫码支付成功后,订单业务处理
	 * 
	 * @param orderId
	 */
	public void aliPayFinsh(Integer orderId, String totalAmount,
			String outTradeNo);

	/**
	 * 支付宝扫码支付申请退款业务处理
	 * 
	 * @param orderId
	 * @param refund_amount
	 * @return
	 */
	public HashMap<String, Object> refundOrderByALIQr(String orderId, String refund_amount);

	/**
	 * 各商家的获得API调用客户端
	 * 
	 * @param companyId
	 * @param subCompanyId
	 * @return
	 */
	public AlipayClient getAlipayClientByCompanyId(String companyId,
			String subCompanyId);

	/**
	 * 支付宝扫码支付二维码生成接口
	 * 
	 * @param out_trade_no
	 * @param total_amount
	 * @param subject
	 * @param companyId
	 * @return
	 */
	public AlipayTradePrecreateResponse qrPay(String out_trade_no,
			String total_amount, String subject, String companyId,
			String orderId, String subCompanyId);

}


举报

相关文章推荐

支付宝支付-APP支付服务端详解

支付宝APP支付服务端详解前面接了微信支付,相比微信支付,支付宝APP支付提供了支付分装类,下面将实现支付宝APP支付、订单查询、支付结果异步通知、APP支付申请参数说明,以及服务端返回APP端发起支...

支付宝支付-扫码支付详解

我们接着上一篇文章支付宝支付-刷卡支付(条码支付)详解 继续来聊聊支付包扫码支付1、场景介绍扫码支付,指用户打开支付宝钱包中的“扫一扫”功能,扫描商户针对每个订单实时生成的订单二维码,并在手机端确认支...

我是如何成为一名python大咖的?

人生苦短,都说必须python,那么我分享下我是如何从小白成为Python资深开发者的吧。2014年我大学刚毕业..

支付宝线下门店扫码支付开发

转载自:http://blog.csdn.net/l2000h_ing/article/details/50679363 支付宝扫码支付 一.开发前准备 https://doc.open.a...

支付宝线下门店扫码支付开发

支付宝扫码支付 1.开发前准备

支付宝支付sdk解析

在调用支付宝前需要初始化config参数,在文件中输出需要的appid,秘钥,公钥等信息。。。。 Configs.init("zfbinfo.properties");在初始化之后进行工厂模式进行...

支付宝开发(一)

支付宝部分接口解读com.alipay.demo.trade.model—ExtendParams.java —String SysServiceProviderId 系统商编号—toStri...

Spring使用支付宝扫码支付

前一段一直在研究支付宝的扫码支付,不得不说,支付宝的文档写的真是一个烂(起码在下刚开始看的时候是mengbi的)。文档上面的示例和demo里面的示例长的完全不一样。往往文档上面的例子很简单,而demo...

支付宝无线快捷登录接口升级

注:若是公司是在原来已经使用过支付宝老的快捷登陆接口的基础上做快捷登录接口升级,那么可能会遇到麻烦,因为支付宝老的快捷登录接口返回的是16位openId(有些叫UserId,现在支付宝都统称叫Open...

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

官方文档:点击打开链接 下载服务器端DEMO 导入项目中 代码部分 // 实例化客户端 AlipayClient alipayClient = new DefaultAlipayClien...
  • sourny
  • sourny
  • 2017-03-29 14:01
  • 4447
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)