百度小程序支付天坑:
下载openssl window下安装启动 获取公钥与私钥 用于验证
需要RSA私钥 和平台开发者公钥
根据文档请求获取拉起百度收银台的数据
这里有个坑
$ret['errno'] = 0;
$ret['msg'] = 'success';
$ret['data'] = array('isConsumed'=>2);
echo json_encode($ret);exit;
支付成功必须返回isConsumed的值 代表订单状态 如果不返回或返回错误 就没法退款了,
百度贼坑你还不能平台手动退款 需要发邮件让客户给你处理退款 真够反人类的还是鹅厂正常点
/**
* 私钥生成签名
* @param array $assocArr
* @param $priKey
* @param bool $rsaPriKeyStr
* @return string
*/
private function genSignWithRsa(array $assocArr,$priKey, $rsaPriKeyStr = true){
$sign = '';
if (empty($rsaPriKeyStr) || empty($assocArr)) {
return $sign;
}
$priKey = chunk_split($priKey, 64, "\n");
$priKey = "-----BEGIN RSA PRIVATE KEY-----\n$priKey-----END RSA PRIVATE KEY-----\n";
if (isset($assocArr['sign'])) {
unset($assocArr['sign']);
}
ksort($assocArr); //按字母升序排序
$parts = array();
foreach ($assocArr as $k => $v) {
$parts[] = $k . '=' . $v;
}
$str = implode('&', $parts);
openssl_sign($str, $sign, $priKey);
return base64_encode($sign);
}
/**
* 公钥校验签名
* @param array $assocArr
* @param bool $rsaPubKeyStr
* @return bool
*/
private function checkSignWithRsa(array $assocArr ,$rsaPubKeyStr = true){
if (!isset($assocArr['sign']) || empty($assocArr) || empty($rsaPubKeyStr)) {
return false;
}
$sign = $assocArr['sign'];
unset($assocArr['sign']);
if (empty($assocArr)) {
return false;
}
ksort($assocArr); //按字母升序排序
$parts = array();
foreach ($assocArr as $k => $v) {
$parts[] = $k . '=' . $v;
}
$str = implode('&', $parts);
$sign = base64_decode($sign);
$pubKey = 'bd_pub_key'; // 公钥串
$pubKey = chunk_split($pubKey, 64, "\n");
$pubKey = "-----BEGIN PUBLIC KEY-----\n$pubKey-----END PUBLIC KEY-----\n";
$result = (bool)openssl_verify($str, $sign,$pubKey);
return $result;
}
MIICXAIBAAKBgQCm0ZFcSygrPeMcVeirUsvRVZuMNsj3hG2BLTk4e2uQEljRc/TmrNmj4oZC3Cg9FJipUR1VgVFUmIzx6fE0aiEWW3nX15Z60AJ56l7TEAHSLPGtKrw2mVJHlwCpPMyXsruR9OQFN+e4BxlwLWVW4bydtMqR0TgLxcdUfNjuNThNtQIDAQABAoGAGwMMOpmg43+d6tSuXC+H+VmXWlj0qb+zy5r7DP5PKIEQCLpyCXgrtbHUc7cafOl83s3XpiTOephJGlL7T7VvreAS0Lo/bmlMObr2Mllig0SiBCvlCKBMjTs7DR8czHvVFndn8FGvFsy/NnjLXybB9/WqU1KxVd5jO6kheeJgEXECQQDadFVD4D1/JD2HpHW4tBUeXiYgmUoVraOiSJn9CUtRHEACA6FMCkRlTrpr73YkKxT/Lh6ddH1PWOklB95qz8e3AkEAw31WQqcS7+yKX3LtUistfmHo73mQO7ntx41/Oh6wPOqge76HAZcxJrZ3CLm3AOUIYWmrh8t0m9g5clNBrpId8wJABB61jPYpssAoOOqtHbKnw07bQToi343KzEC6Rr9qIDl8K42N+TUoXRDDC04U2FHHr5hbE3Ui9+AhZYVkeHc6uQJBAJF8BKdD+ZbunagdOrsNASVuLlGSUaHxZCE/j7CsSBJ9toOBLq4jW+PopTusIqKa0JrWbl54LscQqugHR/loKrsCQCe0UVJFzOJNsDC1+RxwD0izhs/TF8m+NuqJWw8Rq2gbC7XpTXD2CaPa9MwMImGM0DAZfQ+8ZZ9d9c78akGtjm4=';//RSA私钥
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCm0ZFcSygrPeMcVeirUsvRVZuMNsj3hG2BLTk4e2uQEljRc/TmrNmj4oZC3Cg9FJipUR1VgVFUmIzx6fE0aiEWW3nX15Z60AJ56l7TEAHSLPGtKrw2mVJHlwCpPMyXsruR9OQFN+e4BxlwLWVW4bydtMqR0TgLxcdUfNjuNThNtQIDAQABWEAPON';//开发者公钥
吐槽一下牛逼点