日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 人文社科 > 生活经验 >内容正文

生活经验

php+rsa生成签名sign,PHP 做 RSA 签名 生成订单(支付宝例子)

發布時間:2023/11/27 生活经验 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 php+rsa生成签名sign,PHP 做 RSA 签名 生成订单(支付宝例子) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

/組合簽名

$a=time();

$b=substr($a, 1);

//生成隨機訂單號

$orderid= $b.mt_rand(10000,99999);

//合作身份者id,以2088開頭的16位純數字

$mygoods['partner']="2088011744308664";

//商家賬號

$mygoods['seller']="2088011744308664";

//訂單號

$mygoods['out_trade_no']=$orderid;

//主題

$mygoods['subject']=$goods_name;

//商品描述信息

$mygoods['body']=$goods_infro;

//商品價格

$mygoods['total_fee']=$score;

//服務器端異步響應地址

$mygoods['notify_url']= "http://211.149.220.47/php/notify_url.php";

//排序

$mygoods = argSort($mygoods);

//拼接

$mystr = createLinkstring($mygoods);

//簽名

$sign = rsaSign($mystr);

//對簽名進行urlencode轉碼

$sign = urlencode($sign);

//生成最終簽名信息

$orderInfor = $mystr."&sign=".$sign."&sign_type=RSA";

/*******特殊的 驗簽支付寶反饋給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&notify_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);

//驗簽數據,驗簽成功將返回true 否則 flase

var_dump(verify($str, $sign));

/*************************需要使用到的方法*******************************/

/**

* 把數組所有元素,按照“參數=參數值”的模式用“&”字符拼接成字符串

* @param $para 需要拼接的數組

* return 拼接完成以后的字符串

*/

function createLinkstring($para) {

$arg = "";

while (list ($key, $val) = each ($para)) {

$arg.=$key."=".$val."&";

}

//去掉最后一個&字符

$arg = substr($arg,0,count($arg)-2);

//如果存在轉義字符,那么去掉轉義

if(get_magic_quotes_gpc()){$arg = stripslashes($arg);}

return $arg;

}

/**

* 對數組排序

* @param $para 排序前的數組

* return 排序后的數組

*/

function argSort($para) {

ksort($para);

reset($para);

return $para;

}

/**

* RSA簽名

* @param $data 待簽名數據

* @param $private_key_path 商戶私鑰文件路徑

* return 簽名結果

*/

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驗簽

* $data待簽名數據

* $sign需要驗簽的簽名

* 驗簽用支付寶公鑰

* return 驗簽是否通過 bool值

*/

function verify($data, $sign) {

//讀取支付寶公鑰文件

$pubKey = file_get_contents('key/alipay_public_key.pem');

//轉換為openssl格式密鑰

$res = openssl_get_publickey($pubKey);

//調用openssl內置方法驗簽,返回bool值

$result = (bool)openssl_verify($data, base64_decode($sign), $res);

//釋放資源

openssl_free_key($res);

//返回資源是否成功

return $result;

}

PHP實現RSA簽名生成訂單功能【支付寶示例】

//組合簽名 $a=time(); $b=substr($a, 1); //生成隨機訂單號 $orderid= $b.mt_rand(10000,99999); //合作身份者id,以2088開頭的1 ...

Loadrunner時間函數、用時間生成訂單編號例子

Loadrunner中取時間函數.用時間函數生成訂單編號例子: 問題的提出: (1)有時候在Loadrunner中用C語言設計腳本 ...

RSA簽名 python PHP demo 例子

python RSA+MD5簽名demo: #!/usr/bin/env python2.7 #coding:utf-8 import base64 from Crypto.PublicKey imp ...

支付寶RSA簽名

1.參考網上相關文章,開放php中的openssl,但使用網上例子調用openssl_pkey_new,一直報100013錯誤.后改用用支付寶提供的SDKdemo程序 發現使用提供的privkye,可 ...

用openssl生成SSL使用的私鑰和證書,并自己做CA簽名(轉)

本 文記敘的是一次基于SSL的socket通訊程序開發中,有關證書,簽名,身份驗證相關的步驟. 我們的場景下,socket服務端是java語言編寫的,客戶端是c語言.使用了一個叫做matrixssl的 ...

使用OpenSSL做RSA簽名驗證 支付寶移動快捷支付 的server異步通知

因為業務須要.我們須要使用支付寶移動快捷支付做收款.支付寶給了我們見支付寶包. 支付寶給的serve ...

開發支付寶支付用DELPHI實現 RSA簽名

近來根據業務需求 在ERP中集成了微信支付,支付寶支付,開發支付寶支付時最大的障礙就是RSA簽名,找了很多資料,最終用 下了個libeay32.pas? 根據網上資料最終解決了問題 function? ...

RSA密鑰生成、加密解密、簽名驗簽

RSA 非對稱加密公鑰加密,私鑰解密 私鑰簽名,公鑰驗簽 下面是生成隨機密鑰對: //隨機生成密鑰對 KeyPairGenerator?keyPairGen?=?null; try?{ keyPair ...

支付寶RSA簽名之Delphi實現

Delphi有個很大的問題就是,廠商的不作為(沒有封裝標準的Cipher類庫),讓大家自己造輪子. 今天的輪子就是RSA簽名,由于Delphi沒有封裝Cipher類庫,所以只的自己寫了. 因為要在Fi ...

隨機推薦

C#刨根究底:《你必須知道的.NET》讀書筆記系列

一.此書到底何方神圣? 來自于微軟MVP—王濤(網名:AnyTao,博客園大牛之一,其博客地址為:http://anytao.cnblogs.com/)的最新技術心 ...

Centos安裝Memcached和(Nginx)Memcache擴展詳細教程

下載memadmin,下載地址:http://www.junopen.com/memadmin/?并在IIS新建站點.?測試地址:http://wap.yousawang.com/mem , 1.重啟 ...

javascript中獲取屏幕尺寸

Javascript獲取獲取屏幕.瀏覽器窗口 ,瀏覽器,網頁高度.寬度的大小 屏幕的有效寬:window.screen.availHeight屏幕的有效高:window.screen.availWid ...

centos 7.0 ln命令 和chkconfig 命令介紹 開機自動啟 服務

有時候centos需要 程序開機啟動的時候 ?自啟動 首先在 /etc/init.d/ cd /etc/init.d 文件夾下建立開機啟動項 使用ln命令 使用方式 : ln [options] so ...

Javascript的怪癖

1.匿名函數在不閉包的情況下this對象為window,而在雙匿名閉包的情況下內部匿名函數的this對象為window. 2.在函數中定義變量,在函數外部想使用該變量,如果變量聲明時有var,則訪問不 ...

打開Excel時提示"您嘗試打開的文件**.xls的格式與文件擴展名指定的格式不一致"

問題描述: ??? 系統安裝了WPS時,Analyzer導出excel時候,會提示"您嘗試打開的文件**.xls的格式與文件擴展名指定的格式不一致",這是Excel的安全問題, ? ...

ZOJ1586——QS Network(最小生成樹)

QS Network DescriptionIn the planet w-503 of galaxy cgb, there is a kind of intelligent creature nam ...

KEIL、uVision、RealView、MDK、KEIL C51區別比較

KEIL uVision,KEIL MDK,KEIL For ARM,RealView MDK,KEIL C51,KEIL C166,KEIL C251 從接觸MCS-51單片機開始,我們就知道有一個 ...

分享 C++圖像處理的代碼簡易示例

采用Decoder:stb_image https://github.com/nothings/stb/blob/master/stb_image.h 采用Encoder:tiny_jpeghttps ...

Go基礎系列:互斥鎖Mutex和讀寫鎖RWMutex用法詳述

sync.Mutex Go中使用sync.Mutex類型實現mutex(排他鎖.互斥鎖).在源代碼的sync/mutex.go文件中,有如下定義: // A Mutex is a mutual exc ...

總結

以上是生活随笔為你收集整理的php+rsa生成签名sign,PHP 做 RSA 签名 生成订单(支付宝例子)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。