WechatPay-微信支付

本文探讨了微信产品的用户体验问题,特别是其API开发文档的不友好性,并提供了一个简单的支付流程实现Demo。同时,针对支付成功后无法获取回调结果的问题,给出了解决方案。通过调整App注册配置和解决相关编译问题,实现真正的支付功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

      不得不吐槽下微信的产品真的是越来越垃圾了,无论是登陆、分享、还是支付都非得搞点另类,尤其是现在的api开发文档简直就是垃圾中的战斗机啊!不说了说多了都是眼泪,忍忍吧谁叫我们还得用呢!

      因为是第三方产品,所以具体细节什么的我就补贴代码了,直接看demo吧。Demo中的代码只需替换Constants中的appid即可实现支付,因为涉及到订单请求不方便暴露公司接口,所以用的是写死的数据,具体有注释。

      关于支付成功后拿不到回调结果的处理,相信大多数人都比较蛋疼,这里简单说下解决办法。首先对于里面的AppRegister在manifest中注册的时候一定要用原包,wxapi的包一定要在你包名的第一级位置,注册的代码大概是这个样子的:

<receiver
    android:name="net.sourceforge.simcpux.AppRegister">
    <intent-filter>
        <action android:name="com.tencent.mm.plugin.openapi.Intent.ACTION_REFRESH_WXAPP" />
    </intent-filter>
</receiver>
<activity
    android:name=".wxapi.WXPayEntryActivity"
    android:launchMode="singleTop"
    android:exported="true"/>

因为as编译的问题,所以分eclipse和studio两种。压缩中的apk包是签名后的可以实现真正的支付!








eclipse DEMO:点击打开链接

studio DEMO:点击打开链接




### 微信H5支付Java集成教程 #### 准备工作 为了实现微信H5支付功能,需先完成准备工作。这包括获取必要的参数和配置环境。具体来说,开发者应前往微信公众平台注册并创建应用以获得`AppID`、`MchId`(商户号),以及设置安全密钥等基本信息[^2]。 #### 下载官方SDK 建议从官方网站下载最新的WeChat Pay Java SDK来简化开发流程。通过访问提供的链接可以找到适用于不同版本的压缩包,其中包含了用于处理请求响应的核心类库和其他辅助工具[^3]。 ```xml <!-- Maven依赖 --> <dependency> <groupId>com.github.wechatpay-apiv3</groupId> <artifactId>wechatpay-java</artifactId> <version>LATEST_VERSION</version> </dependency> ``` #### 配置项目 在项目的资源目录下新建一个名为`wx.properties`的属性文件用来保存敏感信息: ```properties appid=YOUR_APP_ID mchid=YOUR_MERCHANT_ID key=YOUR_API_KEY certpath=/path/to/cert/apiclient_cert.p12 notify_url=https://yourdomain.com/wxpay/notify ``` #### 实现服务端逻辑 编写控制器接收来自前端发起的预下单请求,并调用微信接口生成订单详情返回给浏览器端继续后续操作过程中的签名验证等功能均在此处完成。 ```java @RestController @RequestMapping("/api/pay") public class WxPayController { @Autowired private WeChatPayService weChatPayService; @PostMapping("/createOrder") public ResponseEntity<Map<String, Object>> createOrder(@RequestBody Map<String, String> params){ try { // 构建统一下单对象 UnifiedOrderRequest orderReq = new UnifiedOrderRequest(); orderReq.setBody(params.get("body")); orderReq.setOutTradeNo(UUID.randomUUID().toString()); orderReq.setTotalFee(Integer.parseInt(params.get("total_fee"))); orderReq.setSpbillCreateIp(RequestUtil.getClientIP()); orderReq.setNotifyUrl(environment.getProperty("notify_url")); // 发送请求至微信服务器 WxPayUnifiedOrderResult result = this.weChatPayService.unifiedOrder(orderReq); HashMap<String,Object> resultMap=new HashMap<>(); resultMap.putAll(result.toMap()); return ResponseEntity.ok(resultMap); } catch (Exception e) { log.error(e.getMessage(),e); throw new RuntimeException("创建订单失败"); } } } ``` #### 前端页面适配 当后端成功构建好交易记录之后会向客户端反馈一系列数据供其进一步组装成最终可提交表单项形式的数据结构体以便于唤起内嵌Webview组件加载指定URL地址从而启动整个付款环节[^1]。 ```javascript // 获取到后端传过来的信息 const payInfo = response.data; if(payInfo.return_code === 'SUCCESS'){ const mwebUrl = decodeURIComponent(payInfo.mweb_url); window.location.href=mwebUrl; }else{ alert('获取支付信息失败'); } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值