>  기사  >  백엔드 개발  >  PHP 프로젝트는 WeChat 코드 스캐닝 결제 API(국내 결제)를 통합합니다.

PHP 프로젝트는 WeChat 코드 스캐닝 결제 API(국내 결제)를 통합합니다.

不言
不言원래의
2018-04-28 09:16:583683검색

이 글의 내용은 WeChat 코드 스캐닝 결제 API(국내 결제)를 통합한 PHP 프로젝트에 대한 내용입니다. 이제 필요한 친구들이 참고할 수 있도록 공유하겠습니다.

1. WeChat 코드 스캐닝 결제 프로세스

1. 기업용 공개 계정 신청(개인 구독 계정은 결제 기능을 활성화할 수 없음), 등록 채널: WeChat 공개 플랫폼 등록

2. 신청 채널은 신청이 성공한 WeChat 공개 플랫폼에 있습니다. Medium

3. WeChat 판매자 플랫폼에 로그인하고 제품 센터->내 제품->결제하려면 QR 코드 스캔을 클릭하세요. 비용을 지불하고 활성화를 신청한 후 일련의 정보 입력과 다음 단계를 따르세요.

4 스캔 코드 결제 상품 신청이 성공한 후 위챗 가맹점 플랫폼에서도 상품 센터 -> 개발 구성을 찾아 API 키를 구성하고 32자리 비밀번호를 생성하는 도구를 찾아 생성합니다. 키를 입력하고 저장합니다.

5. 상품센터->APPID 인증관리를 찾아 인증주소에 내 도메인 이름을 추가해주세요.

이제 기본 작업은 완료되었습니다.

2. WeChat 결제에 필요한 구성 정보 및 파일 가져오기

1. 구성 정보 가져오기

(1) APPID: WeChat 공식 계정의 애플리케이션 ID로, 위챗 공식 계정.

(2) APPSECRET: 위챗 공식 계정 키, 32자리 비밀번호, 위챗 공식 계정에서 찾으세요.

(3) MCHID: 판매자 번호, WeChat 판매자 플랫폼의 계정 센터->개인 정보에서 확인하세요.

(4) 키: API 키는 WeChat 판매자 플랫폼의 계정 센터->API 보안에서 확인하세요.

2. WeChat 결제 보안 인증서 다운로드

WeChat 판매자 플랫폼에서 "계정 센터->계정 설정->API 보안->인증서 다운로드"를 찾아 인증서를 다운로드하고 로컬 파일에 저장하세요.

3. 실제 애플리케이션 작동(ThinkPHP3.2)

1. WeChat 스캔 코드 결제 PHP 버전 데모 다운로드, 다운로드 채널: WeChat 스캔 코드 결제 데모

2. 폴더에 있는 인증서 파일의 설치 인증서를 압축을 풀고 이전에 로컬에 저장한 보안 인증서로 교체합니다.

3. /lib/WxPay.Config.php를 찾아 파일을 열고 다음과 같이 구성 매개변수를 이전에 얻은 매개변수로 바꿉니다. 4. 수정된 전체 데모 파일을 ThinkPHP 프로젝트의 Vendor로 잘라냅니다. 구체적인 주소는 다음과 같습니다: /ThinkPHP/Library/Vendor/, 컨트롤러에서


5. 실제 애플리케이션 코드에서 컨트롤러는 홈 모듈 아래의 Pay 컨트롤러입니다.
(1) WeChat 결제 링크 생성 및 결제 페이지 코드 로드:

    public function wxpay()
    {
        // 设置时区
        ini_set('date.timezone','Asia/Shanghai');
        error_reporting(E_ERROR);

        // 引入支付核心文件
        vendor('wxpay.lib.WxPay#Api');
        vendor('wxpay.example.WxPay#NativePay');
        vendor('wxpay.example.log');

        //获取数据
        $title = $_POST['title'];
        $description = $_POST['description'];
        $order_no = $_POST['order_no'];
        $total = $_POST['total'];

        // 组装支付参数数据
        $input = new \WxPayUnifiedOrder();
        $input->SetBody($title);
        $input->SetAttach($description);
        $input->SetOut_trade_no($orderno);
        $input->SetTotal_fee($total);
        $input->SetTime_start(date("YmdHis"));
        $input->SetTime_expire(date("YmdHis", time() + 600));
        $input->SetGoods_tag("test");
        // 设置微信扫码支付成功后的回调地址
        $input->SetNotify_url("http://www.XXXXXX.com/Home/pay/wx_notify");
        $input->SetTrade_type("NATIVE");
        $input->SetProduct_id("123");

        // 生成支付链接
        $notify = new \NativePay();
        $result = $notify->GetPayUrl($input);
        $url    = $result["code_url"];
        $this->assign("url",base64_encode($url));

        // 加载二维码生成页面
        $this->display("test/wxpay");
    }
(2) 결제 페이지 html 코드
<p class="block" style="text-align: center;">
      <img src="{:U(&#39;Home/pay/qrcode&#39;,array(&#39;url&#39;=>$url))}" alt="微信支付二维码" />
      <p style="text-align: center;color: #4a8bc2;font-size: 20px;">请打开微信,扫描上方二维码完成支付</p>
</p>
(3) QR 코드 생성

    // 生成微信支付二维码
    public function qrcode(){
        error_reporting(E_ERROR);
        vendor(&#39;wxpay.example.phpqrcode.phpqrcode&#39;);
        $url = base64_decode($_GET["url"]);             //二维码内容
        $errorCorrectionLevel = &#39;H&#39;;                    //容错级别 
        $matrixPointSize = 10;                          //生成图片大小 
        \QRcode::png($url,false,$errorCorrectionLevel, $matrixPointSize,3);
    }

(4) 스캔 코드 결제 콜백 기능

	// 微信回调
	public function wx_notify(){
		ini_set(&#39;date.timezone&#39;,&#39;Asia/Shanghai&#39;);
		error_reporting(E_ERROR);

		vendor(&#39;wxpay.example.notify&#39;);

		$notify = new \PayNotifyCallBack();
		$notify->Handle(false);

		$is_success = $notify->IsSuccess(); 
		$bdata = $is_success[&#39;data&#39;]; 				//获取微信回调数据

		if($is_success[&#39;code&#39;] == 1){
			//验证成功,获取数据
			$total_fee=$bdata[&#39;total_fee&#39;]/100;		//支付金额
			$trade_no=$bdata[&#39;transaction_id&#39;];		//微信订单号
			$out_trade_no=$bdata[&#39;out_trade_no&#39;];	        //系统订单号
			$openid=$bdata[&#39;openid&#39;];			//用户在商户appid下的唯一标识

			// 其他coding ……
		}
	}
(5) 결제 성공 여부를 페이지에서 판단하는 아이디어

위챗 스캔코드 결제 페이지는 직접 작성하기 때문에 결제 성공 여부를 판단하려면 js도 작성해야 합니다. QR코드 페이지를 통해 결제 성공 여부를 확인할 수 있습니다. 일반적인 아이디어는 다음과 같습니다:

页面中写一个定时执行的js函数,每隔1秒钟监测一下当前支付订单的状态,如果订单状态变为已支付,则马上回馈用户支付状态,并跳转到支付成功状态页。

4. 참조 문서

Alipay 스캔 코드 결제 개발 문서;

관련 권장 사항:

퍼지 쿼리를 구현하는 PHP 또는 PHP 프로젝트

위 내용은 PHP 프로젝트는 WeChat 코드 스캐닝 결제 API(국내 결제)를 통합합니다.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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