微信扫码支付API接口完整开发实例php版|三体教程
文章目录

微信扫码支付API接口完整开发实例(php版)

随着微信支付的流行,越来越多的公司开始使用这种方式进行支付。

微信也给出了许多接口供使用,比如扫码支付、公众号支付、H5支付、刷卡支付等。

今天我们分享的是:微信扫码支付完整实例

首先需要公众号开通微信支付。

其次,访问微信支付商户平台(https://pay.weixin.qq.com/index.php/core/account)配置相关信息。

微信扫码支付接口

准备工作。

1、去https://pay.weixin.qq.com/wiki/doc/api/native.php?chapter=11_1下载对应的SDK与DEMO,解压后放到网站根目录下面,文件名自己取。

2、数据库订单表order,字段有o_id,o_ordercode,o_ordercode_wx,o_status

下面正式开始。

一、支付页面pay.php

注意表单里面要包含相关字段。

php代码<?php
//先根据前台生成订单的id(假设为1234)获取订单相关的数据
//status是订单状态,我们以1和2区分,1是未付款,2是已付款。
if ($s_status<2){
    $WIDout_trade_no_wx=date("YmdHis").rand(1001,9999);
    //根据订单id将$WIDout_trade_no_wx update到对应的o_ordercode_wx里面
}
echo '
<style>
.none{display:none;}
.block{display:block;}
.paysuccess{display:none;}
</style>
<script language="javascript" src="pay.js"></script>
<div class="divpay'.($s_status>1?' none':'').'">微信支付二维码</div>
<div class="paysuccess'.($s_status>1?' block':' none').'">支付成功</div>
<input type="hidden" name="WIDout_trade_no" value="这里是订单号" />
<input type="hidden" name="WIDout_trade_no_wx" id="WIDout_trade_no_wx" value="'.$WIDout_trade_no_wx.'" />
<input type="hidden" name="WIDsubject" value="" />
<input type="hidden" name="WIDtotal_fee" value="" />
<input type="hidden" name="WIDbody" value="" />
<input type="hidden" name="WIDshow_url" value="" />
<input type="hidden" name="orderid" id="orderid" value="1234" />
<input type="hidden" name="status" id="status" value="1" />
';
?>

微信扫码支付

上面有些因为还涉到支付宝支付接口,所以就全列出来了。

关于WIDout_trade_no_wx具体是什么原因加的,忘了。

反正是当时遇到问题才加的,好像是pay.php页面每次刷新后,有时同一个订单号二维码不会再出现,所以加了一个WIDout_trade_no_wx每次随机date("YmdHis").rand(1001,9999)填充进去。

二、pay.js文件

javascript代码<script>
var setinterval;
$(document).ready(function(e) {
    if ($("#status").val()<2){//如果状态为1,则创建二给码
        var url="weixinpay/example/native.php";
        var params = $("form").serialize();
        $.ajax({
            url:url,
            type:"post",
            data:params,
            dataType:"JSON",
            success: function(data){
                $(".divpay").html(data.qrcode+"<img src='二维码下面那个扫码提示图片' />");
                //这里根据自己的代码改,因为我的还有支付宝支付所以divpay是随便写的
            }
        });
        setinterval=setInterval(function(){checkpay()}, 5000);//每隔5秒检测是否支付
    }
});
function checkpay(){
    var url ="weixinpay/example/orderquery.do";
    var out_trade_no = $("#WIDout_trade_no_wx").val();
    var params = {'out_trade_no':out_trade_no};
    $.post(url, params, function(data){
        data = JSON.parse(data);
        if(data.trade_state == "SUCCESS"){
            $(".divpay").hide();
            $(".paysuccess").show();
            clearInterval(setinterval);
        }else{
            alert('支付失败');
        }
    });
}
</script>

需要注意的是,如果检测支付成功了,则要使用clearInterval来停止检测,否则会一直每隔5秒一直执行。

三、lib/WxPay.Config.php

修改此文件,这里是非常重要,不要填错了。

php代码<?php
const APPID = '';//填开户邮件中的(公众账号APPID或者应用APPID)
const MCHID = '';//开户邮件中的商户号
const KEY = '';//登录http://pay.weixin.qq.com 平台设置的“API密钥”,为了安全,请设置为32字符串。
const APPSECRET = '';//公众平台开发者中心获取AppSecret
const SSLCERT_PATH = '../cert/apiclient_cert.pem';
const SSLKEY_PATH = '../cert/apiclient_key.pem';
?>

关于apiclient_cert.pem和apiclient_key.pem这两个文件,下载的时候会有提示,下载后粘贴到cert目录下替换原有的。

证书下载地址:微信商户平台(pay.weixin.qq.com)-->账户中心-->账户设置-->API安全-->证书下载

  1  2

本文网址:http://www.santii.com/article/208.html

您可能还会对这些微信支付文章感兴趣


数据更新时间:2018-06-25