微信扫码支付零云插件版实例详解

前端之家收集整理的这篇文章主要介绍了微信扫码支付零云插件版实例详解前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

微信扫码支付零云插件版实例详解

微信的扫码支付主要有以下过程:

向微信统一下单地址发送详细的订单信息,微信返回json数据,里面包含生成二维码的字段,使用生成二维码插件qrcode生成二维码返回给前端,让用户扫码完成支付,然后页面跳转到return_url告知用户支付成功,微信服务器正式通知支付成功之后修改数据库数据。

$data = array();
$data['appid'] = $this->config['appid'];
$data['mch_id'] = $this->config['mchid'];
$data['nonce_str'] = $this->getNonceStr(32); //随机32位字符串
$data['sign'] = $this->MakeSign($data); //签名
$data['product_id'] = $pay_data['out_trade_no'];
$data['body'] = $pay_data['title'];
$data['detail'] = $pay_data['title'].' Wechat Payment';
$data['out_trade_no'] = $pay_data['out_trade_no'];
$data['fee_type'] = 'USD'; //使用美元支付
$data['total_fee'] = 1; //注意 单位是分
$data['spbill_create_ip'] = $_SERVER['REMOTE_ADDR'];
$data['notify_url'] = $this->config['notify_url'];
$data['trade_type'] = "NATIVE"; //交易类型

//转为xml格式
$xml_param = $this->ToXml($data);

// //发送请求 使用封装好的curl_post
$result = $this->FromXml($this->postXmlCurl($xml_param,$this->gateway));
if ($result['return_code'] === 'SUCCESS') {
if ($this->CheckSign($result)) {
$code_img = $this->get_code_src($result['code_url']);
$return_data['code_img'] = $code_img;
$return_data['pay_data'] = $data;
return $return_data;
} else {
E("微信订单错误!");
}
} else {
E("微信订单错误!". $result['return_msg']);
}
}

/*

  • 生成二维码
  • @param string $code_url,需要生成二维码的地址;
  • @return $filepath,生成二维码图片所在地址;
    */
    public function get_code_src($code_url) {
    $QRcode = new \PHPQRCode\QRcode();
    $filename = time().$this->getNonceStr(3).'.png';
    $filepath = request()->domain() . ROOT .'/Uploads/qrcode/'.$filename;
    $res = $QRcode->png($code_url,'./Uploads/qrcode/'.$filename);
    return $filepath;
    }

调用过程如下:

buildRequestForm($info); $this->assign('return_data',$return_data); $this->assign('return_json',json_encode($return_data)); $this->display(); //向用户展示二维码 exit(); }

注:零云是基于thinkPHP快速建站的框架,所以这个插件在TP中也适用。

感谢阅读,希望能帮助到大家,谢谢大家对本站的支持

原文链接:https://www.f2er.com/js/39676.html

猜你在找的JavaScript相关文章