이 글에서는 WeChat 결제에 따른 H5 결제 구현 프로세스를 소개합니다.
H5 결제는 공용 계정을 기반으로 개발된 비위챗 브라우저 결제 방식으로(결제 승인은 별도로 신청해야 함), 위챗 외부의 모바일 H5 페이지를 만족시킬 수 있습니다. .WeChat 결제 요구 사항. .
테스트 주소
http://wxpay.weixin.qq.com/pub_v2/pay/wap.v2.php
http://wxpay.weixin.qq .com/mch/pay/h5.v2.php
렌더링
흐름도
주로 상품명, 가격, 거래번호 등을 정의합니다. 코드는 다음과 같습니다.
include_once("../WxPayPubHelper/WxPayPubHelper.php"); //使用统一支付接口 $unifiedOrder = new UnifiedOrder_pub(); //设置统一支付接口参数 //设置必填参数 //appid已填,商户无需重复填写 //mch_id已填,商户无需重复填写 //noncestr已填,商户无需重复填写 //spbill_create_ip已填,商户无需重复填写 //sign已填,商户无需重复填写 $unifiedOrder->setParameter("body","H5支付测试");//商品描述 $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","WAP");//交易类型 //非必填参数,商户可根据实际情况选填 $unifiedOrder->setParameter("device_info","100001");//设备号
위 매개변수는 최종적으로 다음
<xml> <out_trade_no></out_trade_no> <total_fee>1</total_fee> //<notify_url></notify_url> <trade_type></trade_type> <device_info>100001</device_info> <appid></appid> <mch_id>1237905502</mch_id> <spbill_create_ip></spbill_create_ip> <nonce_str></nonce_str> <sign></sign></xml>2. 통화 통합 결제 요청위 XML을 통합 결제 인터페이스로 전송
https://api.mch.weixin.qq.com/pay/unifiedorder다음 XML 데이터 가져오기
<xml> <return_code></return_code> <return_msg></return_msg> <appid></appid> <mch_id></mch_id> <device_info></device_info> <nonce_str></nonce_str> <sign></sign> <result_code></result_code> <prepay_id></prepay_id> <trade_type></trade_type> </xml>이런 식으로 선불을 받게 됩니다 2. DeepLink가맹점 서버가 API에 대해서는 공개 API [통합 주문](인터페이스의 trade_type을 WAP로 정의해야 함)을 참조하세요. WeChat은 판매자에게 선불 ID를 반환하고 판매자는 고정된 형식이며 사용자는 딥링크를 클릭하여 WeChat 결제를 활성화합니다.
딥링크 형식:
weixin://wap/pay?appid%3Dwxf5b5e87a6a0fde94%26noncestr%3D123%26package%3D123%26prepayid%3Dwx20141203201153d7bac0d2e10889028866%26sign%3D6AF4B69CCC30926F85770F900D098D64%26timestamp%3D1417511263딥링크를 생성하는 단계는 다음과 같습니다.
1단계: URL 형식에 따라 매개변수를 조합하고 $ 값 부분은 URL로 인코딩됩니다. 문자열1 생성:
string1: key1=Urlencode($value1)&key2=Urlencode($value2,&...
2단계: 전체 문자열1을 Urlencode하고 문자열2를 생성합니다.
String2 =Urlencode(string1 ; URLEncode
string2:
appid=wxf5b5e87a6a0fde94&noncestr=123&package=WAP&prepayid=wx201412101630480281750c890475924233&sign=53D411FB74FE0B0C79CC94F2AB0E2333×tamp=1417511263
와 프로토콜 헤더 weixin://wap/pay?를 추가하여 최종 딥링크를 얻습니다.
필드 이름 th> | 변수 이름 | 필수 | 유형 | 값 예시 | th> | 설명 |
---|---|---|---|---|---|---|
공개 계정 ID | appid | 예 | String(32) | wx8888888888888888 | WeChat에서 할당한 공개 계정 ID | |
임의의 문자열 | noncestr | 는 | String(32) | 5K8264ILTKCH16CQ2502SI8ZNMTM67VS | 임의 32비트 이하의 문자열. 권장되는 난수 생성 알고리즘<.> | |
주문 세부정보 확장 문자열 | 패키지 | td> | 문자열(32) | WAP확장 필드, WAP를 고정적으로 입력 | ||
선불 거래 세션 ID | prepayid | 예 | String(64) | wx201410272009395522657a690389285100 | WeChat 통합에서 반환된 선불 회신 ID 주문 인터페이스는 후속 인터페이스 호출에 사용됩니다. 값은 2시간 동안 유효합니다. | |
Sign | sign | is td> | String(32) | C380BEC2BFD727A4B6845133519F3AD6서명, 자세한 내용은 서명 생성 알고리즘 참조 | ||
타임스탬프 | 타임스탬프 | 예 | 문자열(32) | 1414561699 | 현재 시간, 기타 세부정보는 타임스탬프 규칙을 참조하세요 |
개발 문서: https://pay.weixin.qq.com/wiki/doc/api/wap.php?chapter=15_1
1. 사용자가 판매자 측에서 주문을 완료하고 WeChat Pay를 사용하여 결제합니다
2. WeChat Pay 요청(통합 주문 인터페이스 호출) 참고: 거래 유형 trade_type=MWEB
3. WeChat Pay는 판매자 권한을 확인합니다
4. 결제 점프 URL(흐름도의 WeChat 전송 페이지 주소인 매개변수 이름 "mweb_url")과 같은 판매자 백엔드
5. 판매자 백엔드는 통합 주문 인터페이스에서 반환 매개변수를 수신하여 반환합니다. mweb_url을 프런트 엔드로
6. 판매자는 프런트 엔드 페이지를 통해 WeChat 전송 페이지 mweb_url에 액세스합니다(이 단계에서 WeChat Pay는 요청 소스가 합법적인지 확인하기 위해 참조를 확인합니다)
7. mweb_url 이체 페이지가 WeChat 결제 계산원을 활성화합니다.
8. WeChat Pay 결제가 활성화되고 동시에 mweb_url 이체 페이지가 닫힙니다.
9. WeChat Pay 결제에서 결제 완료
WeChat Pay 개발 H5 결제 관련 더 많은 글은 PHP 중국어 홈페이지를 주목해주세요!