微信支付—— 扫码支付
个人认为扫码支付比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");
$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/example/notify.php"); $input->SetTrade_type("NATIVE"); $input->SetProduct_id("123456789"); $result = $notify->GetPayUrl($input); $url2 = $result["code_url"];
二维码:
<img alt="模式二扫码支付" src="http://paysdk.weixin.qq.com/example/qrcode.php?data=<?php%20echo%20urlencode(%24url2);?>" style="max-width:90%">
函数定义在 example/Wxpay.NativePay.php 文件中
public function GetPayUrl($input) { if($input->GetTrade_type() == "NATIVE") { $result = WxPayApi::unifiedOrder($input); return $result; } }
$result = WxPayApi::unifiedOrder($input);
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教程有兴趣的朋友有所帮助。

Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

AI Hentai Generator
Menjana ai hentai secara percuma.

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas



Dalam bab ini, kita akan memahami Pembolehubah Persekitaran, Konfigurasi Umum, Konfigurasi Pangkalan Data dan Konfigurasi E-mel dalam CakePHP.

PHP 8.4 membawa beberapa ciri baharu, peningkatan keselamatan dan peningkatan prestasi dengan jumlah penamatan dan penyingkiran ciri yang sihat. Panduan ini menerangkan cara memasang PHP 8.4 atau naik taraf kepada PHP 8.4 pada Ubuntu, Debian, atau terbitan mereka

Untuk bekerja dengan tarikh dan masa dalam cakephp4, kami akan menggunakan kelas FrozenTime yang tersedia.

Untuk mengusahakan muat naik fail, kami akan menggunakan pembantu borang. Di sini, adalah contoh untuk muat naik fail.

Dalam bab ini, kita akan mempelajari topik berikut yang berkaitan dengan penghalaan ?

Bekerja dengan pangkalan data dalam CakePHP adalah sangat mudah. Kami akan memahami operasi CRUD (Buat, Baca, Kemas Kini, Padam) dalam bab ini.

CakePHP ialah rangka kerja sumber terbuka untuk PHP. Ia bertujuan untuk menjadikan pembangunan, penggunaan dan penyelenggaraan aplikasi lebih mudah. CakePHP adalah berdasarkan seni bina seperti MVC yang berkuasa dan mudah difahami. Model, Pandangan dan Pengawal gu

Pengesah boleh dibuat dengan menambah dua baris berikut dalam pengawal.
