本文实例讲述了PHP微信支付功能。分享给大家供大家参考,具体如下:
微信开发SDK:文中用的是php_sdk_v3.0.9 :https://pay.weixin.qq.com/wiki/doc/api/jsapi.php?chapter=11_1
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
|
import( "wxpay.lib.AppPay#Config" , EXTEND_PATH, ".php" ); import( "wxpay.lib.WxPay#Api" , EXTEND_PATH, ".php" ); //$this->weixinpay(); $config = new \AppPayConfig(); //订单号 $appId = $config ->GetAppId(); $key = $config ->GetKey(); $money = 0.01 * 100; $orderSn = 'M201810241754107557' ; //订单号; $curTime = time(); $input = new \WxPayUnifiedOrder(); $input ->SetBody( "用户红包" ); $input ->SetOut_trade_no( $orderSn ); $input ->SetTotal_fee( $money ); $input ->SetTrade_type( "APP" ); $unifiedOrder = \WxPayApi::unifiedOrder( $config , $input ); if ( $unifiedOrder [ 'result_code' ] == 'SUCCESS' && $unifiedOrder [ 'return_code' ] == 'SUCCESS' ) { /*$unifiedOrder 组成: * ["appid"] => string(18) "wx2xxxx49" ["mch_id"] => string(10) "1xxxxxx01" ["nonce_str"] => string(16) "1GnEUXTuTcFtJVtb" ["prepay_id"] => string(36) "wx241933xxx68fa24ece70611692955" ["result_code"] => string(7) "SUCCESS" ["return_code"] => string(7) "SUCCESS" ["return_msg"] => string(2) "OK" ["sign"] => string(32) "7903xxxxx4710E460CB156" ["trade_type"] => string(3) "APP"*/ $curTime = time(); // 第一部分 $wxpayResult = new \WxPayResults(); $wxpayResult ->SetData( 'appid' , $unifiedOrder [ 'appid' ]); $wxpayResult ->SetData( 'partnerid' , $unifiedOrder [ 'mch_id' ]); $wxpayResult ->SetData( 'prepayid' , $unifiedOrder [ 'prepay_id' ]); $wxpayResult ->SetData( 'noncestr' , $unifiedOrder [ 'nonce_str' ]); $wxpayResult ->SetData( 'timestamp' , $curTime ); $wxpayResult ->SetData( 'package' , "Sign=WXPay" ); $wxpayResult ->SetData( 'sign' , "" ); $wxpayResult ->SetSign( $config ); $data = $wxpayResult ->GetValues(); // 第二部分 $data [ 'appid' ] = $unifiedOrder [ 'appid' ]; $data [ 'partnerid' ] = $unifiedOrder [ 'mch_id' ]; $data [ 'prepayid' ] = $unifiedOrder [ 'prepay_id' ]; $data [ 'noncestr' ] = $unifiedOrder [ 'nonce_str' ];; $data [ 'timestamp' ] = $curTime ; $data [ 'package' ] = "Sign=WXPay" ; $data [ 'sign' ] = $this ->wxappPaySign( $key , $data ); //$unifiedOrder['sign'];//签名,具体签名方案参见微信公众号支付帮助文档; $this ->returnSuccess( $data ); } else { Log::write(var_export( $unifiedOrder , true)); $this ->returnError(300, '微信支付失败' ); } private function wxappPaySign( $key , $parameters ) { $sign = md5(sprintf( "appid=%s&noncestr=%s&package=%s&partnerid=%s&prepayid=%s×tamp=%s&key=%s" , $parameters [ 'appid' ], $parameters [ 'noncestr' ], $parameters [ 'package' ], $parameters [ 'partnerid' ], $parameters [ 'prepayid' ], $parameters [ 'timestamp' ], $key )); return strtoupper ( $sign ); } |
第一部分和第二部分功能是相同的。
希望本文所述对大家PHP程序设计有所帮助。