Android 제3자 위 챗 결제 강좌
7889 단어 Android제3자 지불위 챗 페 이 먼 트
1.먼저 위 챗 개발 플랫폼 에 계 정 을 등록 하고 앱 을 새로 추가 하 며 정확 한 가방 이름 을 작성 해 야 합 니 다.정확 한 서명(MD5 에 있 는 일련의 문자 사칭 제거,모든 소문 자)은 물론 생 성 된 AppID 와 AppSecret 도 모두 유용 합 니 다!마지막 으로 300 대양 을 써 서 지불 기능 을 개통 해 야 합 니 다!
2.위 챗 결제 절차 분석
3.인터페이스 인 터 랙 션 프로 세 스
위 에서 다 보 았 으 니,다음은 코드 를 쓰 는 것 이다.
4.여 기 는 wxapi 라 는 가방 이름 이 있어 야 하고 WXPayEntry Activity 라 는 이름 이 있어 야 합 니 다.
5.AndroidManifest.xml 에 관련 정 보 를 설정 합 니 다.
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>
<uses-permission android:name="android.permission.READ_PHONE_STATE"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<!-- -->
<activity
android:name=".ui.activity.MainActivity"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<data android:scheme="wx487898a262d23df3" />
</intent-filter>
</activity>
<activity
android:name=".wxapi.WXPayEntryActivity"
android:exported="true"
android:label="@string/title_activity_wxpayentry"
android:launchMode="singleTop" />
<receiver
android:name=".wxpay.AppRegister"
android:permission="com.tencent.mm.plugin.permission.SEND" >
<intent-filter>
<action android:name="com.tencent.mm.plugin.openapi.Intent.ACTION_REFRESH_WXAPP" />
</intent-filter>
</receiver>
/**
* ,
* : fee, id, title
* , :
* appid,noncestr,package,partnerid,prepayid,
* timestamp,sign
*
*/
StringBuffer sb = new StringBuffer();
WeixinPay wpay;
private AlertDialog mDialog;
private AlertDialog.Builder builder;
public void weixinPay() {
// WXAPIFactory , IWXAPI
api = WXAPIFactory.createWXAPI(this, Constants.APP_ID);
// app
api.registerApp(Constants.APP_ID);
//
Params p = new Params();
p.put("fee",fee);
p.put("spbill_create_ip", NetWorkUtils.getLocalIpAddress(this));
String value = " " + title;
try {
String title = new String(value.getBytes("UTF-8"));
p.put("body", title);
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
p.put("userId", O.getUser().getId());
p.post(C.URL.WEIXIN_PAY, new ReHandler() {
@Override
public void onSuccess(NetEntity entity) {
wpay = entity.toObj(WeixinPay.class);
PayReq req = new PayReq();
req.appId = wpay.getAppid();// appId
req.packageValue = wpay.getPackageValue();//
req.extData = "app data"; // optional
req.timeStamp = wpay.getTimeStamp();//
req.partnerId = wpay.getPartnerId();// "
req.prepayId = wpay.getPrepayId();//
req.nonceStr = wpay.getNonceStr();//
req.sign = wpay.getSign();//
//
List<NameValuePair> signParams = new LinkedList<NameValuePair>();
signParams.add(new BasicNameValuePair("appid", req.appId));
signParams.add(new BasicNameValuePair("noncestr", req.nonceStr));
signParams.add(new BasicNameValuePair("package",req.packageValue));
signParams.add(new BasicNameValuePair("partnerid",req.partnerId));
signParams.add(new BasicNameValuePair("prepayid", req.prepayId));
signParams.add(new BasicNameValuePair("timestamp",req.timeStamp));
req.sign = genAppSign(signParams);
//
if(api.isWXAppInstalled()&&api.isWXAppSupportAPI()){
api.sendReq(req);
}else{
builder = new AlertDialog.Builder(WXPayEntryActivity.this);
builder.setNeutralButton(" ",
new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
mDialog.dismiss();
}
}).setTitle(" ").setMessage(" ");
mDialog = builder.create();
mDialog.show();
}
}
@Override
public void onStart() {
}
@Override
public void onFailure(String message) {
}
});
}
private String genAppSign(List<NameValuePair> params) {
StringBuilder sb = new StringBuilder();
for (int i = 0; i < params.size(); i++) {
sb.append(params.get(i).getName());
sb.append('=');
sb.append(params.get(i).getValue());
sb.append('&');
}
sb.append("key=");
sb.append(Constants.API_KEY);
this.sb.append("sign str
" + sb.toString() + "
");
String appSign = MD5.getMessageDigest(sb.toString().getBytes());
Log.e("orion", appSign);
return appSign;
}
6.WXPayEntry Activity 류 에서 성공 한 후 리 셋 방법 onResp()
@Override
public void onResp(BaseResp resp) {
Log.d(TAG, "onPayFinish, errCode = " + resp.errCode);
if (resp.getType() == ConstantsAPI.COMMAND_PAY_BY_WX) {
if(resp.errCode==-2){
Toast.makeText(this," !", Toast.LENGTH_LONG).show();
}
if(resp.errCode==-1){
Toast.makeText(this," !", Toast.LENGTH_LONG).show();
}
if(resp.errCode==0){
queryOrder();//
}
}
마지막 으로 다 한 후에 반드시 서명 하고 포장 해 야 합 니 다.이것 은 위 챗 의 독점 비법 입 니 다.잊 어 버 리 면 튀 어 나 옵 니 다.-1,하하.마지막 으로 결제 반환-1 의 상황 을 정리 하 겠 습 니 다.
1.위 챗 백 엔 드 서명,가방 이름 확인
2.프로젝트 서명 여부
3.이전에 테스트 를 한 적 이 있 으 면-1 의 경우 위 챗 의 데 이 터 를 지우 고 위 챗 에 다시 로그 인해 야 합 니 다.
4.백 스테이지 서버 가 요구 에 따라 첫 번 째 서명,두 번 째 서명 을 하 는 지,두 번 째 서명 이 틀 리 면 저 희 는 다시 한 번 서명 하 겠 습 니 다.제 코드 에 적 혀 있 습 니 다.
이상 은 위 챗 결제 의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주시 기 바 랍 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Bitrise에서 배포 어플리케이션 설정 테스트하기이 글은 Bitrise 광고 달력의 23일째 글입니다. 자체 또는 당사 등에서 Bitrise 구축 서비스를 사용합니다. 그나저나 며칠 전 Bitrise User Group Meetup #3에서 아래 슬라이드를 발표했...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.