首页 CMS教程 &#&按 wordpress如何实现微信支付

wordpress如何实现微信支付

Jul 15, 2019 pm 02:35 PM

wordpress如何实现微信支付

对于调用微信支付,微信提供了 JS SDK 来帮助我们实现在微信里面调用微信支付的功能。下面是具体的实现步骤,

第一步、安装实现微信支付所需的包

我们依然使用Omnipay Wechat Pay这个包来帮助我们实现微信支付,其实和之前的原生扫码支付方法是类似的,只不过使用的接口不同罢了。下面是我开发的微信网站中使用的库。其中前两个不用说了,很明显是微信支付所用的 Omnipay 库,Wordpress Dispatcher 是一个 WordPress Router 系统,用来实现自定义 URL,Valitron 主要用来验证用户提交数据。

"require": {
    "omnipay/omnipay": "~2.0",
    "lokielse/omnipay-wechatpay": "^1.0",
    "thefold/wordpress-dispatcher": "^1.0",
    "vlucas/valitron": "^1.2",
    },
登录后复制

运行composer install命令安装完成后,在主题或插件中引入自动加载文件。

require_once( get_template_directory() . '/vendor/autoload.php' );
登录后复制

前端实现:配置微信 JS SDK,并实现微信支付

这里的 jssdk.php 是微信官方提供的,用来实现为初始化微信 JS SDK 提供签名包。在需要实现微信支付的页面引入这个文件,然后初始化 JSSDK 类即可。

require_once( get_template_directory() . '/inc/jssdk.php' );
$jssdk       = new JSSDK( "xxxxx", "xxxxxxxxxxxxxxxx" );
$signPackage = $jssdk->GetSignPackage();
登录后复制

初始化微信 JS sdk, 调用微信支付方法实现微信支付

首先、确保在页面的 head 因为了微信 JS SDK 的 JavaScript 文件:jweixin-1.0.0.js。根据上面获取的 $signPackage,我们在下面代码中完成了以下几个操作。

使用 wx.config 初始化 js sdk使用 wx.ready 检测 js sdk 是否初始化成功,如果初始化成功,我们就可以使用微信 js sdk 提供的接口进行操作了。点击支付按钮时,发送一个 Ajax 请求到服务器,获取微信订单,然后使用 wx.chooseWXPay 发起微信支付,就是我们在微信里面看到的弹出输入微信密码的界面。

jQuery(document).ready(function ($) {
    
   // 配置 js sdk
   wx.config({
      debug: false,
      appId: &#39;<?php echo $signPackage[ "appId" ];?>&#39;,
      timestamp: <?php echo $signPackage[ "timestamp" ];?>,
      nonceStr: &#39;<?php echo $signPackage[ "nonceStr" ];?>&#39;,
      signature: &#39;<?php echo $signPackage[ "signature" ];?>&#39;,
      jsApiList: [&#39;chooseWXPay&#39;]
      // 这里的 jsApiList 需要什么就填写什么
   });

   // 一定要检查 js sdk 是否已经准备好了
   wx.ready(function () {
      $("#topay").click(function () {
         $.ajax({
            url: &#39;/order/&#39;,
            type: &#39;POST&#39;,
            dataType: &#39;json&#39;,
            data: $("#wepay").serialize(),
            success: function (order) {
               var params = {
                  &#39;timestamp&#39;: order.timeStamp,
                  &#39;nonceStr&#39;: order.nonceStr,
                  &#39;package&#39;: order.package,
                  &#39;signType&#39;: order.signType,
                  &#39;paySign&#39;: order.paySign               };
               wx.chooseWXPay(params);
            },
            error: function (order) {
               c-alert(order.message);
            }
         });
         return false;
      });
   });});
登录后复制

支付窗口闪一下消失有以下几种情况

在微信上测试微信支付的时候,经常会遇到微信支付窗口闪一下就消失了,看不到输入支付密码的界面,可能的原因有以下几点,仔细检查一下。

jssdk 没有配置,检查上面代码中的 wx.config 和 wx.readyAjax 返回的数据有错误,检查 Ajax 请求的返回数据安全域名设置错误,检查在微信管理后台中,是否把测试域名加入到了安全域名中

后端实现:验证并发送订单数据

后端实现很简单,就是接收上面 Ajax 提交过来的数据,然后处理微信支付需要的 Json 数据,同时保存订单到站点的数据库中,供后续查询和后面的通知回调中使用。

// 获取微信支付网关的函数function get_wechat_gateway() {
   $gateway = Omnipay::create( &#39;WechatPay_Js&#39; );
   $gateway->setAppId( &#39; xxxxxxxx&#39; );
   $gateway->setMchId( &#39;xxxxxxxx&#39; );
   $gateway->setApiKey( &#39;xxxxxxxx&#39; ); //注意这里的 ApiKey 是我们在微信商户后台设置的一个32位的随机字符串,和微信公众号里面的 App Secrit 不是一回事。

   return $gateway;}/**
 * 处理订单信息, 跳转到微信支付
 */new Dispatch( [

   &#39;wepay/order&#39; => function ( $request ) {

      // 检查用户提交的数据是否有错,如果有错误,返回错误信息
      $v = new Validator( $_POST );
      $v->rule( &#39;required&#39;, [ &#39;count&#39;, &#39;buyer_name&#39;, &#39;buyer_phone&#39;, &#39;buyer_address&#39; ] );

      if ( ! $v->validate() ) {
         $msg = [
            &#39;success&#39; => &#39;0&#39;,
            &#39;message&#39; => &#39;下单失败, 请检查所有必填项。&#39;,
         ];
         wp_send_json( $msg );
      }

      $user = wp_get_current_user();
      $req = Request::createFromGlobals();
      $pid     = $req->get( &#39;pid&#39; );
      $count   = $req->get( &#39;count&#39; );
      $open_id = $req->cookies->get( &#39;open_id&#39; );
      $prod  = get_post( $pid );
      $price = get_post_meta( $pid, &#39;_prod_price&#39;, true );
      $total_fee = $price * $count * 100;
      $tn        = date( &#39;YmdHis&#39; ) . mt_rand( 1000, 9999 );

      // 在实际开发过程中,我们需要把用户提交的订单数据保存到数据库一份
      // 订单参数
      $order = [
         &#39;body&#39;             => $prod->post_title&#39;,
         &#39;out_trade_no&#39;     => $tn,
         &#39;total_fee&#39;        => $total_fee,
         &#39;spbill_create_ip&#39; => wizhi_get_real_ip(),
         &#39;fee_type&#39;         => &#39;CNY&#39;,
         &#39;open_id&#39;          => $open_id,
      ];
      // 发送支付请求到微信并获取返回信息
      $gateway = get_wechat_gateway();
      $gateway->setNotifyUrl( &#39;https://www.wpzhiku.com/order/return&#39; );
      $response = $gateway->purchase( $order )->send();
      $wechat_return = $response->getJsOrderData();

      wp_send_json( $wechat_return );

   },] );
登录后复制

接受微信支付成功通知,实现自动完成订单或自动充值

支付完成后,微信会返回一个支付成功的通知到我们提供的通知 URL,我们可以根据返回的内容,进行自动完成订单或者自动充值等操作。这里有两点需要注意。

通知 URL 一定要能访问,如果不能访问,微信不会发送通知。要和支付URL在一个目录下

微信官方提供的 SDK 和接口数据非常不规范,在使用的时候一定要代码中的注意大小写,出现了问题,仔细和微信官方提供的开发文档相对照,如果你使用的语言或开发框架提供了微信开发所用到库,建议直接使用这些库进行开发,这些库可以帮助我们绕过微信为我们挖下的各种大坑小坑,减少调试难度、加快开发速度。

更多wordpress相关技术文章,请访问wordpress教程栏目进行学习!

以上是wordpress如何实现微信支付的详细内容。更多信息请关注PHP中文网其他相关文章!

本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

AI Hentai Generator

AI Hentai Generator

免费生成ai无尽的。

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

对于初学者来说,WordPress容易吗? 对于初学者来说,WordPress容易吗? Apr 03, 2025 am 12:02 AM

WordPress对初学者来说容易上手。1.登录后台后,用户界面直观,简洁的仪表板提供所有必要功能链接。2.基本操作包括创建和编辑内容,所见即所得的编辑器简化了内容创建。3.初学者可以通过插件和主题扩展网站功能,学习曲线存在但可以通过实践掌握。

WordPress有什么用? WordPress有什么用? Apr 07, 2025 am 12:06 AM

wordpressgood forvortalyanewebprojectDuetoItsAsatilityAsacms.itexcelsin:1)用户友好性,允许Aeserywebsitesetup; 2)sexibility andcustomized andcustomization and numerthemesandplugins; 3)seoop timigimization; and4)and4)

我可以在3天内学习WordPress吗? 我可以在3天内学习WordPress吗? Apr 09, 2025 am 12:16 AM

能在三天内学会WordPress。1.掌握基础知识,如主题、插件等。2.理解核心功能,包括安装和工作原理。3.通过示例学习基本和高级用法。4.了解调试技巧和性能优化建议。

WordPress的成本是多少? WordPress的成本是多少? Apr 05, 2025 am 12:13 AM

WordPress本身免费,但使用需额外费用:1.WordPress.com提供从免费到付费的套餐,价格从每月几美元到几十美元不等;2.WordPress.org需购买域名(每年10-20美元)和托管服务(每月5-50美元);3.插件和主题多数免费,付费的价格在几十到几百美元之间;通过选择合适的托管服务、合理使用插件和主题、定期维护和优化,可以有效控制和优化WordPress的成本。

我应该使用Wix或WordPress吗? 我应该使用Wix或WordPress吗? Apr 06, 2025 am 12:11 AM

Wix适合没有编程经验的用户,WordPress适合希望有更多控制和扩展能力的用户。1)Wix提供拖放式编辑器和丰富模板,易于快速搭建网站。2)WordPress作为开源CMS,拥有庞大社区和插件生态,支持深度自定义和扩展。

WordPress仍然免费吗? WordPress仍然免费吗? Apr 04, 2025 am 12:06 AM

WordPress核心版本是免费的,但使用过程中可能产生其他费用。1.域名和托管服务需要付费。2.高级主题和插件可能需要付费。3.专业服务和高级功能可能需要付费。

如何开始WordPress博客:初学者的分步指南 如何开始WordPress博客:初学者的分步指南 Apr 17, 2025 am 08:25 AM

博客是人们在网上表达观点、意见和见解的理想平台。许多新手渴望建立自己的网站,却因担心技术障碍或成本问题而犹豫不决。然而,随着平台不断发展以满足初学者的能力和需求,现在开始变得比以往任何时候都更容易。 本文将逐步指导您如何建立一个WordPress博客,从主题选择到使用插件提升安全性和性能,助您轻松创建自己的网站。 选择博客主题和方向 在购买域名或注册主机之前,最好先确定您计划涵盖的主题。个人网站可以围绕旅行、烹饪、产品评论、音乐或任何激发您兴趣的爱好展开。专注于您真正感兴趣的领域可以鼓励持续写作

为什么有人会使用WordPress? 为什么有人会使用WordPress? Apr 02, 2025 pm 02:57 PM

人们选择使用WordPress是因为其强大和灵活性。1)WordPress是一个开源的CMS,易用性和可扩展性强,适合各种网站需求。2)它有丰富的主题和插件,生态系统庞大,社区支持强大。3)WordPress的工作原理基于主题、插件和核心功能,使用PHP和MySQL处理数据,支持性能优化。

See all articles