微信支付异步通知无结果

最近做微信支付看了大多和支付宝,网银在线等接口对接差不多。

但微信支付 发起请求的还需要填写支付的目录,另外获取code,access_token的时候需要设置网页授权域名。

如下图:

 

 

另外,微信支付和其他一样有一个同步,一个异步的通知。因好多程序都是做了pc,手机端适配,域名可能不一样,在使用中会出现执行中断的结果。笔者找了几天发现原来是异步的问题。如下微信官方demo,notify_url 参数

//①、获取用户openid
$tools = new JsApiPay();
$openId = $tools->GetOpenid();

//②、统一下单
$input = new WxPayUnifiedOrder();
$input->SetBody("test");
$input->SetAttach("test");
$input->SetOut_trade_no(WxPayConfig::MCHID.date("YmdHis"));
$input->SetTotal_fee("1");
$input->SetTime_start(date("YmdHis"));
$input->SetTime_expire(date("YmdHis", time() + 600));
$input->SetGoods_tag("test");
$input->SetNotify_url("http://paysdk.weixin.qq.com/example/notify.php");
$input->SetTrade_type("JSAPI");
$input->SetOpenid($openId);
$order = WxPayApi::unifiedOrder($input);
echo '<font color="#f00"><b>统一下单支付单信息</b></font><br/>';
printf_info($order);
$jsApiParameters = $tools->GetJsApiParameters($order);

 

转载于:https://www.cnblogs.com/icyy/p/4687304.html

### Spring Boot集成微信支付异步通知实现与配置 #### 1. 添加必要的依赖项 为了处理微信支付异步通知,在`pom.xml`文件中引入相应的依赖库[^1]: ```xml <dependency> <groupId>com.github.binarywang</groupId> <artifactId>weixin-java-pay</artifactId> <version>${wx.java.version}</version> </dependency> ``` #### 2. 创建控制器接收回调请求 定义一个专门用于接受来自微信服务器的通知消息的接口。通常情况下,这个URL会被设置为对外可访问的服务地址。 ```java @RestController @RequestMapping("/wechat/callback") public class WeChatPayCallbackController { @PostMapping(value = "/notify", produces = "application/xml;charset=UTF-8") public String handleNotify(HttpServletRequest request, HttpServletResponse response) throws Exception { // 处理逻辑... return "<xml><return_code><![CDATA[SUCCESS]]></return_code></xml>"; } } ``` #### 3. 解析并验证签名 接收到的数据是以XML格式发送过来的,因此需要先将其转换成Map对象再做进一步操作;同时要确保数据确实是由官方发出而非伪造,则需按照文档说明完成验签过程。 ```java // 假设已获取到输入流中的原始报文体 rawXmlString Map<String, String> map = WxPayUtil.xmlToMap(rawXmlString); boolean isValidSign = wxService.getSignatureValidator().isValid(map); if (!isValidSign){ throw new RuntimeException("Invalid sign"); } // 继续后续业务流程... ``` #### 4. 更新订单状态及其他业务逻辑 当确认无误之后就可以依据返回参数更新本地数据库内的交易记录了,比如修改订单的状态等动作。 ```sql UPDATE orders SET status='PAID', pay_time=NOW() WHERE out_trade_no=#{outTradeNo}; ``` #### 5. 返回应答给微信服务器 最后不要忘记向对方反馈成功与否的信息,这一步骤非常重要因为只有这样才代表整个交互已经结束。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值