微信支付的方式有以下几种,具体链接:https://pay.weixin.qq.com/wiki/doc/api/index.html 在微信浏览器中做支付统一使用JSAPI支付,即支付类型为: Trade_type("JSAPI");该方式适用于公众号和小程序支付。效果如图: [图片] 关于JSAPI支付demo参考我的技术贴:https://blog.csdn.net/weixin_42433970/article/details/97661803 如果你是H5支付的话就选择该页面中https://pay.weixin.qq.com/wiki/doc/api/index.html 的H5支付。
h5页面在微信浏览器中可以唤醒微信支付吗?我做了一个h5页面,想在微信浏览器中打开并实现微信支付,请问用哪个接口啊?
2019-08-15微信支付的重点是两次签名,微信支付的核心都是计算签名与正在签名的路上。 第一次签名是为了获得预支付ID即: 只要调用统一下单接口就能获得这个参数。格式如下: "package": "prepay_id=wx30111002654823a0028a69991003130900", 第二次签名是把微信服务器返回的参数再签名一次,这次签名主要是提供给前端调用,即调起微信支付时的必须参数。 例如小程序: wx.requestPayment({ timeStamp: '1564371379', nonceStr: 'JoTcEhgphkSAXPcpSqYFqKFUDMktGulc', package: 'prepay_id=wx29113619598850b0682884011250194100', signType: 'MD5', paySign: '86BFA0E44B87FF783BB575F0B9FE584C', success (res) { }, fail (res) { } }) 例如公众号: WeixinJSBridge.invoke('getBrandWCPayRequest',{ "appId":"你知道的", "timeStamp":"1564447668", "nonceStr":"GdvVpOMQMalJZRIWwqZdHhEfkgmTZrDl", "package":"prepay_id=wx30084748300502f4ebd6c03a1574592700", "signType" : "MD5", "paySign":"D99537A0D3AB73EE4E752B315974732E" },function(res){}一定要把签名搞明白了,sdk中已经写的很明白了,下面再说一下签名步骤, 第一次签名有10个参数,必须按字典排序对了哦,然后把生成的签名当做一个参数传给xml 这11个参数中只有三个是重要的【 $appid // 这个不用说了,公众号ID。$mch_id // 商户号,开通微信支付,这个就是V信给你的银行卡号$openid //自己去公众号后台看下关注列表,一定要是自己的,谁支付就是谁的】,其他都是随便写的。 这里再跟大家普及一下签名: /** * 签名函数 *方法: 签名步骤一:按字典序排序参数 ksort($this->values); $string = $this->ToUrlParams(); 签名步骤二:在string后加入KEY $string = $string . "&key=".WxPayConfig::KEY; 签名步骤三:MD5加密 $string = md5($string); 签名步骤四:所有字符转为大写 $result = strtoupper($string); * @return string */ public function sign($data){ $stringA = ''; foreach ($data as $key=>$value){ if(!$value) continue; if($stringA) $stringA .= '&'.$key."=".$value; else $stringA = $key."=".$value; } $wx_key = 'xxxxxxxxxxxxxxxxxxx';//这个密匙请正确填写,自己在公众号 后台找,会跟着你的appid在一起 $stringSignTemp = $stringA.'&key='.$wx_key; return strtoupper(md5($stringSignTemp)); } 第二次签名是把第一签名的几个参数再签名一次,方法一样。把这5个按字典排序再签一次名。 $tmp['appId'] = $appid; $tmp['nonceStr'] = $nonce_str; $tmp['package'] = 'prepay_id=' . $array['PREPAY_ID']; $tmp['signType'] = 'MD5'; $tmp['timeStamp'] = "$time"; 以上所有步骤完成之后, 返回这样的json字符串,接口就搞定完成了。(postman调试) [图片]
小程序调起支付时报支付签名验证失败[图片] [图片] [图片] [图片]
2019-07-30