forked from terrancy/PaySDK
-
Notifications
You must be signed in to change notification settings - Fork 0
/
weChatSDK.php
82 lines (73 loc) · 2.66 KB
/
weChatSDK.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
<?php
class weChatSDK{
private $dirWeChat= "";
private $unifiedOrder;
function __construct(){
$this->dirWeChat = dirname(__FILE__)."/weChat";
}
function getOrderUnifiedInit(){
require $this->dirWeChat."/WxPayPubHelper.php";
$this->unifiedOrder = new UnifiedOrder_pub();
}
function orderUnified($arrConfig){
$this->getOrderUnifiedInit();
$this->unifiedOrder->setParameter("body",$arrConfig['body']);//商品描述
$timeStamp = time();
$totalFee = $arrConfig['total_fee'];
$attach = json_encode($arrConfig['attach']);
$out_trade_no = WxPayConf_pub::APPID."$timeStamp";
$this->unifiedOrder->setParameter("out_trade_no","$out_trade_no");//商户订单号
$this->unifiedOrder->setParameter("total_fee",$totalFee);//总金额
$this->unifiedOrder->setParameter("notify_url",WxPayConf_pub::NOTIFY_URL);//通知地址
$this->unifiedOrder->setParameter("trade_type","APP");//交易类型
$this->unifiedOrder->setParameter("attach",$attach);//附加数据
$arrUnifiedOrder = $this->unifiedOrder->getResultUnifiedOrder();
$arrUnifiedOrder['out_trade_no'] = $out_trade_no;
return $arrUnifiedOrder;
}
function getWeChatSign($Obj){
$sign = $this->getSign($Obj);
return $sign;
}
/**
* 作用:格式化参数,签名过程需要使用
*/
function formatBizQueryParaMap($paraMap, $urlencode){
$buff = "";
ksort($paraMap);
foreach ($paraMap as $k => $v) {
if($urlencode) {
$v = urlencode($v);
}
//$buff .= strtolower($k) . "=" . $v . "&";
$buff .= $k . "=" . $v . "&";
}
$reqPar ="";
if (strlen($buff) > 0) {
$reqPar = substr($buff, 0, strlen($buff)-1);
}
return $reqPar;
}
/**
* 作用:生成签名
*/
public function getSign($Obj){
foreach ($Obj as $k => $v) {
$Parameters[$k] = $v;
}
//签名步骤一:按字典序排序参数
ksort($Parameters);
$String = $this->formatBizQueryParaMap($Parameters, false);
//echo '【string1】'.$String.'</br>';
//签名步骤二:在string后加入KEY
$String = $String."&key=".WxPayConf_pub::KEY;
//echo "【string2】".$String."</br>";
//签名步骤三:MD5加密
$String = md5($String);
//echo "【string3】 ".$String."</br>";
//签名步骤四:所有字符转为大写
$result_ = strtoupper($String);
//echo "【result】 ".$result_."</br>";
return $result_;
}
}