收藏
回答

小程序下单中的Authorization如何进行签名?

//签名生成
	public function sign_encode($body = ''){
		// Authorization: <schema> <token>
		$nostr = $this->GetRandStr(32); //随机字符串
		$timestamp = time(); //时间戳
		$mchid = $this->mchid; //商户ID
		$serial_no = $this->serial_no; //商户的APIv3密钥
		$url = 'https://api.mch.weixin.qq.com/v3/pay/partner/transactions/jsapi'; //请求下单的地址
		$http_method = 'POST'; //提交方式
		$url_parts = parse_url($url); 
		$canonical_url = ($url_parts['path'] . (!empty($url_parts['query']) ? "?${url_parts['query']}" : "")); //这个是官方样例里面的 
		$mch_private_key = file_get_contents('./static/wechatkey/apiclient_key.pem'); //取出商户的KEY
		$message = $http_method."\n".$canonical_url."\n".$timestamp."\n".$nostr."\n".$body."\n"; //拼接加密字符串
		openssl_sign($message, $raw_sign, $mch_private_key, 'sha256WithRSAEncryption'); //进行加密
		$sign = base64_encode($raw_sign); //加密
		//$schema = 'WECHATPAY2-SHA256-RSA2048'; //官方写的 完全不知道干啥用就注释了
		$token = sprintf('mchid="%s",nonce_str="%s",timestamp="%d",serial_no="%s",signature="%s"',$mchid, $nostr, $timestamp, $serial_no, $sign); //得出结果 然后传递给Authorization这个头文件
		return $token;
	}
回答关注问题邀请回答
收藏

2 个回答

  • 支付社区运营
    支付社区运营
    2020-12-07

    您好,您的问题建议您前往微信支付APIV3文档, 点击右下角‘技术咨询’实时寻求技术帮助。若您的问题得到解决,请回社区晒出解决方案,以帮助更多遇到此问题的人,感谢您的支持~

    2020-12-07
    有用
    回复
  • 佳
    2020-12-02

    Http头Authorization值格式错误,请参考《微信支付商户REST API签名规则》返回的永远是这个

    2020-12-02
    有用
    回复
登录 后发表内容
问题标签