WechatPay.php 2.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  1. <?php
  2. /**
  3. * Created by PhpStorm.
  4. * User: Administrator
  5. * Date: 2016/1/28
  6. * Time: 16:16
  7. */
  8. namespace common\library\Pay;
  9. use common\library\Apireturn;
  10. use common\library\Pay\lib\WxPayApi;
  11. use common\library\Pay\lib\WxPayUnifiedOrder;
  12. use yii\helpers\Url;
  13. use Yii;
  14. class WechatPay
  15. {
  16. public function pay($orderInfo)
  17. {
  18. $input = new WxPayUnifiedOrder();
  19. $input->SetBody("豪省心装修网-升级会员");//商品描述 APP——需传入应用市场上的APP名字-实际商品名称,天天爱消除-游戏充值。
  20. //$input->SetAttach("test");//自定义参数
  21. $input->SetOut_trade_no($orderInfo->out_trade_no);//内容订单号,使用我们的订单号
  22. $input->SetAppid(Yii::$app->params['wechatapi']['appidCompany']);//公众账号ID
  23. $input->SetMch_id(Yii::$app->params['wechat']['mchid']);//商户号
  24. $input->key = Yii::$app->params['wechat']['key'];
  25. $input->SetTotal_fee($orderInfo->amount * 100);//付款金额,单位分
  26. $notify_url =\Yii::$app->request->getHostInfo().Url::toRoute(['pay/wechatnotify']);
  27. $input->SetNotify_url($notify_url);//回调地址
  28. $input->SetOpenid($orderInfo->openid);//openid
  29. $input->SetTrade_type("JSAPI");//支付类型
  30. $order = WxPayApi::unifiedOrder($input);
  31. if($order['return_code']!='SUCCESS')
  32. return Apireturn::sent(0,$order['return_msg'],200);
  33. return $order;
  34. }
  35. static function getSign($data)
  36. {
  37. ksort($data);
  38. $buff = "";
  39. foreach ($data as $k => $v)
  40. {
  41. if($k != "sign" && $v != "" && !is_array($v)){
  42. $buff .= $k . "=" . $v . "&";
  43. }
  44. }
  45. $buff = trim($buff, "&");
  46. $string = $buff . "&key=".Yii::$app->params['wechat']['key'];
  47. //签名步骤三:MD5加密
  48. $string = md5($string);
  49. //签名步骤四:所有字符转为大写
  50. $result = strtoupper($string);
  51. return $result;
  52. }
  53. }