微信小程序借助 PHP 完成支付功能的方法

why 142 2024-08-27

这篇文章主要介绍了微信小程序 支付功能实现php实例详解的相关资料,需要的朋友可以参考下

微信小程序借助 PHP 完成支付功能的方法

微信小程序 支付功能实现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

wx.request({

   url: 'https://www.yourhost.com/weixin/WeiActivity/payJoinfee',//改成你自己的链接

   header: {

     'Content-Type': 'application/x-www-form-urlencoded'

   },

   method:'POST',

   success: function(res) {

     console.log(res.data);

     console.log('调起支付');

     wx.requestPayment({

       'timeStamp': res.data.timeStamp,

       'nonceStr': res.data.nonceStr,

       'package': res.data.package,

       'signType': 'MD5',

       'paySign': res.data.paySign,

       'success':function(res){

         console.log('success');

         wx.showToast({

           title: '支付成功',

           icon: 'success',

           duration: 3000

         });

       },

       'fail':function(res){

         console.log('fail');

       },

       'complete':function(res){

         console.log('complete');

       }

     });

   },

   fail:function(res){

     console.log(res.data)

   }

 });


后端代码:


1

2

3

4

5

6

7

8

9

10

11

12

13

//支付费用

 public function payJoinfee(){

 $appid='wx888888888';

 $openid='oCQwY0Q_pzrQpu8888888';

 $mch_id='141388888';

 $key='9A0A86888888888';

  

 import('Weixin.Lib.WeixinPay');

 $weixinpay = new \WeixinPay($appid,$openid,$mch_id,$key);

 $return=$weixinpay->pay();

 

 $this->response($return,'json');

 }


微信支付类


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

83

84

85

86

87

88

89

90

91

92

93

94

95

96

97

98

99

100

101

102

103

<?php

/*

 * 小程序微信支付

 */

class WeixinPay{

 protected $appid;

 protected $mch_id;

 protected $key;

 protected $openid;

 function __construct($appid,$openid,$mch_id,$key){

 $this->appid=$appid;

 $this->openid=$openid;

 $this->mch_id=$mch_id;

 $this->key=$key;

 }

 public function pay(){

 //统一下单接口

 $return=$this->weixinapp();

 return $return;

 }

 //统一下单接口

 private function unifiedorder(){

 $url=&#39;https://api.mch.weixin.qq.com/pay/unifiedorder&#39;;

 $parameters=array(

  &#39;appid&#39;=>$this->appid,//小程序ID

  &#39;mch_id&#39;=>$this->mch_id,//商户号

  &#39;nonce_str&#39;=>$this->createNoncestr(),//随机字符串

  &#39;body&#39;=>&#39;测试&#39;,//商品描述

  &#39;out_trade_no&#39;=>&#39;2015450806125346&#39;,//商户订单号

  &#39;total_fee&#39;=>floatval(0.01*100),//总金额 单位 分

  &#39;spbill_create_ip&#39;=>$_SERVER[&#39;REMOTE_ADDR&#39;],//终端IP

  &#39;notify_url&#39;=>&#39;http://www.weixin.qq.com/wxpay/pay.php&#39;,//通知地址

  &#39;openid&#39;=>$this->openid,//用户id

  &#39;trade_type&#39;=>&#39;JSAPI&#39;//交易类型

 );

 //统一下单签名

 $parameters[&#39;sign&#39;]=$this->getSign($parameters);

 $xmlData=arrayToXml($parameters);

  

 $return=xmlToArray(postXmlSSLCurl($xmlData,$url,60));

  

 return $return;

 }

 //微信小程序接口

 private function weixinapp(){

 //统一下单接口

 $unifiedorder=$this->unifiedorder();

  

 $parameters=array(

  &#39;appId&#39;=>$this->appid,//小程序ID

  &#39;timeStamp&#39;=>&#39;&#39;.time().&#39;&#39;,//时间戳

  &#39;nonceStr&#39;=>$this->createNoncestr(),//随机串

  &#39;package&#39;=>&#39;prepay_id=&#39;.$unifiedorder[&#39;prepay_id&#39;],//数据包

  &#39;signType&#39;=>&#39;MD5&#39;//签名方式

 );

 //签名

 $parameters[&#39;paySign&#39;]=$this->getSign($parameters);

  

 return $parameters;

 }

 //作用:产生随机字符串,不长于32位

 private function createNoncestr($length = 32 ){

 $chars = "abcdefghijklmnopqrstuvwxyz0123456789";

 $str ="";

 for ( $i = 0; $i < $length; $i++ ) {

  $str.= substr($chars, mt_rand(0, strlen($chars)-1), 1);

 }

 return $str;

 }

 //作用:生成签名

 private function getSign($Obj){

 foreach ($Obj as $k => $v){

  $Parameters[$k] = $v;

 }

 //签名步骤一:按字典序排序参数

 ksort($Parameters);

 $String = $this->formatBizQueryParaMap($Parameters, false);

 //签名步骤二:在string后加入KEY

 $String = $String."&key=".$this->key;

 //签名步骤三:MD5加密

 $String = md5($String);

 //签名步骤四:所有字符转为大写

 $result_ = strtoupper($String);

 return $result_;

 }

 ///作用:格式化参数,签名过程需要使用

 private function formatBizQueryParaMap($paraMap, $urlencode){

 $buff = "";

 ksort($paraMap);

 foreach ($paraMap as $k => $v){

   if($urlencode)

   {

   $v = urlencode($v);

  }

  $buff .= $k . "=" . $v . "&";

 }

 $reqPar;

 if (strlen($buff) > 0){

  $reqPar = substr($buff, 0, strlen($buff)-1);

 }

 return $reqPar;

 }

}


以上就是本文的全部内容,希望对大家的学习有所帮助。


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:微信小程序开发里全局配置的详细介绍
下一篇:小程序音视频服务,解锁更多沟通可能性
相关文章

 发表评论

暂时没有评论,来抢沙发吧~