어떻게 안 드 로 이 드 앱 에서 알 리 페 이와 위 챗 결제 기능 을 통합 합 니까?

머리말
본 고 는 안 드 로 이 드 앱 에 알 리 페 이와 위 챗 결제 기능 을 통합 하 는 방법 을 소개 한다.글 에서 실 현 될 절 차 는 한 걸음 한 걸음 상세 하 게 소개 되 고 똑 같이 이 문 제 를 겪 은 친구 들 에 게 좋 은 참고 가 될 것 이 라 고 믿는다.다음은 더 이상 말 하지 않 겠 다.상세 한 소 개 를 살 펴 보 자.
통합 알 리 페 이 지급
지금 App 에 통합 알 리 페 이 가 이렇게 간단 할 줄 은 몰 랐 습 니 다.저 는 오랫동안 괴 롭 혔 습 니 다.

자,시작 합 니 다.알 리 페 이의 복잡 한 신청 같은 일 을 완성 했다 고 가정 하고 개발 에 들 어 갔습니다.
우선 공식 데모 다운로드:
앱 결제 클 라 이언 트 데모&SDK
개발 자원 가 져 오기
압축 을 풀 고 안에 있 는 jar 가방 을 꺼 내 서 프로젝트 의 lib 디 렉 터 리 에 넣 으 세 요.그림 과 같 습 니 다.

그리고 프로젝트 에 들 어 가 는"Project Structure"는 app module 에서"File dependency"를 선택 하여 libs 디 렉 터 리 에 있 는 alipaySDK-xxxxxx.jar 를 가 져 오 거나 app module 에 있 는 build.gradle 에서 수 동 으로 의존 도 를 추가 합 니 다.다음 코드 는 다음 과 같 습 니 다.

......
compile files('libs/alipaySdk-20170725.jar')
......
Android Manifest 파일 수정
복사 해서 넣 으 면 돼 요.

<activity
 android:name="com.alipay.sdk.app.H5PayActivity"
 android:configChanges="orientation|keyboardHidden|navigation|screenSize"
 android:exported="false"
 android:screenOrientation="behind"
 android:windowSoftInputMode="adjustResize|stateHidden" >
</activity>
 <activity
 android:name="com.alipay.sdk.app.H5AuthActivity"
 android:configChanges="orientation|keyboardHidden|navigation"
 android:exported="false"
 android:screenOrientation="behind"
 android:windowSoftInputMode="adjustResize|stateHidden" >
</activity>
성명 권한

<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" />
자,준비 작업 은 거의 끝 났 습 니 다.
지불 인터페이스 호출
여기 데모 참고 해 주세요.
결제 패키지 의 Demo 는 로 컬 암호 화 방식 을 주 고 이런 방법 을 추천 하지 않 기 때문에 우 리 는 그 중의 일부 코드 만 사용 하면 된다.
우선,PayResult.자바 같은 종 류 를 프로젝트 에 복사 합 니 다.코드 는 다음 과 같 습 니 다:

public class PayResult {
 private String resultStatus;
 private String result;
 private String memo;
 public PayResult(Map<String, String> rawResult) {
  if (rawResult == null) {
   return;
  }
  for (String key : rawResult.keySet()) {
   if (TextUtils.equals(key, "resultStatus")) {
    resultStatus = rawResult.get(key);
   } else if (TextUtils.equals(key, "result")) {
    result = rawResult.get(key);
   } else if (TextUtils.equals(key, "memo")) {
    memo = rawResult.get(key);
   }
  }
 }
 @Override
 public String toString() {
  return "resultStatus={" + resultStatus + "};memo={" + memo
    + "};result={" + result + "}";
 }
 /**
  * @return the resultStatus
  */
 public String getResultStatus() {
  return resultStatus;
 }
 /**
  * @return the memo
  */
 public String getMemo() {
  return memo;
 }
 /**
  * @return the result
  */
 public String getResult() {
  return result;
 }
}
그리고 지불 인 터 페 이 스 를 바 꿉 니 다.PayTask 대상 은 주로 업 체 에 주문 지불,조회 기능 을 제공 하고 현재 개발 패키지 버 전 번 호 를 얻 습 니 다.PayTask 결제 대상 호출 결제 가 져 오기(결제 행 위 는 독립 된 비 ui 스 레 드 에서 실행 해 야 합 니 다),

private static final int SDK_PAY_FLAG = 1;
//     
final String orderInfo = info; 
Runnable payRunnable = new Runnable() {
@Override
 public void run() {
  PayTask alipay = new PayTask(PayDemoActivity.this);
  Map<String, String> result = alipay.payV2(orderInfo, true);
  Message msg = new Message();
  msg.what = SDK_PAY_FLAG;
  msg.obj = result;
  mHandler.sendMessage(msg);
 }
};
Thread payThread = new Thread(payRunnable);
payThread.start();
orderinfo 이 변 수 를 주의 하 십시오.이 값 은 배경 에 요청 한 값 입 니 다.
여기 서 주의해 야 할 것 은 쓸 때 잘 보 세 요앱 결제 요청 파라미터 설명이 문 서 를 잘 보 세 요.
그리고 지불 결과 의 획득 과 처리.

@SuppressLint("HandlerLeak")
 private Handler mHandler = new Handler() {
  @SuppressWarnings("unused")
  public void handleMessage(Message msg) {
   switch (msg.what) {
   case SDK_PAY_FLAG: {
    @SuppressWarnings("unchecked")
    PayResult payResult = new PayResult((Map<String, String>) msg.obj);
    /**
           ,               。      ,          。
     */
    String resultInfo = payResult.getResult();//            
    String resultStatus = payResult.getResultStatus();
    //   resultStatus  9000       
    if (TextUtils.equals(resultStatus, "9000")) {
     //             ,            。
     Toast.makeText(PayDemoActivity.this, "    ", Toast.LENGTH_SHORT).show();
    } else {
     //            ,            。
     Toast.makeText(PayDemoActivity.this, "    ", Toast.LENGTH_SHORT).show();
    }
    break;
   }
   default:
    break;
   }
  };
 };
그리고 됐어.
끝나다
통합 위 챗 결제
위 챗 결 제 는 그래도 하기 쉽다.바로 먼저 등록 해 야 할 등록 이다.신청 해 야 할 신청 은 본 고의 중점 이 아니다.
위 챗 에 결제 리 셋 문제 가 있 기 때문에 제 방법 은 프로젝트 의 x.x.x.wxapi 패키지 경로 에서 WXPayEntry Activity 류 를 실현 하 는 것 입 니 다.(패키지 이름 이나 클래스 이름 은 반드시 일치 해 야 합 니 다.그렇지 않 으 면 리 셋 할 수 없습니다.)코드 는 다음 과 같 습 니 다:

public class WXPayEntryActivity extends Activity implements IWXAPIEventHandler{
 private static final String TAG = "WXPayEntryActivity";
 private IWXAPI api;
 @Override
 public void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  setContentView(R.layout.pay_result);
  
  api = WXAPIFactory.createWXAPI(this, Constants.APP_ID);
  api.handleIntent(getIntent(), this);
  /*
  *               ,
  *          ,        。
  **/
 }
 @Override
 protected void onNewIntent(Intent intent) {
  super.onNewIntent(intent);
  setIntent(intent);
  api.handleIntent(intent, this);
 }
 @Override
 public void onReq(BaseReq req) {
 }
 @Override
 public void onResp(BaseResp resp) {
  Log.d(TAG, "onPayFinish, errCode = " + resp.errCode);
  switch(resp.errCode){
   case 0:
   //    ,        
   break;
   case -1:
   //     :    、   APPID、    APPID   、   APPID       、     。
   break;
   case -2:
   //    .    。    :      ,    ,  APP。
   break;
   default:
   break
  }
 }
}
후기
알 리 페 이 결제 에 접속 한 것 은 이번 이 처음 이 었 다.처음에는 한 라 이브 러 리 를 참조 해 포장 을 했 는데 괜 한 행동 을 한 것 같 았 고 성공 하지 못 했 으 며 백 스테이지 인 의 량 과 마그네슘 을 뜯 어 내 는 느 린 양귀비 데 모 를 만 들 었 다.
참고:
  • 알 리 페 이 결제 문서
  • 위 챗 결제 앱 개발 절차
  • 총결산
    이상 은 이 글 의 전체 내용 입 니 다.본 논문 의 내용 이 여러분 의 학습 이나 업무 에 어느 정도 참고 학습 가치 가 있 기 를 바 랍 니 다.궁금 한 점 이 있 으 시 면 댓 글 을 남 겨 주 셔 서 저희 에 대한 지지 에 감 사 드 립 니 다.

    좋은 웹페이지 즐겨찾기