Rumah pembangunan bahagian belakang tutorial php 微信支付—— 扫码支付

微信支付—— 扫码支付

Aug 08, 2016 am 09:25 AM
gt input native nbsp php

个人认为扫码支付比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");
Salin selepas log masuk
主要看一下 扫码支付模式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/example/notify.php");
$input->SetTrade_type("NATIVE");
$input->SetProduct_id("123456789");
$result = $notify->GetPayUrl($input);
$url2 = $result["code_url"];
Salin selepas log masuk

二维码:



<img alt="模式二扫码支付" src="http://paysdk.weixin.qq.com/example/qrcode.php?data=<?php%20echo%20urlencode(%24url2);?>"   style="max-width:90%">
Salin selepas log masuk
首先实例化类WxPayUnifiedOrder,然后设置一些支付所需的参数,并将所需参数传给函数 GetPayUrl()


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


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

$result = WxPayApi::unifiedOrder($input);
Salin selepas log masuk
此处代码即为 调用统一下单接口 ,代码位于 文件 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为必填参数!");
		}
Salin selepas log masuk

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


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

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

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


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

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


延伸阅读:

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

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

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

AI Hentai Generator

AI Hentai Generator

Menjana ai hentai secara percuma.

Artikel Panas

R.E.P.O. Kristal tenaga dijelaskan dan apa yang mereka lakukan (kristal kuning)
2 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Tetapan grafik terbaik
2 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Cara Memperbaiki Audio Jika anda tidak dapat mendengar sesiapa
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Konfigurasi Projek CakePHP Konfigurasi Projek CakePHP Sep 10, 2024 pm 05:25 PM

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

Panduan Pemasangan dan Naik Taraf PHP 8.4 untuk Ubuntu dan Debian Panduan Pemasangan dan Naik Taraf PHP 8.4 untuk Ubuntu dan Debian Dec 24, 2024 pm 04:42 PM

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

Tarikh dan Masa CakePHP Tarikh dan Masa CakePHP Sep 10, 2024 pm 05:27 PM

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

Muat naik Fail CakePHP Muat naik Fail CakePHP Sep 10, 2024 pm 05:27 PM

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

Penghalaan CakePHP Penghalaan CakePHP Sep 10, 2024 pm 05:25 PM

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

CakePHP Bekerja dengan Pangkalan Data CakePHP Bekerja dengan Pangkalan Data Sep 10, 2024 pm 05:25 PM

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

Bincangkan CakePHP Bincangkan CakePHP Sep 10, 2024 pm 05:28 PM

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 Mencipta CakePHP Pengesah Mencipta CakePHP Sep 10, 2024 pm 05:26 PM

Pengesah boleh dibuat dengan menambah dua baris berikut dalam pengawal.

See all articles