|
@@ -14,43 +14,43 @@ require_once (WXPAY_PATH . '/lib/WxPay.Data.php');
|
|
require_once (WXPAY_PATH . '/lib/WxPay.Exception.php');
|
|
require_once (WXPAY_PATH . '/lib/WxPay.Exception.php');
|
|
require_once (WXPAY_PATH . '/lib/WxPay.Notify.php');
|
|
require_once (WXPAY_PATH . '/lib/WxPay.Notify.php');
|
|
|
|
|
|
|
|
+
|
|
class app_payControl extends mobileHomeControl
|
|
class app_payControl extends mobileHomeControl
|
|
{
|
|
{
|
|
|
|
+ static $pay_types = array('wxpay','alipay');
|
|
|
|
+ const wx_notifyurl = 'http://t.lrlz.com/mobile/control/wxnotify.php';
|
|
|
|
|
|
public function uniorderOp()
|
|
public function uniorderOp()
|
|
{
|
|
{
|
|
-// $desc = $_POST['desc'];
|
|
|
|
-// $attach = $_POST['attatch'];
|
|
|
|
- $total_fee = 1;//intval($_POST['fee']) * 100;
|
|
|
|
|
|
+ $pay_sn = $_GET['paysn'];
|
|
|
|
+ $payment = $_GET['payment'];
|
|
|
|
+ if(in_array($payment,self::pay_types) == false) {
|
|
|
|
+ return joutput_error(errcode::ErrPayment,'err paytype : wxpay,alipay');
|
|
|
|
+ }
|
|
|
|
|
|
- $input = new WxPayUnifiedOrder();
|
|
|
|
- $input->SetBody("test"); //商品或支付单简要描述
|
|
|
|
- $input->SetAttach("test"); //附加数据,在查询API和支付通知中原样返回,该字段主要用于商户携带订单的自定义数据
|
|
|
|
- $input->SetOut_trade_no(WxPayConfig::MCHID.date("YmdHis"));//商户系统内部的订单号,32个字符内、可包含字母, 其他说明见商户订单号
|
|
|
|
- $input->SetTotal_fee("1");//订单总金额,单位为分,详见支付金额
|
|
|
|
- $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->SetGoods_tag("test");
|
|
|
|
- $input->SetNotify_url("http://paysdk.weixin.qq.com/example/notify.php");
|
|
|
|
- $input->SetTrade_type("APP");//JSAPI--公众号支付、NATIVE--原生扫码支付、APP--app支付,统一下单接口trade_type的传参可参考这里,MICROPAY--刷卡支付,刷卡支付有单独的支付接口,不调用统一下单接口
|
|
|
|
- $order = WxPayApi::unifiedOrder($input);
|
|
|
|
|
|
+ $logic_payment = Logic('payment');
|
|
|
|
+ //重新计算所需支付金额
|
|
|
|
+ $result = $logic_payment->getRealOrderInfo($pay_sn, $this->member_info['member_id']);
|
|
|
|
|
|
- //$ret = $this->handle_order($order);
|
|
|
|
|
|
+ if(!$result['state']) {
|
|
|
|
+ return joutput_error(errcode::ErrPayment,$result['msg']);
|
|
|
|
+ }
|
|
|
|
|
|
- $ret = array();
|
|
|
|
- $ret['appid'] = $order["appid"];
|
|
|
|
- $ret['noncestr'] = WxPayApi::getNonceStr();
|
|
|
|
- $ret['package'] = 'Sign=WXPay';
|
|
|
|
- $ret['partnerid'] = WxPayConfig::MCHID;
|
|
|
|
- $ret['prepayid'] = $order['prepay_id'];
|
|
|
|
- $timeStamp = time();
|
|
|
|
- $ret['timestamp'] = "$timeStamp";
|
|
|
|
|
|
+ $ret = $this->api_pay($result['data'], $payment);
|
|
|
|
+ joutput_data($ret);
|
|
|
|
+ }
|
|
|
|
|
|
- $sign = $this->make_sign($ret);
|
|
|
|
- $ret['sign'] = $sign;
|
|
|
|
|
|
+ private function api_pay($pay_info,$payment)
|
|
|
|
+ {
|
|
|
|
+ $subject = $pay_info['subject'];
|
|
|
|
+ $pay_sn = $pay_info['pay_sn'];
|
|
|
|
+ $fee = $pay_info['pay_amount'];
|
|
|
|
|
|
|
|
+ if($payment == 'wxpay') {
|
|
|
|
+ return $this->uniorder($subject,$pay_sn,1);
|
|
|
|
+ } else {
|
|
|
|
|
|
- joutput_data($ret);
|
|
|
|
|
|
+ }
|
|
}
|
|
}
|
|
|
|
|
|
/**
|
|
/**
|
|
@@ -84,27 +84,41 @@ class app_payControl extends mobileHomeControl
|
|
return $result;
|
|
return $result;
|
|
}
|
|
}
|
|
|
|
|
|
-// private function handle_order($order)
|
|
|
|
-// {
|
|
|
|
-// $jsapi = new WxPayJsApiPay();
|
|
|
|
-// $jsapi->SetAppid($order["appid"]);
|
|
|
|
-// $timeStamp = time();
|
|
|
|
-// $jsapi->SetTimeStamp("$timeStamp");
|
|
|
|
-// $jsapi->SetNonceStr(WxPayApi::getNonceStr());
|
|
|
|
-// $jsapi->SetPackage('Sign=WXPay');
|
|
|
|
-// //$jsapi->SetPackage("prepay_id=" . $order['prepay_id']);
|
|
|
|
-// //$jsapi->SetSignType("MD5");
|
|
|
|
-// $jsapi->SetPaySign($jsapi->MakeSign());
|
|
|
|
-// //$sign = $jsapi->MakeSign();
|
|
|
|
-// $jsapi->SetSign();
|
|
|
|
-//
|
|
|
|
-// $jsapi->SetPaySign($jsapi->MakeSign());
|
|
|
|
-//
|
|
|
|
-// return $jsapi->GetValues();
|
|
|
|
-// }
|
|
|
|
-
|
|
|
|
- public function notifyOp()
|
|
|
|
|
|
+ public function wxnotifyOp()
|
|
{
|
|
{
|
|
|
|
|
|
|
|
+
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ /**
|
|
|
|
+ * @return array
|
|
|
|
+ * @throws WxPayException
|
|
|
|
+ */
|
|
|
|
+ private function uniorder($body,$paysn,$fee)
|
|
|
|
+ {
|
|
|
|
+ $input = new WxPayUnifiedOrder();
|
|
|
|
+ $input->SetBody($body); //商品或支付单简要描述
|
|
|
|
+ $input->SetAttach($paysn); //附加数据,在查询API和支付通知中原样返回,该字段主要用于商户携带订单的自定义数据
|
|
|
|
+ $input->SetOut_trade_no(WxPayConfig::MCHID . date("YmdHis"));//商户系统内部的订单号,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->SetTrade_type("APP");//JSAPI--公众号支付、NATIVE--原生扫码支付、APP--app支付,统一下单接口trade_type的传参可参考这里,MICROPAY--刷卡支付,刷卡支付有单独的支付接口,不调用统一下单接口
|
|
|
|
+ $order = WxPayApi::unifiedOrder($input);
|
|
|
|
+
|
|
|
|
+ $ret = array();
|
|
|
|
+ $ret['appid'] = $order["appid"];
|
|
|
|
+ $ret['noncestr'] = WxPayApi::getNonceStr();
|
|
|
|
+ $ret['package'] = 'Sign=WXPay';
|
|
|
|
+ $ret['partnerid'] = WxPayConfig::MCHID;
|
|
|
|
+ $ret['prepayid'] = $order['prepay_id'];
|
|
|
|
+ $timeStamp = time();
|
|
|
|
+ $ret['timestamp'] = "$timeStamp";
|
|
|
|
+
|
|
|
|
+ $sign = $this->make_sign($ret);
|
|
|
|
+ $ret['sign'] = $sign;
|
|
|
|
+ return $ret;
|
|
}
|
|
}
|
|
}
|
|
}
|