小程序
小游戏
企业微信
微信支付
扫描小程序码分享
4 个回答
加粗
标红
插入代码
插入链接
插入图片
上传视频
微信支付的重点是两次签名,微信支付的核心都是计算签名与正在签名的路上。
第一次签名是为了获得预支付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));}
$wx_key = 'xxxxxxxxxxxxxxxxxxx';//这个密匙请正确填写,自己在公众号
后台找,会跟着你的appid在一起
第二次签名是把第一签名的几个参数再签名一次,方法一样。把这5个按字典排序再签一次名。
$tmp['appId'] = $appid;$tmp['nonceStr'] = $nonce_str;$tmp['package'] = 'prepay_id=' . $array['PREPAY_ID'];$tmp['signType'] = 'MD5';$tmp['timeStamp'] = "$time";
以上所有步骤完成之后,
返回这样的json字符串,接口就搞定完成了。(postman调试)
你好,麻烦通过点击下方“反馈信息”按钮,提供出现问题的。
1,KEY值有误。2,下单和调起支付签名type不一致。3,调起支付的sign是从下单的值过来的没有重新签。检查一下。可以用官方的验证工具先试一下参数。
https://blog.csdn.net/qq_41974199/article/details/104285940
求大佬帮忙看一下有错吗
关注后,可在微信内接收相应的重要提醒。
请使用微信扫描二维码关注 “微信开放社区” 公众号
微信支付的重点是两次签名,微信支付的核心都是计算签名与正在签名的路上。
第一次签名是为了获得预支付ID即:
只要调用统一下单接口就能获得这个参数。格式如下:
"package": "prepay_id=wx30111002654823a0028a69991003130900",
第二次签名是把微信服务器返回的参数再签名一次,这次签名主要是提供给前端调用,即调起微信支付时的必须参数。
例如小程序:
例如公众号:
一定要把签名搞明白了,sdk中已经写的很明白了,下面再说一下签名步骤,
第一次签名有10个参数,必须按字典排序对了哦,然后把生成的签名当做一个参数传给xml
这11个参数中只有三个是重要的【
$appid // 这个不用说了,公众号ID。
$mch_id // 商户号,开通微信支付,这个就是V信给你的银行卡号
$openid //自己去公众号后台看下关注列表,一定要是自己的,谁支付就是谁的
】,其他都是随便写的。
这里再跟大家普及一下签名:
第二次签名是把第一签名的几个参数再签名一次,方法一样。把这5个按字典排序再签一次名。
以上所有步骤完成之后,
返回这样的json字符串,接口就搞定完成了。(postman调试)
1,KEY值有误。2,下单和调起支付签名type不一致。3,调起支付的sign是从下单的值过来的没有重新签。检查一下。可以用官方的验证工具先试一下参数。
https://blog.csdn.net/qq_41974199/article/details/104285940
求大佬帮忙看一下有错吗