PHP 微信支付-借助SDK

记一次自己亲自走通微信支付流程的过程:



首先拿到需要的公众号Appid、AppSecret、商户id、支付秘钥
然后到微信支付的开发文档中下载 需要的SDK版本,第一次是全部使用SDK只是放到服务器上走了一遍。
然后自己动手写了一遍



前端页面:

<?php
header("Content-type:text/html;charset=utf-8");
include ‘./lib/WxPay.Api.php‘;
include ‘./wxConfig.php‘;
include ‘./wxJsapiPay.php‘;

$jsapi = new wxJsapiPay();
$preOrder = $jsapi->makeWxPrepareOrder();
var_dump($preOrder);
?>

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1"/>
    <title>微信支付</title>
    <style type="text/css">
        .pay-btn{
            display: block;
            width: 200px;
            height: 32px;
            color:#FFF;
            text-align: center;
            background-color: #09BB07;
            border-radius: 0.2rem;
            line-height: 32px;
            margin:0 auto;
            margin-top: 10%;
        }
    </style>
</head>
<body>
    <span class="pay-btn" onclick="wxpay()">微信支付</span>
    <script type="text/javascript">
        window.onload = function(){
        if (typeof WeixinJSBridge == "undefined"){
            if( document.addEventListener ){
                document.addEventListener(‘WeixinJSBridgeReady‘, editAddress, false);
            }else if (document.attachEvent){
                document.attachEvent(‘WeixinJSBridgeReady‘, editAddress);
                document.attachEvent(‘onWeixinJSBridgeReady‘, editAddress);
            }
        }else{
            editAddress();
        }
    };
    function wxpay() {
        if (typeof WeixinJSBridge == "undefined"){
            if( document.addEventListener ){
                document.addEventListener(‘WeixinJSBridgeReady‘, jsApiCall, false);
            }else if (document.attachEvent){
                document.attachEvent(‘WeixinJSBridgeReady‘, jsApiCall);
                document.attachEvent(‘onWeixinJSBridgeReady‘, jsApiCall);
            }
        }else{
            jsApiCall();
        }
    }
    //调用微信JS api 支付
    function jsApiCall()
    {
        WeixinJSBridge.invoke(
            ‘getBrandWCPayRequest‘,
            {
                 "appId":"<?php echo $preOrder[‘appId‘]; ?>",     //公众号名称,由商户传入
                 "timeStamp":"<?php echo $preOrder[‘timeStamp‘]; ?>",         //时间戳,自1970年以来的秒数
                 "nonceStr":"<?php echo $preOrder[‘nonceStr‘]; ?>", //随机串
                 "package":"<?php echo $preOrder[‘package‘]; ?>",
                 "signType":"<?php echo $preOrder[‘signType‘]; ?>",         //微信签名方式:
                 "paySign":"<?php echo $preOrder[‘paySign‘]; ?>" //微信签名
                        },
            function(res){
                WeixinJSBridge.log(res.err_msg);
                alert(res.err_code+res.err_desc+res.err_msg);
//                                alert(JSON.stringify(res)); //查看错误消息
            }
        );
    }
    </script>
</body>
</html>

php页面:

include_once ‘./lib/WxPay.Api.php‘;
include_once ‘./wxConfig.php‘;
class wxJsapiPay
{
    /**
     * 创建微信支付预订单数据
     */
    public function makeWxPrepareOrder(){
//           $openid = $this->GetOpenid();
           $wxOrderData  = new WxPayUnifiedOrder();
           $wxOrderData->SetOut_trade_no(‘20180806125346‘); //设置订单号
           $wxOrderData->SetTrade_type(‘JSAPI‘); //微信支付方式
           $wxOrderData->SetBody(‘我的微信支付‘); //商品描述
           $wxOrderData->SetFee_type(‘CNY‘); //货币种类 CNY人民币
           $wxOrderData->SetTotal_fee(1); //设置订单总价
           $wxOrderData->SetOpenid(‘o75920o4fPcP74pTWI8MfDyYsB_A‘); //设置用户openid
           $wxOrderData->SetNotify_url(‘http://paysdk.weixin.qq.com/notify.php‘); //设置微信支付回掉地址
           $wxPayConfig = new wxConfig();
           $wxOrder = WxPayApi::unifiedOrder($wxPayConfig,$wxOrderData);
           $jsApiParameters = $this->GetJsApiParameters($wxOrder);
           $jsApiParameters = json_decode($jsApiParameters,TRUE);
           return $jsApiParameters;
    }
}

原文地址:http://blog.51cto.com/11016194/2336138

时间: 2024-07-31 11:08:56

PHP 微信支付-借助SDK的相关文章

微信支付PHP SDK —— 公众号支付代码详解

在微信支付 开发者文档页面 下载最新的 php SDK http://mch.weixin.qq.com/wiki/doc/api/jsapi.php?chapter=11_1 这里假设你已经申请完微信支付 1. 微信后台配置  如图 我们先进行测试,所以先把测试授权目录和 测试白名单添加上.测试授权目录是你要发起微信请求的哪个文件所在的目录. 例如jsapi 发起请求一般是jsapi.php所在目录 为测试目录,测试白名单即开发人员的微信号. 正式的支付授权目录不能和测试的一样否则会报错.不填

微信支付官方SDK V3 .NET版的坑

我觉得玩微信支付最大的难点和瓶颈并不是微信支付本身,而是能够拿到微信支付的权限.首先微信支付所面向的开发对象不是个人,所以个人开发者不会有这样的权限,另外一方面公司的微信号又不会随便给个人进行开发,这样就陷入了一个比较尴尬的循环! 在好不容易搞到权限后,发现官方的sdk里面竟然有.NET版本,这让小猪欣喜如狂,赶紧下下来研究一番.这也就有了本文. 在设置好开发环境,测试白名单,,回调…确定微信后台设置已经没有问题之后. 接下来看.NET版本中的坑 默认Default.aspx中的链接竟然都是链接

微信支付第三方sdk使用

1.引入依赖:(对于依赖冲突自行解决) <dependency> <groupId>com.github.binarywang</groupId> <artifactId>weixin-java-pay</artifactId> <!--<version>3.4.9.B</version>--> <version>3.5.0</version> <exclusions> &l

iOS SDK微信支付填坑!(跳转微信支付,只有确定按钮)

这两天接微信支付的SDK,遇到了一个天坑,微信文档里面不写清楚,demo里面也没有,参数少了一个无法支付啊有没有!有没有!有没有! 最后调试成功,得知真相的我眼泪掉下来... 先让我们看看是什么情况: --------------------------------------------------------我是分割线-------------------------------------------------------- 预支付订单那块就不说了,基本上都没问题,服务器会返回一个pre

IOS更换64位支付宝 微信支付 SDK

14年的时候苹果就下发通知:新的上线项目必须适配64-bit,更新的项目在2015年的六月一号以后也必须适配64-bit刚开始的时候没注意到这个问题,当打包完自己项目的时候,居然在适配64-bit的时候出现了一个警告, 看了一下,大概的意思也就是说,我的项目没有适配64-bit,我勒个去,上个版本还没有提示这个,这个版本居然冒出这个警告了.眼看着六月一号也即将到来,十天时间,以苹果的审核进度不一定过的了,万一中间再出个小插曲,估计上线得一个月了,加速审核苹果不一定买帐.迟早要做64bit的适配的

PHP微信支付开发实例

这篇文章主要为大家详细介绍了PHP微信支付开发过程,具有一定的参考价值,感兴趣的小伙伴们可以参考一下 PHP微信支付开发过程,分享给大家,供大家参考,具体内容如下 1.开发环境 Thinkphp 3.2.3 微信:服务号,已认证 开发域名:http://test.paywechat.com (自定义的域名,外网不可访问) 2.需要相关文件和权限 微信支付需申请开通 微信公众平台开发者文档:http://mp.weixin.qq.com/wiki/home/index.html 微信支付开发者文档

微信支付-b

微信支付 APP端开发步骤(传送门):https://pay.weixin.qq.com/wiki/doc/api/app/app.php?chapter=8_5 1.首先下载最新的微信支付的SDK包.下载地址:https://pay.weixin.qq.com/wiki/doc/api/app/app.php?chapter=11_1,拖到你的工程文件中. 简要步骤如下: 1.配置APPID APPID要在微信开放平台申请.(让公司去注册.) targets -> info -> URL T

PHP项目实战-微信支付接口

课程目录:1菜单的处理2歌曲搜索4微信支付开发SDK3微信支付模式和流程下载地址:http://www.feixueteam.net/thread-956-1-1.html

第三方支付之微信支付(扫码支付)

第一步:注册微信支付账户,开通扫码支付 具体流程请参照官方说明 第二步:创建Maven项目 1. 添加微信支付SDK依赖.二维码工具依赖(微信支付需要自己通过二维码工具生成支付二维码) <!-- 微信支付 --> <dependency> <groupId>com.github.wxpay</groupId> <artifactId>wxpay-sdk</artifactId> <version>0.0.3</ver