Java 开发之微信(支付宝)扫码支付的小总结

本文描述开发扫码支付的一些心得体会

场景:在停车收费系统中,车辆出场时扫码支付停车费用

需求

  1. 粘贴固定的二维码
  2. 自动获取订单金额
  3. 支付宝微信均可扫码支付
一、编写 H5 界面

1、index.html (内容可以为空,用于界面跳转)
2、bill.html
3、error.html

将 index.html 访问路径生成二维码,当使用微信或者支付宝扫码时跳转到该页面
注:访问参数需携带查询账单的标识,如停车场收费系统二维码界面需携带:车场id、车道 id,用于查询账单

二、获取账单信息

进入 index.html 后调用后端接口查询账单信息,
查到账单信息后根据账单内容调用微信或者支付宝的统一下单接口生成支付URL,返回账单信息与支付URL并跳转至 bill.html,
如果查询不到账单信息跳转至 error.html
注:调用统一下单接口个平台都有很详细的文档,这边就不赘述了
支付宝支付官方文档
微信支付官方文档

bill.html 参考如下:
在这里插入图片描述

三、点击 bill.html 后将调用手机微信或者支付宝付款界面

这边就不需要我们操作什么啦

四、支付成功

支付成功后微信或者支付宝会自动发消息到调用统一支付接口时传入的接口地址

在这里插入图片描述
在这里插入图片描述

在这边把后续的操作做完就行啦,比如说:支付账单保存、支付成功通知、道闸开闸、商品发货等等等

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
您好!您可以使用第三方支付库来实现Java扫码支付,支持支付宝微信和银联三合一。以下是一个简单的示例代码: ```java 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.response.AlipayTradePrecreateResponse; import com.github.wxpay.sdk.WXPay; import com.github.wxpay.sdk.WXPayConfigImpl; import com.github.wxpay.sdk.WXPayConstants; import com.github.wxpay.sdk.WXPayUtil; import java.util.HashMap; import java.util.Map; public class QRCodePayment { // 支付宝相关配置 private static final String ALIPAY_APP_ID = "your_alipay_app_id"; private static final String ALIPAY_PRIVATE_KEY = "your_alipay_private_key"; private static final String ALIPAY_PUBLIC_KEY = "your_alipay_public_key"; private static final String ALIPAY_GATEWAY = "https://openapi.alipay.com/gateway.do"; // 微信支付相关配置 private static final String WX_PAY_APP_ID = "your_wxpay_app_id"; private static final String WX_PAY_MCH_ID = "your_wxpay_mch_id"; private static final String WX_PAY_KEY = "your_wxpay_key"; private static final String WX_PAY_NOTIFY_URL = "your_wxpay_notify_url"; private static final String WX_PAY_TRADE_TYPE = "NATIVE"; public static void main(String[] args) { // 生成支付宝付款码 String alipayQRCode = generateAlipayQRCode("your_order_id", "100.00"); System.out.println("支付宝付款码:" + alipayQRCode); // 生成微信付款码 String wechatQRCode = generateWechatQRCode("your_order_id", "100"); System.out.println("微信付款码:" + wechatQRCode); } public static String generateAlipayQRCode(String orderId, String amount) { AlipayClient alipayClient = new DefaultAlipayClient(ALIPAY_GATEWAY, ALIPAY_APP_ID, ALIPAY_PRIVATE_KEY, "json", "UTF-8", ALIPAY_PUBLIC_KEY, "RSA2"); AlipayTradePrecreateRequest request = new AlipayTradePrecreateRequest(); request.setBizContent("{\"out_trade_no\":\"" + orderId + "\",\"total_amount\":\"" + amount + "\",\"subject\":\"订单支付\",\"store_id\":\"001\"}"); try { AlipayTradePrecreateResponse response = alipayClient.execute(request); if (response.isSuccess()) { return response.getQrCode(); } else { System.out.println("生成支付宝付款码失败:" + response.getSubMsg()); } } catch (AlipayApiException e) { e.printStackTrace(); } return null; } public static String generateWechatQRCode(String orderId, String amount) { WXPayConfigImpl config = new WXPayConfigImpl(); config.setAppID(WX_PAY_APP_ID); config.setMchID(WX_PAY_MCH_ID); config.setKey(WX_PAY_KEY); config.setHttpConnectTimeoutMs(5000); config.setHttpReadTimeoutMs(10000); Map<String, String> data = new HashMap<>(); data.put("appid", WX_PAY_APP_ID); data.put("mch_id", WX_PAY_MCH_ID); data.put("nonce_str", WXPayUtil.generateNonceStr()); data.put("body", "订单支付"); data.put("out_trade_no", orderId); data.put("total_fee", amount); data.put("spbill_create_ip", "127.0.0.1"); data.put("notify_url", WX_PAY_NOTIFY_URL); data.put("trade_type", WX_PAY_TRADE_TYPE); try { WXPay wxPay = new WXPay(config, WXPayConstants.SignType.MD5, false); Map<String, String> resultMap = wxPay.unifiedOrder(data); if ("SUCCESS".equals(resultMap.get("return_code")) && "SUCCESS".equals(resultMap.get("result_code"))) { return resultMap.get("code_url"); } else { System.out.println("生成微信付款码失败:" + resultMap.get("return_msg")); } } catch (Exception e) { e.printStackTrace(); } return null; } } ``` 请注意,上述代码只是一个简单示例,实际使用中需要替换为您自己的支付宝微信支付配置参数,并且需要适配具体的支付库和接口。希望对您有帮助!如果还有其他问题,请随时提问。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值