네자 문서
이름 | 게이트웨이 | 지원 활동 | 콜백 지원 | 주목 |
---|---|---|---|---|
alipay_app | 알리페이 앱 결제 | 결제/결제문의/환불 | 지불하다 | |
alipay_qr | Alipay 스캔코드 결제 | 결제/결제문의/환불 | 지불하다 | |
alipay_wap | Alipay 모바일 웹사이트 결제 | 결제/결제문의/환불 | 지불하다 | |
alipay_web | Alipay PC 홈페이지 결제 | 결제/결제문의/환불 | 지불하다 | |
wechat_app | 위챗 앱 결제 | 결제/결제문의/환불/환불문의 | 결제통지/환불통지 | |
wechat_h5 | 위챗 H5 결제 | 결제/결제문의/환불/환불문의 | 결제통지/환불통지 | 결제 링크 확보 기능 내장 |
wechat_mina | 위챗 미니 프로그램 결제 | 결제/결제문의/환불/환불문의 | 결제통지/환불통지 | |
wechat_official | 위챗 공식계정 결제 | 결제/결제문의/환불/환불문의 | 결제통지/환불통지 | |
wechat_qr | WeChat 스캔 코드 결제 | 결제/결제문의/환불/환불문의 | 결제통지/환불통지 | |
Union_web | UnionPay 웹 결제 | 결제/결제문의 | 지불 통지 | 이전 버전 |
Union_app | UnionPay 웹 결제 | 지불하다 | 지불 통지 | 이전 버전 |
paypal_express_checkout | PayPal 익스프레스 체크아웃 | 결제/결제문의 | 지불 통지 | 불안정한 |
pingan_wechat_h5 | 핑안은행 위챗 H5 결제 | 결제/결제문의/환불 | 지불하다 | |
wechatoversea_official | WeChat 국경 간 공개 계정 결제 | 결제/결제문의/환불 | 지불하다 |
제3자 결제에 연결할 때, 특히 여러 제3자 결제에 연결할 때 제3자 문서를 읽고 매개변수를 조립하고 디버깅하는 데 많은 시간을 소비해야 합니다. 예를 들어 제3자에게 전화하여 주문하고 결제를 생성하세요. WeChat과 Alipay를 동시에 연결해야 한다면 문서를 수집해야 하는데, 이는 매우 번거로울 수 있습니다(실제로는 괜찮습니다...흐흐...).
이 구성 요소는 제3자와 통신하기 위한 세 부분을 제공합니다.
각 부분은 서로 다른 액션으로 나누어져 있으며, 각 액션은 고정된 형식(Form)에 묶여 있으며, 각 형식의 내용은 고정되어 있습니다.
예를 들어, 주문을 하고 결제(ChargeRequest)를 생성하기 위해 제3자를 적극적으로 호출할 때 그가 사용하는 양식은 ChargeRequestForm
입니다. 양식을 작성하고 구성 요소를 전달한 후 구성 요소는 매개 변수를 처리하고 세 번째를 호출할 수 있습니다. -파티 지불.
이러한 방식으로 여러 제3자 결제에 연결하려면 구성 요소의 양식 내용만 이해하면 됩니다(hhh는 존재하지 않습니다).
여기서는 Alipay PC 웹사이트 결제를 예로 들어 보겠습니다. 다른 결제 게이트웨이를 사용해야 하는 경우 Cashier
인스턴스화할 때 전달된 $gateway
만 수정하면 됩니다.
구성 요소에서 사용하는 기본 통화 단위는 센트입니다.
<?php
use Runner NezhaCashier Cashier ;
// 按格式组装好配置
$ config = [
' app_id ' => ' xxxx ' ,
' app_private_key ' => ' xxxxx ' ,
' alipay_public_key ' => ' xxxxx ' ,
];
// 创建实例, 传入要使用的 Gateway
$ cashier = new Cashier ( ' alipay_web ' , $ config );
결제 생성
<?php
// 组装 ChargeRequestForm
$ data = [
' order_id ' => ' 151627101400000071 ' ,
' subject ' => ' testing ' ,
' amount ' => 1 ,
' currency ' => ' CNY ' ,
' description ' => ' testing description ' ,
' return_url ' => ' https://www.baidu.com ' ,
' expired_at ' => ' 2018-01-23 19:00:00 ' ,
];
$ form = $ cashier -> charge ( $ data );
// 以 laravel 为例
return redirect ( $ form -> get ( ' charge_url ' ));
결제 확인
<?php
$ form = $ cashier -> query ([
' order_id ' => ' 151627101400000071 ' ,
]);
var_dump ( ' paid ' === $ form -> get ( ' status ' ));
알림을 받다
<?php
$ form = $ cashier -> notify ( ' charge ' );
var_dump ( ' paid ' === $ form -> get ( ' status ' ));
var_dump ( $ form -> get ( ' trade_sn ' )); // 取得第三方交易号
환불하다
<?php
$ form = $ cashier -> refund ([
' order_id ' => ' 151627101400000071 ' ,
' refund_id ' => ' 3151627101400000071 ' ,
' total_amount ' => 1 ,
' refund_amount ' => 1 ,
]);
필드 이름 | 필요한가요? | 필드 설명 | 주목 |
---|---|---|---|
주문_ID | 예 | 주문 번호 | |
주제 | 예 | 주문 제목 | |
양 | 예 | 주문금액 | 일부 결제 채널에는 금액 상한선이 있습니다. |
통화 | 예 | 통화 주문 | 결제 채널에 주의하세요 |
설명 | 예 | 주문 설명 | 결제 채널의 길이 제한은 다양합니다. |
user_ip | 아니요 | 사용자 IP | |
return_url | 아니요 | 콜백 주소 | 웹형 결제채널을 반드시 입력해야 합니다. |
show_url | 아니요 | 표시 주소 | |
몸 | 아니요 | 주문 세부정보 | 이 매개변수를 삭제해야 합니다 |
만료_시간 | 아니요 | 만료 시간 | 유닉스 타임스탬프 |
생성_시간 | 아니요 | 생성 시간 | 유닉스 타임스탬프, 이게 필요하다는 게 믿기지 않나요?? |
다른 것들은 아직 추가되어야 합니다...
Q : 다른 SDK에 비해 어떤 장점이 있나요?
A : SDK가 아무리 훌륭하고 사용하기 쉽다고 해도 대부분은 타사 매개변수 이름에 따라 매개변수를 전달해야 합니다. 그런 다음 설명서를 읽고 많은 처리를 수행해야 합니다. 내가 원하는 것은 데이터베이스에서 주문을 가져온 후 한 번 처리하여 여러 결제에 액세스할 수 있다는 것입니다.
Q : 제3자 결제서류는 굳이 열람할 필요가 없나요?
A : 아니요, 여전히 살펴봐야 하며 구성 요소(예: WeChat 공식 계정)의 일부 결제는 일부 특수 매개변수를 전달해야 합니다. 구성 요소는 귀찮은 통화 문제를 해결하는 데 도움이 됩니다.
MIT