版权声明:本文为博主原创文章,未经博主允许不得转载。 https://cloud.tencent.com/developer/article/1333691
/**
* 微信公众号信息配置
*
* APPID:绑定支付的APPID(必须配置,开户邮件中可查看)
*
* MCHID:商户号(必须配置,开户邮件中可查看)
*
* KEY:商户支付密钥,参考开户邮件设置(必须配置,登录商户平台自行设置)
* 设置地址:https://pay.weixin.qq.com/index.php/account/api_cert
*
* APPSECRET:公众帐号secert(仅JSAPI支付的时候需要配置, 登录公众平台,进入开发者中心可设置),
* 获取地址:https://mp.weixin.qq.com/advanced/advanced?action=dev&t=advanced/dev&token=2005451881&lang=zh_CN
* @var string
*/
标签的url
public function index()
{
//TODO 进行业务处理
//TODO 生成二维码
$product_id = time()+1;
$notify = new NativePay();
$input = new WxPayUnifiedOrder();
$input->setBody("product_name");
$input->setAttach("xxx");
//$input->setOutTradeNo(WxPayConfig::MCHID.date("YmdHis"));
$input->setOutTradeNo($product_id);
$input->setTotalFee("1");//以分为单位
$input->setTimeStart(date("YmdHis"));
$input->setTimeExpire(date("YmdHis", time() + 600));
$input->setGoodsTag("test");
$input->setNotifyUrl(wxPayConfig::NOTIFY_URL);
$input->setTradeType("NATIVE");
//$product_id 为商品自定义id 可用作订单ID
$input->setProductId($product_id);
$result = $notify->getPayUrl($input);
if (empty($result['code_url'])){
$qrCode_url = '';
}else{
$qrCode_url = $result["code_url"];
}
return $this->fetch('',[
'qrCode_url' => $qrCode_url,
]);
}
/**
* 微信支付 回调逻辑处理
* @return string
*/
public function notify(){
$wxData = file_get_contents("php://input");
//file_put_contents('/tmp/2.txt',$wxData,FILE_APPEND);
try{
$resultObj = new WxPayResults();
$wxData = $resultObj->Init($wxData);
}catch (\Exception $e){
$resultObj ->setData('return_code','FAIL');
$resultObj ->setData('return_msg',$e->getMessage());
return $resultObj->toXml();
}
if ($wxData['return_code']==='FAIL'||
$wxData['return_code']!== 'SUCCESS'){
$resultObj ->setData('return_code','FAIL');
$resultObj ->setData('return_msg','error');
return $resultObj->toXml();
}
//TODO 根据订单号 out_trade_no 来查询订单数据
$out_trade_no = $wxData['out_trade_no'];
//此处为举例
$order = model('order')->get(['out_trade_no' => $out_trade_no]);
if (!$order || $order->pay_status == 1){
$resultObj ->setData('return_code','SUCCESS');
$resultObj ->setData('return_msg','OK');
return $resultObj->toXml();
}
//TODO 数据更新 业务逻辑处理 $order
}