WxPayApi::unifiedOrder($config,$wxOrderData)返回参数签名的问题求助:
来源:10-26 支付的服务器端编写 九
the_blessed
2020-01-01
WxPayApi::unifiedOrder(config,config,config,wxOrderData)返回参数签名的问题求助:
private function getPaySignature($wxOrderData){
$config = new WxPayConfig();
$wxOrder = WxPayApi::unifiedOrder($config,$wxOrderData);
if ($wxOrder['return_code'] != 'SUCCESS' || $wxOrder['result_code'] != 'SUCCESS'){
Log::record($wxOrder,'error');
Log::record('获取预支付订单失败','error');
}
//prepay_id
$this->recordPreOrder($wxOrder);
$signature = $this->sign($wxOrder,$config);
return $signature;
}
private function sign($wxOrder,$config){
$jsApiPayData = new WxPayJsApiPay();
$jsApiPayData->SetAppid(config(['wx.app_id']));
$jsApiPayData->SetTimeStamp((string)time());
$rand = md5(time() . mt_rand(0,1000));
$jsApiPayData->SetNonceStr($rand);
$jsApiPayData->SetPackage('prepay_id='.$wxOrder['prepay_id']);
$jsApiPayData->SetSignType('md5');
$sign = $jsApiPayData->MakeSign($config);
$rawValues = $jsApiPayData->GetValues();
$rawValues['paySign'] = $sign;
unset($rawValues['appId']);
return $rawValues;
}
getPaySignature方法中的config = new WxPayConfig(),是我对SDK中的抽象接口类的重定义的一个类;我在这里建立了这个对象,是因为在WxPayApi::unifiedOrder(config,wxOrderData)和MakeSign(config)方法中都用到这个对象,在定义sign这个方法时,我也比你视频里面的多了一个参数,用来接收config这个对象,供sign里调用MakeSign方法时用;
我上面这样做是不是对的?如果是对的,那sign方法中的SetSignType(‘md5’)是不是要删除?因为我看到MakeSign方法中去调用了Config对象中对应的方法确定了签名类型。
我在小程程序开发工具中,点“申请令牌”—》支付,可以在我的小程序开发工具上面显示一个二维码,但是我用我的微信扫一下,手机微信上显示“支付验证签名失败”
写回答
3回答
-
草芽有芳华
2020-08-06
你解决这个问题了吗?
022020-08-06 -
7七月
2020-01-03
签名类型应该不是这个问题,文档发来我看下
00 -
the_blessed
提问者
2020-01-01
我在小程程序开发工具中,点“申请令牌”---》支付,可以在我的小程序开发工具上面显示一个二维码,但是我用我的微信扫一下,手机微信上显示“支付验证签名失败”
00
相似问题