支付寶移動接口服務端生成簽名串代碼


 1 $ali = array(
 2           'service' => 'mobile.securitypay.pay',
 3           'partner' => 'xxxxxxxxxx',//
 4           '_input_charset' => 'utf-8',
 5           'sign_type' => 'RSA',
 6           'sign' => '',
 7           'notify_url' => urlencode($url),//回調地址
 8           'out_trade_no' => $ordernu,//商戶網站唯一訂單號
 9           'subject' => $cpPayName,//商品名稱
10           'payment_type' => 1,//支付類型
11           'seller_id' => '',//支付寶賬號
12           'total_fee' => $cpPrice,//總金額
13           'body' => $cpPayName,//商品詳情
14        );
15 $ali = argSort($ali);
16 $str = '';
17             
18 foreach($ali as $key=>$val){
19   if($key == 'sign_type' || $key == 'sign'){
20        continue;
21   }else{
22     if($str == ''){
23           $str = $key.'='.'"'.$val.'"';
24       }else{
25           $str = $str.'&'.$key.'='.'"'.$val.'"';
26       }
27   }
28 }
29             
30             
31 $sign = urlencode(sign($str));
32 $str = $str.'&sign='.'"'.$sign.'"'.'&sign_type='.'"'.$ali['sign_type'].'"';//傳給支付寶接口的數據
33 
34
35 function argSort($para) {
36         ksort($para);
37         reset($para);
38         return $para;
39     }
40 
41 //RSA簽名
42     function sign($data) {
43 
44         //讀取私鑰文件
45 
46         $priKey = file_get_contents('key/rsa_private_key.pem');//私鑰文件路徑
47         //轉換為openssl密鑰,必須是沒有經過pkcs8轉換的私鑰
48         
49         $res = openssl_get_privatekey($priKey);
50 
51         //調用openssl內置簽名方法,生成簽名$sign
52 
53         openssl_sign($data, $sign, $res);
54 
55 
56         //釋放資源
57 
58         openssl_free_key($res);
59 
60         
61         //base64編碼
62 
63         $sign = base64_encode($sign);
64 
65         return $sign;
66 
67     }

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM