微信支付开发-从零开始-Part3

本文详细介绍了如何通过微信JSAPI实现网页支付的过程,包括获取prepay_id、生成支付签名等关键步骤,并列举了一些常见的错误及其解决办法。

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

上一篇博文已经获取到了prepay_id-下一步可以传递给客户端调用微信的js发起支付界面进行支付了。看似很简单,也遇到不少问题。这里记录下来-

统一下单请求成功后返回的XML格式参数如下

<xml>
	<return_code>
		<![CDATA[SUCCESS]]>
	</return_code>
	<return_msg>
		<![CDATA[OK]]>
	</return_msg>
	<appid>
		<![CDATA[wx465d987ac2000000]]>
	</appid>
	<mch_id>
		<![CDATA[1263500000]]>
	</mch_id>
	<device_info>
		<![CDATA[WEB]]>
	</device_info>
	<nonce_str>
		<![CDATA[SOdpVyp0ze3PJUfj]]>
	</nonce_str>
	<sign>
		<![CDATA[CDD5B2E19FF5979374FF678D09D7C7A1]]>
	</sign>
	<result_code>
		<![CDATA[SUCCESS]]>
	</result_code>
	<prepay_id>
		<![CDATA[wx2016050912001362f6e315510009178410]]>
	</prepay_id>
	<trade_type>
		<![CDATA[JSAPI]]>
	</trade_type>
</xml>
其中最重要的就是prepay_id了-我们可以在后台JAVA取出此id返回给前台,但是前台调起支付界面还需要其他的参数,如下:也就是在后台一要获取prepay_id,二要取得当前十位数字的时间戳,三要将下面的五个参数进行签名

"appId" : '${success.appId}',     //公众号名称,由商户传入
"timeStamp":'${success.timeStamp}',         //时间戳,自1970年以来的秒数【注意是秒数10位的】
"nonceStr":'${success.nonceStr}', //随机串,同上篇博文的随机算法
"package":'${package1}',
"signType":"MD5",         //微信签名方式:MD5
"paySign":'${success.paySign}' //微信签名,在后台将上面五个参数进行签名,签名算法同上一篇博文


遇到的错误:

1.暂时不支持此sdk模拟

因为我用的微信的开发工具测试的所以有这个提示,微信支付不能使用这个进行测试,直接用真实的微信在手机上测试

2.授权目录一定要写对:当前页面的url未注册。将要支付的微信加入测试白名单,测试授权目录填写正确【付款页面必须在此页面下,支付地址也要在此文件夹下,注意我使用的SpringMVC,即使发送的请求是locahost:/pay.do--也要改为localhost/pages/pay.do】



3.JS回调域名要在测试域名下,还是建议我写的微信测试本地化环境搭建那样,用ngrok搭建本地环境

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值