1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586 |
- <?php
- /**
- * Created by PhpStorm.
- * User: stanley-king
- * Date: 2019/1/4
- * Time: 6:11 PM
- */
- namespace Pay;
- define(MINIPAY_PATHEX, BASE_DATA_PATH . '/api/mini_wxpay');
- require_once(MINIPAY_PATHEX . '/lib/WxPay.Api.php');
- require_once(MINIPAY_PATHEX . '/lib/WxPay.Config.php');
- require_once(MINIPAY_PATHEX . '/lib/WxPay.Data.php');
- require_once(MINIPAY_PATHEX . '/lib/WxPay.Exception.php');
- require_once(MINIPAY_PATHEX . '/lib/WxPay.Notify.php');
- require_once(BASE_ROOT_PATH . '/helper/util_helper.php');
- use \WxPayUnifiedOrder;
- use \WxPayApi;
- use \WxPayJsApiPay;
- use \WxPayException;
- use Log;
- use util;
- class webpay implements IPay
- {
- const wx_notifyurl = BASE_SITE_URL . '/mobile/web_wxnotify.php';
- const wx_orderquery = 'https://api.mch.weixin.qq.com/pay/orderquery';
- private $mOpenId;
- public function __construct($openid)
- {
- $this->mOpenId = $openid;
- }
- public function gen_pay($pay_sn,$fee,$order_sn,$subject)
- {
- $input = new WxPayUnifiedOrder();
- $input->SetBody($subject); //商品或支付单简要描述
- $input->SetAttach($pay_sn); //附加数据,在查询API和支付通知中原样返回,该字段主要用于商户携带订单的自定义数据
- $out_trade_no = $pay_sn . sprintf("%03d",mt_rand(0,999)); //给微信用的每次重新生成的商户订单SN, 避免二次支付, 数额修改导致支付失败
- $input->SetOut_trade_no($out_trade_no);//商户系统内部的订单号,32个字符内、可包含字母, 其他说明见商户订单号
- $input->SetTotal_fee("{$fee}");//订单总金额,单位为分,详见支付金额
- $input->SetTime_start(date("YmdHis")); //订单生成时间,格式为yyyyMMddHHmmss,如2009年12月25日9点10分10秒表示为20091225091010。其他详见时间规则
- $input->SetTime_expire(date("YmdHis", time() + 600));//订单失效时间,格式为yyyyMMddHHmmss,如2009年12月27日9点10分10秒表示为20091227091010。其他详见时间规则
- $input->SetNotify_url(self::wx_notifyurl);
- $input->SetScene_info('{"h5_info": {"type":"Wap","wap_url": "https://www.xyzshops.cn","wap_name": "椰子商城"}}');
- $input->SetTrade_type("MWEB");
- $input->SetSpbill_create_ip(util::real_ip());
- $order = WxPayApi::unifiedOrder($input);
- Log::record("webpay order=" . json_encode($order),Log::DEBUG);
- if(!array_key_exists("appid", $order)
- || !array_key_exists("prepay_id", $order)
- || $order['prepay_id'] == "")
- {
- throw new WxPayException("参数错误");
- }
- $jsapi = new WxPayJsApiPay();
- $jsapi->SetAppid($order["appid"]);
- $timeStamp = time();
- $jsapi->SetTimeStamp("$timeStamp");
- $jsapi->SetNonceStr(WxPayApi::getNonceStr());
- $jsapi->SetPackage("prepay_id=" . $order['prepay_id']);
- $jsapi->SetSignType("MD5");
- $jsapi->SetPaySign($jsapi->MakeSign());
- $datas = $jsapi->GetValues();
- $datas['mweb_url'] = $order['mweb_url'];
- return ["data" => $datas];
- }
- public function on_notify($post)
- {
- }
- }
|