本文实例讲述了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程序设计有所帮助。
相关文章
猜你喜欢
- ASP.NET本地开发时常见的配置错误及解决方法? 2025-06-10
- ASP.NET自助建站系统的数据库备份与恢复操作指南 2025-06-10
- 个人网站服务器域名解析设置指南:从购买到绑定全流程 2025-06-10
- 个人网站搭建:如何挑选具有弹性扩展能力的服务器? 2025-06-10
- 个人服务器网站搭建:如何选择适合自己的建站程序或框架? 2025-06-10
TA的动态
- 2025-07-10 怎样使用阿里云的安全工具进行服务器漏洞扫描和修复?
- 2025-07-10 怎样使用命令行工具优化Linux云服务器的Ping性能?
- 2025-07-10 怎样使用Xshell连接华为云服务器,实现高效远程管理?
- 2025-07-10 怎样利用云服务器D盘搭建稳定、高效的网站托管环境?
- 2025-07-10 怎样使用阿里云的安全组功能来增强服务器防火墙的安全性?
快网idc优惠网
QQ交流群
您的支持,是我们最大的动力!
热门文章
-
2025-05-25 80
-
2025-05-24 19
-
2025-05-29 67
-
WebHostingPad支持哪些类型的数据库,如何创建和管理?
2025-06-04 56 -
2025-05-27 38
热门评论