springboot 통합 위 챗 결제 sdk 프로 세 스 분석
5599 단어 springboot통합작은 편지지불 하 다.sdk
이전에 한 몇 개의 위 챗 애플 릿 프로젝트 는 대부분 고객 들 이 위 챗 애플 릿 전단 지 에서 현금 을 인출 해 야 하 는 수요 가 있다.현금 인출 기능 의 실현 은 자연히 기업 지불 인 터 페 이 스 를 사용 하지만 이 기능 의 개통 은 비교적 번 거 로 우 므 로 만족 시 켜 야 한다세 가지 조건
이전에 몇 개의 위 챗 결제 인 터 페 이 스 를 실 현 했 지만 모두 자신의 코드 입 니 다.인터넷 에서 맞 춤 법 을 찾 아 보 니 불편 합 니 다~ ~그래서 위 챗 이 공식 적 으로 제공 한 지불 을 찾 았 다sdk여 기 는 자바 버 전,springboot 통합 자바 를 사용 합 니 다.
sdk 다운로드,프로젝트 도입
공식 적 으로 제공 하 는 sdk 를 직접 다운로드 한 다음 에 몇 개의 자바 류 를 프로젝트 에 복사 할 수도 있 고 Maven 의존 도 를 직접 도입 할 수도 있 습 니 다.여 기 는 자바 류 를 제 프로젝트 에 직접 복사 하 는 것 입 니 다.
<!-- https://mvnrepository.com/artifact/com.github.wxpay/WXPay-SDK-Java -->
<dependency>
<groupId>com.github.wxpay</groupId>
<artifactId>WXPay-SDK-Java</artifactId>
<version>0.0.4</version>
</dependency>
그림 과 같이 sdk 프로젝트 를 열 면 다음 과 같은 파일 이 있 습 니 다.config 파일 설정
그것 의 readme 파일 을 통 해 몇 개의 demo 를 볼 수 있 습 니 다.하지만 우선 관련 정 보 를 설정 해 야 합 니 다.자바 클래스 를 새로 만 들 면 원래 의 설정 클래스 를 계승 합 니 다.
package com.github.wxpay.sdk;
import java.io.InputStream;
/**
* @author Ean
* @date 2019/7/2
*/
public class MyConfig extends WXPayConfig {
/**
* App ID
*
* @return App ID
*/
@Override
String getAppID() {
return "wxdb70c7c6b******";
}
/**
* Mch ID
*
* @return Mch ID
*/
@Override
String getMchID() {
return "1522050000";
}
/**
* API
*
* @return API
*/
@Override
String getKey() {
return "xxxxxxxxxxxxxxxx";
}
/**
*
* resources
* @return
*/
@Override
InputStream getCertStream() {
InputStream certStream = Thread.currentThread().getContextClassLoader().getResourceAsStream("apiclient_cert.p12");
return certStream;
}
/**
* WXPayDomain,
*
* @return
*/
@Override
public IWXPayDomain getWXPayDomain() {
IWXPayDomain iwxPayDomain = new IWXPayDomain() {
public void report(String domain, long elapsedTimeMillis, Exception ex) {
}
public DomainInfo getDomain(WXPayConfig config) {
return new IWXPayDomain.DomainInfo(WXPayConstants.DOMAIN_API, true);
}
};
return iwxPayDomain;
}
}
현금 인출 인터페이스 개발현금 인출 인 터 페 이 스 를 써 서 현금 인출 과 관련 된 인 자 를 입력 하 십시오.
/**
*@
*@ [param]
*@ Eangaie
*@ 2019/7/2
*/
@PostMapping("despot")
public Result despot(@RequestBody Map<String,Object> param) throws Exception {
MyConfig config = new MyConfig();
WXPay wxpay = new WXPay(config,1);
SortedMap<String, String> sendData;
sendData=getDespData(param);
sendData.put("sign", WXPayUtil.generateSignature(sendData,key , WXPayConstants.SignType.MD5));
Map<String,String> resData=wxpay.despot(sendData,config.getHttpConnectTimeoutMs(),config.getHttpReadTimeoutMs());
return ResultUtil.success(resData);
}
private SortedMap<String, String> getDespData(Map<String, Object> param) {
SortedMap<String, String> params = new TreeMap<String, String>();
String nonce_str=commonUtil.gen32RandomString();
String partner_trade_no=commonUtil.createNo();
String openid= String.valueOf(param.get("openid"));
String check_name="NO_CHECK";
String amount= String.valueOf(param.get("amount"));
String desc=" ";
String spbill_create_ip= String.valueOf(param.get("spbill_create_ip"));
params.put("mch_appid",mch_appid);
params.put("mchid",mchid);
params.put("nonce_str",nonce_str);
params.put("partner_trade_no",partner_trade_no);
params.put("openid",openid);
params.put("check_name",check_name);
params.put("amount", amount);
params.put("desc", desc);
params.put("spbill_create_ip", spbill_create_ip);
return params;
}
여기 있 는 일부 변수,예 를 들 어 상점 id,appid 등 은 spring 스 캔 application 설정 파일 을 통 해 자동 으로 주입 되 고 인터페이스 파 라 메 터 는 주로 openid 로 전달 되 며 현금 을 인출 합 니 다.사실 이 spbillcreate_ip 필드 도 고정 할 수 있 습 니 다.처음에는 개발 이 IP 접근 을 허용 하지 않 는 문제 에 부 딪 혀 왔 다가 결국 발견 됐다.상점 번호 설정 냄비 입 니 다.상점 번 호 는 IP 를 이곳 에 접근 할 수 있 도록 설정 을 닫 는 것 을 기억 하 세 요!아니면 계속 인터페이스 에 접근 할 수 없어 요.
현금 인출 은 성공 적 으로 되 돌 아 왔 지만 프로그램 도 500 을 보고 합 니 다.processResponseXml 이 함수 에 검사 반환 값 이 있 기 때 문 입 니 다.하지만 여기 서 는 사용 할 수 없습니다.코드 를 주석 할 수 있 습 니 다.
else if (return_code.equals(WXPayConstants.SUCCESS)) {
return respData;
// if (this.isResponseSignatureValid(respData)) {
// return respData;
// }
// else {
// throw new Exception(String.format("Invalid sign value in XML: %s", xmlStr));
// }
}
이로써 현금 인출 인터페이스 가 완성 되 었 다.이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Kotlin Springboot -- 파트 14 사용 사례 REST로 전환하여 POST로 JSON으로 전환前回 前回 前回 記事 の は は で で で で で で を 使っ 使っ 使っ て て て て て リクエスト を を 受け取り 、 reqeustbody で 、 その リクエスト の ボディ ボディ を を 受け取り 、 関数 内部 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.