微信+阿里支付流程详解

时间:2024-03-28 08:14:56

微信登录

微信登录

授权流程图:

微信+阿里支付流程详解

QQ登录

与微信登录类似

阿里支付

电脑端支付

请求地址:

https://openapi.alipay.com/gateway.do
请求参数:

公共请求参数:
    app_id 应用ID
    method 接口名称
    format 仅支持JSON
    charset 编码格式
    sign_type 签名类型,RSA2
    sign 签名
    timestamp 发送的请求时间
    version 调用的接口版本,1.0
    notify_url 支付宝通知url
    biz_content 业务请求参数的集合
    
    acca字段
    body
    subject
    out_trade_no
    total_amount
    time_express
    passback_params

接口调用流程

微信+阿里支付流程详解

验签

reference

sdk接入

public void doPost(HttpServletRequest httpRequest,
                      HttpServletResponse httpResponse) throws ServletException, IOException {
    // 获得初始化的AlipayClient
    AlipayClient alipayClient = new DefaultAlipayClient(“https://openapi.alipay.com/gateway.do”, APP_ID, APP_PRIVATE_KEY, FORMAT, CHARSET, ALIPAY_PUBLIC_KEY, SIGN_TYPE);
    //创建API对应的request
    AlipayTradePagePayRequest alipayRequest = new AlipayTradePagePayRequest();
    //在公共参数中设置回跳和通知地址
    alipayRequest.setReturnUrl(“http://domain.com/CallBack/return_url.jsp”);
    alipayRequest.setNotifyUrl(“http://domain.com/CallBack/notify_url.jsp”);
    alipayRequest.setBizContent("{" +
        "    “out_trade_no”:“20150320010101001”," +
        "    “product_code”:“FAST_INSTANT_TRADE_PAY”," +
        "    “total_amount”:88.88," +
        "    “subject”:“Iphone6 16G”," +
        "    “body”:“Iphone6 16G”," +
        "    “passback_params”:“merchantBizType%3d3C%26merchantBizNo%3d2016010101111”," +
        "    “extend_params”:{" +
        "    “sys_service_provider_id”:“2088511833207846"” +
        "    }"+
        "  }");//填充业务参数
    String form="";
    try {
        form = alipayClient.pageExecute(alipayRequest).getBody(); //调用SDK生成表单
    } catch (AlipayApiException e) {
        e.printStackTrace();
    }
    httpResponse.setContentType(“text/html;charset=” + CHARSET);
    httpResponse.getWriter().write(form);//直接将完整的表单html输出到页面
    httpResponse.getWriter().flush();
    httpResponse.getWriter().close();
    }

手机端支付

reference

接口调用流程

微信+阿里支付流程详解

sdk接入

public void doPost(HttpServletRequest httpRequest,
    HttpServletResponse httpResponse) throws ServletException, IOException {
    AlipayClient alipayClient = new DefaultAlipayClient(“https://openapi.alipay.com/gateway.do”, APP_ID, APP_PRIVATE_KEY, “json”, CHARSET, ALIPAY_PUBLIC_KEY, “RSA2”); //获得初始化的AlipayClient
    AlipayTradeWapPayRequest alipayRequest = new AlipayTradeWapPayRequest();//创建API对应的request
    alipayRequest.setReturnUrl(“http://domain.com/CallBack/return_url.jsp”);
    alipayRequest.setNotifyUrl(“http://domain.com/CallBack/notify_url.jsp”);//在公共参数中设置回跳和通知地址
    alipayRequest.setBizContent("{" +
    " “out_trade_no”:“20150320010101002”," +
    " “total_amount”:“88.88”," +
    " “subject”:“Iphone6 16G”," +
    " “product_code”:“QUICK_WAP_PAY”" +
    " }");//填充业务参数
    String form="";
    try {
    form = alipayClient.pageExecute(alipayRequest).getBody(); //调用SDK生成表单
    } catch (AlipayApiException e) {
    e.printStackTrace();
    }
    httpResponse.setContentType(“text/html;charset=” + CHARSET);
    httpResponse.getWriter().write(form);//直接将完整的表单html输出到页面
    httpResponse.getWriter().flush();
    httpResponse.getWriter().close();
    }

微信支付

reference

电脑端支付

reference
微信+阿里支付流程详解

统一下单api

用于获取code_url,转换成二维码展示在支付页面

请求地址:

URL地址:https://api.mch.weixin.qq.com/pay/unifiedorder
    
请求参数:

必填字段:
        公众账号ID appid
        商户号 mch_id
        随机字符串 nonce_str
        签名 sign
        商品描述 body
        商户订单号 out_trade_no
        标价金额 total_fee
        终端IP spbill_create_ip
        通知地址 notify_url
        交易类型 trade_type
        商品ID priduct_id
    acca字段:
        附加数据 attach => member_id
        交易起始时间 time_start
        交易结束时间 time_expire
响应参数:

二维码链接 code_url

查询订单api

请求地址:

https://api.mch.weixin.qq.com/pay/orderquery
请求参数:

必填字段:
        公众账号ID appid
        商户号 mch_id
        随机字符串 nonce_str
        签名 sign
    acca字段:
        商户订单号 out_trade_no
响应参数:

返回状态码 return_code
    业务结果 result_code
    交易状态 trade_state

支付结果通知

请求地址:

notify_url
请求参数:

返回状态码 return_code
    业务结果 result_code

手机浏览器支付

reference

统一下单api

请求地址:

URL地址:https://api.mch.weixin.qq.com/pay/unifiedorder
    
请求参数:

必填字段:
        公众账号ID appid
        商户号 mch_id
        随机字符串 nonce_str
        签名 sign
        商品描述 body
        商户订单号 out_trade_no
        标价金额 total_fee
        终端IP spbill_create_ip
        通知地址 notify_url
        交易类型 trade_type=MWEB
        商品ID priduct_id
        场景信息 scene_info
    acca字段:
        附加数据 attach => member_id
        交易起始时间 time_start
        交易结束时间 time_expire
        
    响应参数:

支付跳转链接 mweb_url