欢迎光临
我们一直在努力

以下是基于Java实现微信H5支付和支付宝手机网站支付的集成教程,结合了最新的搜索结果信息:

以下是基于Java实现微信H5支付和支付宝手机网站支付的集成教程,结合了最新的搜索结果信息:

一、微信H5支付集成

1. 准备工作

  1. 注册微信支付商户号
    在微信支付平台注册成为商户,获取商户号mch_id)和API密钥
  2. 配置支付参数
    application.yml中配置微信支付相关参数:
    yaml复制
    wx:
      appid: your-app-id
      mchid: your-merchant-id
      key: your-api-key
      notifyURL: https://your-domain.com/wxpay/notify
      certPath: path/to/your/cert.p12
      certPassword: your-cert-password

2. 集成微信H5支付

  1. 引入依赖
    pom.xml中引入微信支付SDK:
    xml复制
    <dependency>
        <groupId>com.github.wechatpay-apiv3</groupId>
        <artifactId>wechatpay-java</artifactId>
        <version>0.1.0</version>
    </dependency>
  2. 实现支付逻辑
    创建支付服务类WeChatPayService,实现H5支付功能:
    java复制
    @Service
    public class WeChatPayServiceImpl implements WeChatPayService {
        @Value("${wx.appid}")
        private String appId;
        @Value("${wx.mchid}")
        private String mchId;
        @Value("${wx.key}")
        private String apiKey;
    
        @Override
        public String createH5Payment(String outTradeNo, String body, String totalFee, HttpServletRequest request) throws Exception {
            SortedMap<String, String> params = new TreeMap<>();
            params.put("appid", appId);
            params.put("mch_id", mchId);
            params.put("nonce_str", UUID.randomUUID().toString().replaceAll("-", ""));
            params.put("body", body);
            params.put("out_trade_no", outTradeNo);
            params.put("total_fee", totalFee);
            params.put("spbill_create_ip", CommonUtils.getIpAddr(request));
            params.put("notify_url", notifyUrl);
            params.put("trade_type", "MWEB");
            params.put("sign", WXPayUtil.createSign(params, apiKey));
    
            String xml = WXPayUtil.mapToXml(params);
            String result = HttpUtils.doPost("https://api.mch.weixin.qq.com/pay/unifiedorder", xml, 4000);
            Map<String, String> resultMap = WXPayUtil.xmlToMap(result);
            return resultMap.get("mweb_url"); // 返回H5支付URL
        }
    }
    说明CommonUtils.getIpAddr(request)用于获取用户请求的真实IP地址。
  3. 前端处理
    将返回的H5支付URL直接跳转到微信支付页面,用户可以通过微信扫码完成支付。

3. 异步通知处理

创建异步通知处理接口:
java复制
@PostMapping("/wxpay/notify")
public String handleWeChatNotify(HttpServletRequest request) {
    Map<String, String> params = WXPayUtil.xmlToMap(request.getInputStream());
    if (WXPayUtil.isSignatureValid(params, apiKey)) {
        String outTradeNo = params.get("out_trade_no");
        String totalFee = params.get("total_fee");
        // 更新订单状态等业务逻辑
        return "<xml><return_code><![CDATA[SUCCESS]]></return_code></xml>";
    } else {
        return "<xml><return_code><![CDATA[FAIL]]></return_code></xml>";
    }
}

二、支付宝手机网站支付集成

1. 准备工作

  1. 注册支付宝开放平台账号
    在支付宝开放平台注册并创建应用,获取AppID
  2. 配置支付参数
    application.yml中配置支付宝相关参数:
    yaml复制
    alipay:
      app-id: your-app-id
      merchant-private-key: your-private-key
      alipay-public-key: alipay-public-key
      notify-url: https://your-domain.com/alipay/notify
      return-url: https://your-domain.com/alipay/return

2. 集成支付宝手机网站支付

  1. 引入依赖
    pom.xml中引入支付宝SDK:
    xml复制
    <dependency>
        <groupId>com.alipay.sdk</groupId>
        <artifactId>alipay-sdk-java</artifactId>
        <version>4.9.79.ALL</version>
    </dependency>
  2. 实现支付逻辑
    创建支付服务类AlipayService,实现手机网站支付功能:
    java复制
    @Service
    public class AlipayService {
        @Autowired
        private Environment env;
    
        public String createAlipayWapPayment(String subject, String totalAmount) throws Exception {
            AlipayClient alipayClient = new DefaultAlipayClient(
                    env.getProperty("alipay.server-url"),
                    env.getProperty("alipay.app-id"),
                    env.getProperty("alipay.merchant-private-key"),
                    "json",
                    "UTF-8",
                    env.getProperty("alipay.alipay-public-key"),
                    "RSA2");
    
            AlipayTradeWapPayRequest request = new AlipayTradeWapPayRequest();
            request.setNotifyUrl(env.getProperty("alipay.notify-url"));
            request.setReturnUrl(env.getProperty("alipay.return-url"));
            request.setBizContent("{"
                    + "\"out_trade_no\":\"" + UUID.randomUUID().toString().replaceAll("-", "") + "\","
                    + "\"total_amount\":\"" + totalAmount + "\","
                    + "\"subject\":\"" + subject + "\","
                    + "\"product_code\":\"QUICK_WAP_WAY\""
                    + "}");
    
            return alipayClient.pageExecute(request).getBody(); // 返回支付表单HTML
        }
    }
  3. 前端处理
    将返回的支付表单HTML直接提交到支付宝支付页面,用户可以通过支付宝完成支付。

3. 异步通知处理

创建异步通知处理接口:
java复制
@PostMapping("/alipay/notify")
public String handleAlipayNotify(HttpServletRequest request) {
    Map<String, String> params = request.getParameterMap().entrySet().stream()
            .collect(Collectors.toMap(Map.Entry::getKey, e -> e.getValue()[0]));

    if (AlipaySignature.rsaCheckV1(params, env.getProperty("alipay.alipay-public-key"), "UTF-8", "RSA2")) {
        String outTradeNo = params.get("out_trade_no");
        String totalAmount = params.get("total_amount");
        // 更新订单状态等业务逻辑
        return "success";
    } else {
        return "fail";
    }
}

三、注意事项

  1. 安全性
    • 确保异步通知地址的安全性,防止恶意请求。
    • 使用HTTPS保护支付流程。
  2. 支付结果处理
    • 支付宝和微信支付的异步通知处理逻辑类似,都需要验证签名并更新订单状态。
  3. 测试环境
    • 使用沙箱环境进行测试,确保支付流程正常。
通过以上步骤,你可以轻松在Java项目中集成微信H5支付和支付宝手机网站支付功能。

未经允许不得转载:免费服务器评测网 » 以下是基于Java实现微信H5支付和支付宝手机网站支付的集成教程,结合了最新的搜索结果信息:

腾讯云优惠专区 腾讯云 阿里云 华为云 云服务器 云服务器评测 云服务器推荐 腾讯云优惠

登录

忘记密码 ?

切换登录

注册

我们将发送一封验证邮件至你的邮箱, 请正确填写以完成账号注册和激活