>  기사  >  백엔드 개발  >  WeChat Pay——QR 코드를 스캔하여 결제하세요.

WeChat Pay——QR 코드를 스캔하여 결제하세요.

WBOY
WBOY원래의
2016-08-08 09:25:141211검색

개인적으로는 스캐닝코드 결제가 Jsapi 결제보다 개발이나 사용 측면에서 훨씬 원활하다고 생각합니다. QR 코드를 스캔하여 결제할 때 PC, 모바일 브라우저, 위챗 클라이언트를 통한 접속에 대해 걱정할 필요 없이 QR 코드를 생성하고 스캔하여 결제할 수 있습니다.

일부 구성 및 코드 SDK와 SDK의 오류에 대해서는 이전 기사를 참조하세요. 위챗페이 기사

위챗결제 - 공식계정 결제코드 상세설명


다음 내용은 정말 간단하다는 점을 알려드립니다. - -# Jsapi 결제를 실행하셨다면 QR 코드를 스캔하여 결제하는 데 특별한 방법은 없습니다.

결제를 시작하기 위해 QR 코드를 스캔하는 파일은 예제 SDK의 Native.php 파일에 있습니다.

스캔코드 결제에는 두 가지 결제 방식이 있습니다. 스캔코드 결제를 이용하기 전에 결제 콜백 URL에 대한 구체적인 구성을 설정해야 합니다.

WeChat 개발자 문서 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 설정이 필요하지 않습니다. 단, 결제 구성을 수정하고 스캔코드 결제를 사용하게 되면 반드시 네이티브 결제를 체크하셔야 합니다. 이때 콜백 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/example/notify.php");
$input->SetTrade_type("NATIVE");
$input->SetProduct_id("123456789");
$result = $notify->GetPayUrl($input);
$url2 = $result["code_url"];

QR 코드:



<img alt="模式二扫码支付" src="http://paysdk.weixin.qq.com/example/qrcode.php?data=<?php echo urlencode($url2);?>" 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가 필요합니다.


기본 방법에는 product_id가 필요합니다. 그런데 기본 결제 방법인지 확인하기 위해 product_id 프롬프트가 누락되었지만 JSAPI에는 product_id가 필요한 것으로 나타났습니다.

아아, 정말 더 이상 엉성할 수 없습니다. SDK를 이렇게 엉성하게 작성할 수도 있습니다.

그런 다음 통합 주문 인터페이스 프로세스가 호출됩니다.


함수가 실행되면 weixin://으로 시작하는 링크가 반환되며, 이후 phpqrcode 프로그램을 호출하여 QR 코드를 생성할 수 있습니다.

결제 결과 처리 페이지에서는 여전히 inform.php 파일의 처리 로직을 사용할 수 있습니다.


추가 자료:

WeChat 결제 스캔 코드 결제(자바 버전 기본 결제)
WeChat 결제 개발 과정
WeChat Payment JS-SDK 최신 버전, 0부터 시작
 iOS-WeChat 결제 정보

위챗 결제 - 스캔코드 결제 관련 내용을 소개하고 있으니 PHP 튜토리얼에 관심이 있는 친구들에게 도움이 되었으면 좋겠습니다.

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.