国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 語言 > PHP > 正文

PHP實(shí)現(xiàn)RSA簽名生成訂單功能【支付寶示例】

2024-05-04 23:57:47
字體:
供稿:網(wǎng)友

本文實(shí)例講述了PHP實(shí)現(xiàn)RSA簽名生成訂單功能。分享給大家供大家參考,具體如下:

//組合簽名$a=time();$b=substr($a, 1);//生成隨機(jī)訂單號(hào)$orderid= $b.mt_rand(10000,99999);//合作身份者id,以2088開頭的16位純數(shù)字$mygoods['partner']="2088011744308664";//商家賬號(hào)$mygoods['seller']="2088011744308664";//訂單號(hào)$mygoods['out_trade_no']=$orderid;//主題$mygoods['subject']=$goods_name;//商品描述信息$mygoods['body']=$goods_infro;//商品價(jià)格$mygoods['total_fee']=$score;//服務(wù)器端異步響應(yīng)地址$mygoods['notify_url']= "http://211.149.220.47/php/notify_url.php";//排序$mygoods = argSort($mygoods);//拼接$mystr = createLinkstring($mygoods);//簽名$sign = rsaSign($mystr);//對簽名進(jìn)行urlencode轉(zhuǎn)碼$sign = urlencode($sign);//生成最終簽名信息$orderInfor = $mystr."&sign=".$sign."&sign_type=RSA";/*******特殊的 驗(yàn)簽支付寶反饋給App的簽名信息*******///支付寶反饋給App端信息拆解如下$str = 'body=%E7%B2%BE%E5%93%81%E5%84%BF%E7%AB%A5%E4%B9%A6%E5%8C%85%E5%96%9C%E6%B4%8B%E6%B4%8B%E7%9A%84¬ify_url=http%3A%2F%2F211.149.220.47%2Fphp%2Fnotify_url.php&out_trade_no=40609294027478&partner=2088011744308664&seller=2088011744308664&subject=%E4%B9%A6%E5%8C%85&success=true&total_fee=0.01';//被拆解后的支付寶簽名$sign = 'Itorzqous2F7kYWWOpmoB%2FJUYgySRzh%2FOOKMhVhv%2BM48CnFk%2BQCp2cKcSsNGcDTs2AsAk%2BRYTuyMYZkGH56t8jcV2GGFkrJr%2FPxcGRlEK08QadAhImYzy9piVjoW0102lhSJYapiXGBTl5eiZ88RiyRA62D2nJEtH%2FBVXpuq63A%3D';//得到簽名$sign = urldecode($sign);//得到待簽名字符串$str = urldecode($str);//驗(yàn)簽數(shù)據(jù),驗(yàn)簽成功將返回true 否則 flasevar_dump(verify($str, $sign));/*************************需要使用到的方法*******************************//** * 把數(shù)組所有元素,按照“參數(shù)=參數(shù)值”的模式用“&”字符拼接成字符串 * @param $para 需要拼接的數(shù)組 * return 拼接完成以后的字符串 */function createLinkstring($para) {  $arg = "";  while (list ($key, $val) = each ($para)) {    $arg.=$key."=".$val."&";  }  //去掉最后一個(gè)&字符  $arg = substr($arg,0,count($arg)-2);  //如果存在轉(zhuǎn)義字符,那么去掉轉(zhuǎn)義  if(get_magic_quotes_gpc()){$arg = stripslashes($arg);}  return $arg;}/** * 對數(shù)組排序 * @param $para 排序前的數(shù)組 * return 排序后的數(shù)組 */function argSort($para) {  ksort($para);  reset($para);  return $para;}/** * RSA簽名 * @param $data 待簽名數(shù)據(jù) * @param $private_key_path 商戶私鑰文件路徑 * return 簽名結(jié)果 */function rsaSign($data, $private_key_path) {  $priKey = file_get_contents($private_key_path);  $res = openssl_get_privatekey($priKey);  openssl_sign($data, $sign, $res);  openssl_free_key($res);  //base64編碼  $sign = base64_encode($sign);  return $sign;}/**RSA驗(yàn)簽 * $data待簽名數(shù)據(jù) * $sign需要驗(yàn)簽的簽名 * 驗(yàn)簽用支付寶公鑰 * return 驗(yàn)簽是否通過 bool值 */function verify($data, $sign) {  //讀取支付寶公鑰文件  $pubKey = file_get_contents('key/alipay_public_key.pem');  //轉(zhuǎn)換為openssl格式密鑰  $res = openssl_get_publickey($pubKey);  //調(diào)用openssl內(nèi)置方法驗(yàn)簽,返回bool值  $result = (bool)openssl_verify($data, base64_decode($sign), $res);  //釋放資源  openssl_free_key($res);  //返回資源是否成功  return $result;}

希望本文所述對大家PHP程序設(shè)計(jì)有所幫助。


注:相關(guān)教程知識(shí)閱讀請移步到PHP教程頻道。
發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表

圖片精選

主站蜘蛛池模板: 象山县| 来宾市| 浦县| 潢川县| 南宫市| 岳西县| 通榆县| 和平区| 丰城市| 靖边县| 清流县| 咸宁市| 新和县| 松原市| 宝丰县| 淮北市| 通河县| 南昌县| 呼和浩特市| 山阴县| 咸阳市| 娄底市| 塔河县| 澄江县| 六安市| 昔阳县| 柳河县| 平邑县| 东明县| 南雄市| 于田县| 唐海县| 肥西县| 高阳县| 鄂托克旗| 车险| 三穗县| 宁陕县| 台北市| 九台市| 南开区|