thinkPHP和微支付实现的微信支付插件,在微信中调用微信jssdk实现支付,分享给大家参考下
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
|
//实现的Wxpay钩子方法
public function Wxpay( $param ){
require './Addons/Wxpay/WxPayPubHelper/WxPayPubHelper.php' ;
$jsApi = new \JsApi_pub();
//=========步骤1:网页授权获取用户openid============
if (!isset( $_GET [ 'code' ]))
{
//触发微信返回code码
$url = $jsApi ->createOauthUrlForCode(\WxPayConf_pub::JS_API_CALL_URL. '/order_id/' . $param [ 'order_id' ]);
Header( "Location: $url" );
} else
{
$order_id = $param [ 'order_id' ];
$info = M( 'Order' )->where( 'id=' . $order_id )->find();
if ( empty ( $info ) || $info [ 'is_pay' ] == 1){
dump( '该订单不存在或已支付' . $order_id );
exit ();
}
$this ->assign( 'info' , $info );
$a = $info [ 'money' ];
$b = 100;
$c = $a * $b ;
//获取code码,以获取openid
$code = $_GET [ 'code' ];
$jsApi ->setCode( $code );
$openid = $jsApi ->getOpenId();
}
//=========步骤2:使用统一支付接口,获取prepay_id============
//使用统一支付接口
$unifiedOrder = new \UnifiedOrder_pub();
$unifiedOrder ->setParameter( "openid" , "$openid" ); //商品描述
$unifiedOrder ->setParameter( "body" , "在线预订" ); //商品描述
//自定义订单号,此处仅作举例
$timeStamp = time();
// $out_trade_no = \WxPayConf_pub::APPID."$timeStamp";
$out_trade_no = $info [ 'ordersn' ];
$unifiedOrder ->setParameter( "out_trade_no" , "$out_trade_no" ); //商户订单号
$unifiedOrder ->setParameter( "total_fee" , "$c" ); //总金额
$unifiedOrder ->setParameter( "notify_url" ,\WxPayConf_pub::NOTIFY_URL. '/order_id/' . $param [ 'order_id' ]); //通知地址
$unifiedOrder ->setParameter( "trade_type" , "JSAPI" ); //交易类型
$prepay_id = $unifiedOrder ->getPrepayId();
//=========步骤3:使用jsapi调起支付============
$jsApi ->setPrepayId( $prepay_id );
$jsApiParameters = $jsApi ->getParameters();
$this ->assign( 'jsApiParameters' , $jsApiParameters );
$this ->display( 'pay' );
}
|
总结
以上是服务器之家为你收集整理的thinkPHP和onethink微支付插件全部内容,希望文章能够帮你解决thinkPHP和onethink微支付插件所遇到的程序开发问题。