本文描述了JS通过调用微信API实现微信支付功能的方法。分享给大家参考,如下:
最近在做微信微信官方账号开发,遇到了一些微信支付的问题。困惑了3天,今天终于明白了。在此期间,我要感谢一些大神的帮助,趁热分享我的经历。
在实现微信支付之前,需要去微信开发平台进行认证。我不会谈论这些身份验证和配置信息。这里主要从代码层面实现支付。
函数onbridgeready(){ weishinsbridge . invoke(' getbrandwcpayrequest ',{'appid':' wx2421b1c4370ec43b ',//微信官方账号名称,由商家传入' timeStamp':' 1395712654 ',//timestamp,自1970年以来的秒数' nonce str ':' e 61463 F8 EFA 94090 B1 f 366 cccfbbb 444 ',//随机字符串' package ':' predat _ id=U4如果(res.err_msg=' get _ brand _ wcpay _ request:ok '){ }//使用上述方法判断前端返回,微信团队郑重提示,用户支付成功后RES . err _ msg会返回ok,但不保证绝对可靠。} );}if(类型为weixinsbridge==' undefined '){ if(document . addeventlistener){ document . addeventlistener(' weixinsbridgeready ',onBridgeReady,false);} else if(document . attachevent){ document . attachevent(' weixinsbridgeready ',onBridgeReady);document . attachevent(' onweixinsbridgeready ',onBridgeReady);} } else { OnbridgeReady();}上面的JS代码发布在官方文档上,官方文档:https://pay.weixin.qq.com/wiki/doc/api/jsapi.php?章=7_7。
以下是JS :中几个参数的主要解释
在开发过程中,有四个非常重要的参数:一个是appid、AppSecret、apikey和商户号。上面js中的appID就是其中之一。时间戳是一个10位数的时间戳,非时间戳是一个32位数以内的随机数。这里最重要的两个参数是包和支付标志。我一个一个告诉你。先说套餐。这里我们需要使用预付费_id。这个参数是微信生成的订单号,我们需要调用统一的订单界面才能得到。正式文件:https://pay.weixin.qq.com/wiki/doc/api/jsapi.php?章=9_1 .从文档中可以看出,要获得预付费_id需要很多参数,其中最重要的参数之一就是签名。请注意,中的签名不同于JS中的支付签名。在签名算法文档里有,但我只是强调两点。一个是参数的顺序,必须按照ASCII从小到大进行拼接。另一个是apikey一定不会错。这把钥匙在哪里?您可以通过登录商家平台进行设置。
拼接签名所需的字符串后,通过MD5加密即可得到签名。然后将签名和前面的所有参数组合成一个xml格式的字符串,并调用接口URL地址:https://api.mch.weixin.qq.com/pay/unifiedorder返回一个xml结果,解析出其中的predate _ id,从而成功获取这个参数。
JS中的最后一个参数,PaySign:将在下面讨论。支付签名的算法是一样的,依次拼接JS中的其他五个参数,加入apikey、MD5加密,ok。
签名算法都一样,但是参数值不同。这里需要注意一点。支付签名时,使用随机数nonceStr和timeStamp,签名和JS中使用的两个参数应该具有相同的值,即相同的随机数和时间戳。为什么呢?文件虽然没有说,但我的理解是,支付签名是由随机数和时间戳生成的,然后在支付过程中将随机数、时间戳和支付签名一起发送。微信验证时,js中随机数和时间戳生成的签名会与你发送的支付签名进行比对。如果您在js中重新获取新的随机数和时间戳,计算出的签名将与您发送的签名不同,并将报告一个错误。
在这一点上,在代码层面只有几点需要注意。当然,还有其他需要注意的点。比如有用的openid,需要通过调用接口获取,支付授权的目录是否配置正确。
最后一句总结:仔细看文件。最后,问问别人。可以找到与微信支付相关的群。里面有很多大神。之前遇到一个问题,纠结了2天。(有时候不能只看文档),
然后愤怒地加了8个微信开发群,最后在高层的带领下出来了。再次感谢。程序员是一个分享的群体,他们很乐意分享自己知道的东西。所以当你不明白的时候,多问问。
更多对JavaScript相关内容感兴趣的读者可以查看本网站专题:《JavaScript中json操作技巧总结》、《JavaScript切换特效与技巧总结》、《JavaScript错误与调试技巧总结》、《JavaScript数据结构与算法技巧总结》、《JavaScript遍历算法与技巧总结》、《JavaScript数学运算用法总结》、0103010。
希望本文对JavaScript编程有所帮助。