百度小程序支付需注意以下几点-php

1.检查服务器openssl支持版本与生成pem文件的openssl版本是否一致

2.官方给出PHP的签名类(RSASign)中私钥生成签名时开始与结束标签中没有RSA会返回false,

公钥验证签名时,不需要RSA,注意空格(重要)

3.openssl推荐通过exe文件安装,命令行安装需很多依赖,安装完成后配置环境变量中的系统变量Path至安装目录即可

4.执行以下命令生成公私钥(3个pem文件,可用文本打开)

OpenSSL> genrsa -out rsa_private_key.pem 1024 (私钥,PHP)

OpenSSL> pkcs8 -topk8 -inform PEM -in rsa_private_key.pem -outform PEM -nocrypt -out rsa_private_key_pkcs8.pem (私钥,JAVA)

OpenSSL> rsa -in rsa_private_key.pem -pubout -out rsa_public_key.pem (公钥)

OpenSSL> exit (退出)

唤起百度支付(前端),原生需将uni标签改为swan

uni.requestPayment({

    provider:'baidu',

    orderInfo:result.data,

  success:(res)=>{

  console.log(res)

  },

  fail:(res)=>{

  console.log(res)

  }

    })

PHP返回支付信息(后端)

$baiduSign = new RSASign;  //官方RSASign类

$signStr = $baiduSign::sign(  //私钥字符串不带pem前后缀

['appKey'=>Config::get('appKey'),'dealId'=>Config::get('dealId'),'totalAmount'=>$order_data['total_price'],'tpOrderId'=>$order_data['order_no']],Config::get('rsaPriKeyStr')

);

if(isset($order_data['order_no'])){

return $this->renderSuccess(

    ['tpOrderId'=>$order_data['order_no'],

    'dealTitle'=>$params['title'],

    'rsaSign'=>$signStr,

    'dealId'=>Config::get('dealId'),

    'appKey'=>Config::get('appKey'),

    'totalAmount'=>$order_data['total_price'],  //这里单位为分,签名参数需一致,否则会签名验证失败

    'signFieldsRange'=>'1']

);

} else {

return $this->renderError('统一收单失败');

}

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容