You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
73 lines
2.0 KiB
73 lines
2.0 KiB
7 months ago
|
<?php
|
||
|
ini_set('date.timezone','Asia/Shanghai');
|
||
|
error_reporting(E_ERROR);
|
||
|
|
||
|
require_once "../lib/WxPay.Api.php";
|
||
|
require_once '../lib/WxPay.Notify.php';
|
||
|
require_once 'log.php';
|
||
|
|
||
|
//初始化日志
|
||
|
$logHandler= new CLogFileHandler("../logs/".date('Y-m-d').'.log');
|
||
|
$log = Log::Init($logHandler, 15);
|
||
|
|
||
|
class NativeNotifyCallBack extends WxPayNotify
|
||
|
{
|
||
|
public function unifiedorder($openId, $product_id)
|
||
|
{
|
||
|
//统一下单
|
||
|
$input = new WxPayUnifiedOrder();
|
||
|
$input->SetBody("test");
|
||
|
$input->SetAttach("test");
|
||
|
$input->SetOut_trade_no(WxPayConfig::MCHID.date("YmdHis"));
|
||
|
$input->SetTotal_fee("1");
|
||
|
$input->SetTime_start(date("YmdHis"));
|
||
|
$input->SetTime_expire(date("YmdHis", time() + 600));
|
||
|
$input->SetGoods_tag("test");
|
||
|
$input->SetNotify_url("http://paysdk.weixin.qq.com/example/notify.php");
|
||
|
$input->SetTrade_type("NATIVE");
|
||
|
$input->SetOpenid($openId);
|
||
|
$input->SetProduct_id($product_id);
|
||
|
$result = WxPayApi::unifiedOrder($input);
|
||
|
Log::DEBUG("unifiedorder:" . json_encode($result));
|
||
|
return $result;
|
||
|
}
|
||
|
|
||
|
public function NotifyProcess($data, &$msg)
|
||
|
{
|
||
|
//echo "处理回调";
|
||
|
Log::DEBUG("call back:" . json_encode($data));
|
||
|
|
||
|
if(!array_key_exists("openid", $data) ||
|
||
|
!array_key_exists("product_id", $data))
|
||
|
{
|
||
|
$msg = "回调数据异常";
|
||
|
return false;
|
||
|
}
|
||
|
|
||
|
$openid = $data["openid"];
|
||
|
$product_id = $data["product_id"];
|
||
|
|
||
|
//统一下单
|
||
|
$result = $this->unifiedorder($openid, $product_id);
|
||
|
if(!array_key_exists("appid", $result) ||
|
||
|
!array_key_exists("mch_id", $result) ||
|
||
|
!array_key_exists("prepay_id", $result))
|
||
|
{
|
||
|
$msg = "统一下单失败";
|
||
|
return false;
|
||
|
}
|
||
|
|
||
|
$this->SetData("appid", $result["appid"]);
|
||
|
$this->SetData("mch_id", $result["mch_id"]);
|
||
|
$this->SetData("nonce_str", WxPayApi::getNonceStr());
|
||
|
$this->SetData("prepay_id", $result["prepay_id"]);
|
||
|
$this->SetData("result_code", "SUCCESS");
|
||
|
$this->SetData("err_code_des", "OK");
|
||
|
return true;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
Log::DEBUG("begin notify!");
|
||
|
$notify = new NativeNotifyCallBack();
|
||
|
$notify->Handle(true);
|