b2科目四模拟试题多少题驾考考爆了怎么补救
b2科目四模拟试题多少题 驾考考爆了怎么补救

微信支付java开发详细第三方支付功能开发之支付宝web端支(2)

电脑杂谈  发布时间:2018-02-10 18:07:19  来源:网络整理

这里注意几点:

①上面那个创建预付订单流水,主要用于后面支付宝异步通知,订单流水号需要传给支付宝,这样支付宝回调通知的时候,会把这个参数传回来。

alipayRequest.setReturnUrl("");//回退到订单列表页面

这个地址为用户扫码成功后,支付宝会在五秒后从支付页面跳转到的页面。

微信可以用java开发吗_微信支付java开发详细_java开发微信扫码支付

alipayRequest.setNotifyUrl("");//在公共参数中设置回跳和通知地址

这个地址为支付宝支付异步通知的地址。这个地址必须要是外网可访问的,如果大家在本地测试,需要把本机映射到外网上去,这里推荐大家使用ngrok,注册后是可以免费使用的。微信支付java开发详细

上面两个地址出于隐私考虑我这里是空的,大家要加上。

3、支付宝异步通知

/**
 * 接受支付宝异步通知
 */
@RequestMapping(value = "/notify", method = RequestMethod.POST)
@Transactional(readOnly = false)
public void alipayNotify(HttpServletRequest request, HttpServletResponse response) throws Exception {
    Map map = new HashMap();
    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] + ",";
        }
        //乱码解决,这段代码在出现乱码时使用。如果mysign和sign不相等也可以使用这段代码转化
        //valueStr = new String(valueStr.getBytes("ISO-8859-1"), "gbk");
        map.put(name, valueStr);
    }
    System.out.println("支付结果---:" + map.toString());
    //调用SDK验证签名
    boolean signVerified = false;
    try {
        signVerified = AlipaySignature.rsaCheckV1(map, Config.alipay_app_public_key, Config.alipay_charset, Config.alipay_sign_type);
    } catch (Exception e) {
        e.printStackTrace();
    }
    if (signVerified) {
        System.out.println("支付结果---:" + map.toString());
        String trad_no = map.get("out_trade_no");
        //根据交易流水号查询交易信息
        if ("TRADE_SUCCESS".equals(map.get("trade_status"))) {//交易成功
            DealUserTradModel dealUserTradModel = new DealUserTradModel();
            dealUserTradModel.setUser_account_name("");
            dealUserTradModel.setUser_account(map.get("buyer_id"));
            dealUserTradModel.setTrad_no(trad_no);
            dealUserTradModel.setPay_amount(new BigDecimal(map.get("total_amount")));
            dealUserTradModel.setCompany_amount(new BigDecimal(map.get("receipt_amount")));
            dealUserTradModel.setOut_trad_no(map.get("trade_no"));
            payService.dealTrad(dealUserTradModel);
        }
        try {
            PrintWriter out = response.getWriter();
            out.print("success");
            out.flush();
            out.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
        // TODO 验签成功后,按照支付结果异步通知中的描述,对支付结果中的业务内容进行二次校验,校验成功后在response中返回success并继续商户自身业务处理,校验失败返回failure
    } else {
        // TODO 验签失败则记录异常日志,并在response中返回failure.
        try {
            PrintWriter out = response.getWriter();
            out.print("failure");
            out.flush();
            out.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}


本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/sanxing/article-70423-2.html

相关阅读
    发表评论  请自觉遵守互联网相关的政策法规,严禁发布、暴力、反动的言论

    热点图片
    拼命载入中...