이 글에서는 위챗 결제의 동적 링크 QR 코드를 기반으로 한 네이티브 결제 구현 프로세스를 주로 소개하며, 위챗 결제를 개발하는 파트너에게 도움이 되기를 바랍니다.
참고:
WeChat Pay는 이제 v2 버전과 v3 버전으로 구분됩니다. 2014년 9월 10일 이전에 신청하신 분들은 v2 버전이고, 그 이후에 신청하신 분들은 v3 버전입니다. WeChat Pay V3 버전에는 paySignKey 매개변수가 없습니다. 이 기사에서는 WeChat Pay v3를 소개합니다.
1. 상품 정보 생성
동적링크 결제 과정에서는 상품 거래가 먼저 생성된 후 결제 거래가 이루어집니다.
1. 상품정보 준비
주로 상품명, 가격, 거래번호 등을 정의합니다. 코드는 다음과 같습니다.
include_once("../WxPayPubHelper/WxPayPubHelper.php"); //使用统一支付接口 $unifiedOrder = new UnifiedOrder_pub(); //设置统一支付接口参数 //设置必填参数 //appid已填,商户无需重复填写 //mch_id已填,商户无需重复填写 //noncestr已填,商户无需重复填写 //spbill_create_ip已填,商户无需重复填写 //sign已填,商户无需重复填写 $unifiedOrder->setParameter("body","贡献一分钱");//商品描述 $timeStamp = time(); $out_trade_no = WxPayConf_pub::APPID."$timeStamp"; $unifiedOrder->setParameter("out_trade_no","$out_trade_no");//商户订单号 $unifiedOrder->setParameter("total_fee","1");//总金额 $unifiedOrder->setParameter("notify_url",WxPayConf_pub::NOTIFY_URL);//通知地址 $unifiedOrder->setParameter("trade_type","NATIVE");//交易类型 //非必填参数,商户可根据实际情况选填 $unifiedOrder->setParameter("device_info","100001");//设备号
위 매개변수는 최종적으로 다음
<xml> <body><![CDATA[贡献一分钱]]></body> <out_trade_no><![CDATA[100001_1433009089]]></out_trade_no> <total_fee>1</total_fee> <notify_url><![CDATA[http://www.doucube.com/weixin/demo/notify_url.php]]></notify_url> <trade_type><![CDATA[NATIVE]]></trade_type> <device_info>100001</device_info> <appid><![CDATA[wx1d065b0628e21103]]></appid> <mch_id>1237905502</mch_id> <spbill_create_ip><![CDATA[61.129.47.79]]></spbill_create_ip> <nonce_str><![CDATA[gwpdlnn0zlfih21gipjj5z53i7vea8e8]]></nonce_str> <sign><![CDATA[C5A1E210F9B4402D8254F731882F41AC]]></sign> </xml>
와 유사한 XML 매개변수로 캡슐화됩니다. 2. 통합 결제 요청
위 XML을 보냅니다. 통합 결제 인터페이스
https://api.mch.weixin.qq.com/pay/unifiedorder
다음과 같은 XML 데이터를 가져옵니다
<xml> <return_code><![CDATA[SUCCESS]]></return_code> <return_msg><![CDATA[OK]]></return_msg> <appid><![CDATA[wx1d065b0628e21103]]></appid> <mch_id><![CDATA[1237905502]]></mch_id> <device_info><![CDATA[100001]]></device_info> <nonce_str><![CDATA[6u8ovTtFupTagsiY]]></nonce_str> <sign><![CDATA[E84D8BC2331766DD685591F908367FF1]]></sign> <result_code><![CDATA[SUCCESS]]></result_code> <prepay_id><![CDATA[wx20150531020450bb586eb2f70717331240]]></prepay_id> <trade_type><![CDATA[NATIVE]]></trade_type> <code_url><![CDATA[weixin://wxpay/bizpayurl?pr=dNp7omD]]></code_url> </xml>
이런 방법으로, code_url을 받게 됩니다
프로그램은 code_url에서 QR 코드를 생성한 다음 이를 사용자에게 스캔하여 제공합니다
2. 사용자 결제
1. 사용자 결제
사용자 결제가 성공한 후 WeChat은 다음 내용이 포함된 XML 알림을 inform_url로 보냅니다.
<xml> <appid><![CDATA[wx1d065b0628e21103]]></appid> <bank_type><![CDATA[CFT]]></bank_type> <cash_fee><![CDATA[1]]></cash_fee> <device_info><![CDATA[100001]]></device_info> <fee_type><![CDATA[CNY]]></fee_type> <is_subscribe><![CDATA[N]]></is_subscribe> <mch_id><![CDATA[1237905502]]></mch_id> <nonce_str><![CDATA[gwpdlnn0zlfih21gipjj5z53i7vea8e8]]></nonce_str> <openid><![CDATA[oMNKHuBTW4YWgNGAVQW00tWK6auM]]></openid> <out_trade_no><![CDATA[100001_1433009089]]></out_trade_no> <result_code><![CDATA[SUCCESS]]></result_code> <return_code><![CDATA[SUCCESS]]></return_code> <sign><![CDATA[03EEDE7ADE2ABB7916795F37F19A3D13]]></sign> <time_end><![CDATA[20150531020838]]></time_end> <total_fee>1</total_fee> <trade_type><![CDATA[NATIVE]]></trade_type> <transaction_id><![CDATA[1002750205201505310187709542]]></transaction_id> </xml>
notification_url이 수신되면 확인 성공 메시지가 반환됩니다. 위챗 서버
<xml> <return_code><![CDATA[SUCCESS]]></return_code> </xml>
에 이렇게 동적 링크 네이티브가 완성됩니다.
주문 쿼리 인터페이스를 사용하여 주문을 쿼리하고 다음을 반환합니다.
거래 상태: SUCCESS
장치 번호: 100001
사용자 ID: oMNKHuBTW4YWgNGAVQW00tWK6auM
다음을 따를지 여부 공용 계정: N
거래 유형: NATIVE
결제 은행: CFT
총액: 1
현금 쿠폰 금액:
통화 유형: CNY
WeChat 결제 주문 번호: 1002750205201505310187709542
가맹점 주문번호: 100001_1433009089
가맹점 데이터 패키지: 배열
결제 완료 시간: 20150531020837
위는 위챗 결제 동적링크 정보 모음입니다. WeChat 결제를 개발합니다.
위 내용은 WeChat 결제 개발 동적 링크 기본 결제 예시 코드의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!