• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

微信支付—— 扫码支付

php 搞代码 4年前 (2022-01-23) 23次浏览 已收录 0个评论

个人认为扫码支付比Jsapi支付从开发和使用上要顺心的多。扫码支付不用担心是PC端还是移动浏览器还是微信客户端访问的问题,生成一个二维码,扫描支付即可。

一些配置和代码SDK以及SDK存在的错误可以参考上一篇 微信支付的文章

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

友情提示以下内容实在简陋 – -# 如果你跑通了 Jsapi支付,那么扫码支付其实没什么太特别的。

扫码支付发起支付的文件在 example SDK 中的 native.php 文件中

扫码支付有两种支付方式,在使用扫码支付之前必须配置 支付回调URL具体配置 参考

微信开发者文档 http://pay.weixin.qq.com/wiki/doc/api/native.php?chapter=6_3

两种支付方式的介绍

模式1:http://pay.weixin.qq.com/wiki/doc/api/native.php?chapter=6_4

模式2:http://pay.weixin.qq.com/wiki/doc/api/native.php?chapter=6_5

其实模式2 不需要设置回调URL 但是一旦你修改了支付配置,而且要使用扫码支付就必须勾选Native原生支付,此时回调URL也就是必填项了

但是我只想用模式2 ,模式2 用不到回调URL,只好胡乱写了个以后使用模式1可能使用的URL了。

代码分析:

扫码支付模式1

$notify = new NativePay();$url1 = $notify->GetPrePayUrl("123456789");

主要看一下 扫码支付模式2

$input = new WxPayUnifiedOrder();$input->SetBody("test");$input->SetAttach("test");$input->SetOut_trade_no(WxPayConfig::MCHID.date("YmdHis"));$input->SetTotal_fee("1");$input->SetTime_start(date("YmdHis"));$input->SetTime_expire(date("YmdHis", time() + 600));$input->SetGoods_tag("test");$input->SetNotify_url("http://paysdk.weixin.qq.com)本文来(源gaodai#ma#com搞@@代~&码*网2
搞代gaodaima码

/example/notify.php");$input->SetTrade_type("NATIVE");$input->SetProduct_id("123456789");$result = $notify->GetPayUrl($input);$url2 = $result["code_url"];
二维码:

" style="width:150px;height:150px;"/>

首先实例化类WxPayUnifiedOrder,然后设置一些支付所需的参数,并将所需参数传给函数 GetPayUrl()

函数定义在 example/Wxpay.NativePay.php 文件中

public function GetPayUrl($input)	{		if($input->GetTrade_type() == "NATIVE")		{			$result = WxPayApi::unifiedOrder($input);			return $result;		}	}

$result = WxPayApi::unifiedOrder($input);

此处代码即为 调用统一下单接口 ,代码位于 文件 lib/WxPay.Api.php 其中部分代码

if($inputObj->GetTrade_type() == "JSAPI" && !$inputObj->IsOpenidSet()){			throw new WxPayException("统一支付接口中,缺少必填参数openid!trade_type为JSAPI时,openid为必填参数!");		}		if($inputObj->GetTrade_type() == "NATIVE" && !$inputObj->IsProduct_idSet()){			throw new WxPayException("统一支付接口中,缺少必填参数product_id!trade_type为JSAPI时,product_id为必填参数!");		}

判断支付方式,如果是 JsApi 方式需要Openid

Native 方式必须需要product_id , 顺便再吐槽一下,判断是否是Native 支付方式,缺少product_id 提示的 后面竟然是 JSAPI 必填product_id ,

唉,真是不能再马虎了,SDK都可以这么马虎的写写也没sei了

在之后就是调用统一下单接口流程了。

函数执行完毕会返回一个 weixin:// 开头的链接,再调用phpqrcode 程序生成二维码即可。

支付结果处理页面仍使用notify.php 文件中的处理逻辑就可以了。

延伸阅读:

微信支付之扫码支付(java版 native原生支付)
微信支付开发流程
微信支付JS-SDK最新版,从0开始
iOS-关于微信支付

以上就介绍了微信支付—— 扫码支付,包括了方面的内容,希望对PHP教程有兴趣的朋友有所帮助。


搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:微信支付—— 扫码支付

喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址