tp5.1 微信jsapi支付
//引入的文件 文件位置extend/WxpayService/WxpayService
只展示接口部分 相关的配置一样都不要少,查看相关开发文档进行配置 直接上代码
//提交订单
public function order()
{
$token=input(post.token);
$res=checkToken($token);
if($res ==90001) {
//验证token成功
$input=input(post.);
$res1=$this->setOrder($input);
if ($res1){
$appid=config(base.web_appid);//APPID
$openid=Db::name(user)->where("token",$token)->value(openid);
$mch_id=config(base.wev_mch_id);//商户号
$key=config(base.web_appsecret);
$apiKey=config(base.web_apiKey);
$out_trade_no=$res1[order_id];
$body=支付测试;
$total_fee=$res1[amount];
$notify_url = http://域名/xxx/xxx/xxx/notify;
$payTime=time();
$wxPay = new WxpayService($mch_id,$appid,$key,$apiKey);
$jsApiParameters = $wxPay->createJsBizPackage($openid,$total_fee,$out_trade_no,$body,$notify_url,$payTime);
$jsApiParameters = json_encode($jsApiParameters);
$array = json_decode($jsApiParameters,true);
$array[order_id]=$out_trade_no;
$data[code]=1;
$data[msg]=订单创建成功;
$data[date]=$array;
return json($data);
}else{
$data[code]=0;
$data[msg]=订单创建失败;
$data[date]=null;
return json($data);
}
}else if($res == 90002){
$data[code]=2;
$data[msg]=token验证出错;
$data[date]=null;
return json($data);
}else if($res == 90003){
$data[code]=3;
$data[msg]=token超时,请重新登录;
$data[date]=null;
return json($data);
}
}
//创建订单--走支付
public function setOrder($arr)
{
Db::startTrans();
try {
$info[order_id]=order_number();
$info[uid]=token_to_uid($arr[token]);
$info[package_id]=$arr[package_id];
$info[house_id]=package_to_house($arr[package_id]);
$info[number]=$arr[number];
$info[price]=$arr[price];
$info[amount]=$arr[amount];
$info[integral]=$arr[integral];//购买套餐可获积分
$info[coupon_id]=$arr[coupon_id];
$info[point]=$arr[point];//直营店消费的积分数
$info[tel]=$arr[tel];
$info[create_time]=time();
$res=Db::name(order)->insert($info);
$stock = Db::name(package)->where("id", $info[package_id])->value(stock);
$res1 = Db::name(package)->where("id", $info[package_id])->update([stock => $stock - 1]);
Db::commit();
return $info;
}catch (Exception $e) {
// 回滚事务
Db::rollback();
return 0;
}
}
`//支付回调
public function notify(){
$data = file_get_contents(php://input);
$arr = $this -> xmlToArray($data);
//判断返回状态
if($arr[return_code] == SUCCESS || $arr[result_code] == SUCCESS){
$status= Db::name(order)->where(order_id,$arr[out_trade_no])->value(status);
if ($status==1){
//修改订单状态
$res = Db::name(order)->where(order_id,$arr[out_trade_no])->update([status=>2,pay_time=>time(),transaction_id=>$arr[transaction_id]]);
return <xml> <return_code><![CDATA[SUCCESS]]></return_code><return_msg><![CDATA[OK]]></return_msg></xml>;
}
}
}
//将xml格式转换成数组
function xmlToArray($xml) {
//禁止引用外部xml实体
libxml_disable_entity_loader(true);
$xmlstring = simplexml_load_string($xml, SimpleXMLElement, LIBXML_NOCDATA);
$val = json_decode(json_encode($xmlstring), true);
return $val;
}
``
上一篇:
uniapp开发微信小程序-2.页面制作
下一篇:
微信小程序实现身份证识别-ocr
