Android支付宝支払詳細
6716 ワード
微信支払参考:android微信支払詳細とピット公式ドキュメント:App支払Android統合プロセス
長い間支払いを書いたことがありますが、ずっとまとめていません.もう一度温めて、まとめてください.
gradle構成:
app moduleの下のbuild.gradleでは、次のコードに示すように依存を手動で追加します.
マニフェストの変更
ビジネスアプリケーションのAndroidManifest.xmlファイルに宣言を追加します.
および権限宣言:
混同ルールの追加
商家応用工事のproguard-project.txtには、次のルールが追加されます.
これで、開発パッケージ開発リソースのインポートが完了しました.
支払インタフェース呼び出し
新しいスレッドで支払インタフェースを呼び出す必要があります.(alipay_demo実装参照)
PayTaskオブジェクトは、主に顧客に受注支払い、照会機能を提供し、現在の開発パッケージのバージョン番号を取得します.PayTask支払オブジェクトを取得して支払を呼び出します(支払動作は独立した非uiスレッドで実行する必要があります).コードの例:
パラメータ名
パラメータの説明
String orderInfo
app支払要求パラメータ文字列は、主に商家の受注情報、key=value形式、&接続を含む.
boolean isShowPayLoading
ユーザーは商店appの内部で支払いをクリックして、財布が喚起される前の遷移としてloadingを必要とするかどうか、この値をtrueに設定すると、payインタフェースを呼び出すときにH 5支払いページを喚起したり、外部の財布支払いページloadingを喚起したりするまでloadingが消えます.(この値をtrueに設定することをお勧めします.支払いを開始するページへの移行プロセスを最適化します.)
orderStrの例は次のとおりです.パラメータの説明は「要求パラメータの説明」を参照してください.orderStrの取得はサービス側から取得する必要があります.
戻り値:このメソッドで呼び出された戻り結果、パラメータの説明は「クライアント同期戻りパラメータの説明」を参照してください.
支払結果の取得と処理
payメソッドの支払いを呼び出すと、2つの方法で支払い結果が得られます.
同期リターンクライアントは、現在支払を呼び出しているActivityのHandlerオブジェクトを介して、そのコールバック関数によって支払結果を取得します.(alipay_demo実装を参照可能)コードの例:
非同期通知業者はhttpプロトコルのインタフェースを提供する必要があり、支払いを要求するパラメータに含まれ、そのkeyはnotifyに対応する.url.アリペイサーバは支払いが完了すると、POST方式でnotifyを呼び出す.urlはデータを転送します.
微信支払い&支付宝支払い
どのように2つを1つのページにカプセル化して使用するか、支付宝はHandlerコールバック(任意の場所に書くことができます).微信はWXPayEntryActivityコールバック、(位置固定)
方式1、アリペイのコールバックは任意に書くことができる以上、WXPayEntryActivityに直接書くことで、1ページ方式2、微信のパッケージのコールバックインタフェースを実現し、インタフェースを通じてデータを返信し、Android支払いパッケージ(微信+アリペイ)を参照することができる.
長い間支払いを書いたことがありますが、ずっとまとめていません.もう一度温めて、まとめてください.
gradle構成:
app moduleの下のbuild.gradleでは、次のコードに示すように依存を手動で追加します.
dependencies {
......
compile files('libs/alipaySdk-20170922.jar')
......
}
マニフェストの変更
ビジネスアプリケーションのAndroidManifest.xmlファイルに宣言を追加します.
および権限宣言:
混同ルールの追加
商家応用工事のproguard-project.txtには、次のルールが追加されます.
-keep class com.alipay.android.app.IAlixPay{*;}
-keep class com.alipay.android.app.IAlixPay$Stub{*;}
-keep class com.alipay.android.app.IRemoteServiceCallback{*;}
-keep class com.alipay.android.app.IRemoteServiceCallback$Stub{*;}
-keep class com.alipay.sdk.app.PayTask{ public *;}
-keep class com.alipay.sdk.app.AuthTask{ public *;}
-keep class com.alipay.sdk.app.H5PayCallback {
;
;
}
-keep class com.alipay.android.phone.mrpc.core.** { *; }
-keep class com.alipay.apmobilesecuritysdk.** { *; }
-keep class com.alipay.mobile.framework.service.annotation.** { *; }
-keep class com.alipay.mobilesecuritysdk.face.** { *; }
-keep class com.alipay.tscenter.biz.rpc.** { *; }
-keep class org.json.alipay.** { *; }
-keep class com.alipay.tscenter.** { *; }
-keep class com.ta.utdid2.** { *;}
-keep class com.ut.device.** { *;}
これで、開発パッケージ開発リソースのインポートが完了しました.
支払インタフェース呼び出し
新しいスレッドで支払インタフェースを呼び出す必要があります.(alipay_demo実装参照)
PayTaskオブジェクトは、主に顧客に受注支払い、照会機能を提供し、現在の開発パッケージのバージョン番号を取得します.PayTask支払オブジェクトを取得して支払を呼び出します(支払動作は独立した非uiスレッドで実行する必要があります).コードの例:
// ( )
final String orderInfo = "app_id=2015052600090779&biz_content=%7B%22timeout_express%22%3A%2230m%22%2C%22seller_id%22%3A%22%22%2C%22product_code%22%3A%22QUICK_MSECURITY_PAY%22%2C%22total_amount%22%3A%220.02%22%2C%22subject%22%3A%221%22%2C%22body%22%3A%22%E6%88%91%E6%98%AF%E6%B5%8B%E8%AF%95%E6%95%B0%E6%8D%AE%22%2C%22out_trade_no%22%3A%22314VYGIAGG7ZOYY%22%7D&charset=utf-8&method=alipay.trade.app.pay&sign_type=RSA2×tamp=2016-08-15%2012%3A12%3A15&version=1.0&sign=MsbylYkCzlfYLy9PeRwUUIg9nZPeN9SfXPNavUCroGKR5Kqvx0nEnd3eRmKxJuthNUx4ERCXe552EV9PfwexqW%2B1wbKOdYtDIb4%2B7PL3Pc94RZL0zKaWcaY3tSL89%2FuAVUsQuFqEJdhIukuKygrXucvejOUgTCfoUdwTi7z%2BZzQ%3D"; //
Runnable payRunnable = new Runnable() {
@Override
public void run() {
PayTask alipay = new PayTask(MainActivity.this);
Map 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();
パラメータ名
パラメータの説明
String orderInfo
app支払要求パラメータ文字列は、主に商家の受注情報、key=value形式、&接続を含む.
boolean isShowPayLoading
ユーザーは商店appの内部で支払いをクリックして、財布が喚起される前の遷移としてloadingを必要とするかどうか、この値をtrueに設定すると、payインタフェースを呼び出すときにH 5支払いページを喚起したり、外部の財布支払いページloadingを喚起したりするまでloadingが消えます.(この値をtrueに設定することをお勧めします.支払いを開始するページへの移行プロセスを最適化します.)
orderStrの例は次のとおりです.パラメータの説明は「要求パラメータの説明」を参照してください.orderStrの取得はサービス側から取得する必要があります.
app_id=2015052600090779&biz_content=%7B%22timeout_express%22%3A%2230m%22%2C%22seller_id%22%3A%22%22%2C%22product_code%22%3A%22QUICK_MSECURITY_PAY%22%2C%22total_amount%22%3A%220.02%22%2C%22subject%22%3A%221%22%2C%22body%22%3A%22%E6%88%91%E6%98%AF%E6%B5%8B%E8%AF%95%E6%95%B0%E6%8D%AE%22%2C%22out_trade_no%22%3A%22314VYGIAGG7ZOYY%22%7D&charset=utf-8&method=alipay.trade.app.pay&sign_type=RSA2×tamp=2016-08-15%2012%3A12%3A15&version=1.0&sign=MsbylYkCzlfYLy9PeRwUUIg9nZPeN9SfXPNavUCroGKR5Kqvx0nEnd3eRmKxJuthNUx4ERCXe552EV9PfwexqW%2B1wbKOdYtDIb4%2B7PL3Pc94RZL0zKaWcaY3tSL89%2FuAVUsQuFqEJdhIukuKygrXucvejOUgTCfoUdwTi7z%2BZzQ%3D
戻り値:このメソッドで呼び出された戻り結果、パラメータの説明は「クライアント同期戻りパラメータの説明」を参照してください.
支払結果の取得と処理
payメソッドの支払いを呼び出すと、2つの方法で支払い結果が得られます.
同期リターンクライアントは、現在支払を呼び出しているActivityのHandlerオブジェクトを介して、そのコールバック関数によって支払結果を取得します.(alipay_demo実装を参照可能)コードの例:
private Handler mHandler = new Handler() {
public void handleMessage(Message msg) {
switch (msg.what) {
case SDK_PAY_FLAG: {
PayResult payResult = new PayResult((Map) msg.obj);
/**
, 。 , 。
*/
String resultInfo = payResult.getResult();//
String resultStatus = payResult.getResultStatus();
// resultStatus 9000
if (TextUtils.equals(resultStatus, "9000")) {
// , 。
Toast.makeText(MainActivity.this, " ", Toast.LENGTH_SHORT).show();
} else {
// , 。
Toast.makeText(MainActivity.this, " ", Toast.LENGTH_SHORT).show();
}
break;
}
}
}
;
};
非同期通知業者はhttpプロトコルのインタフェースを提供する必要があり、支払いを要求するパラメータに含まれ、そのkeyはnotifyに対応する.url.アリペイサーバは支払いが完了すると、POST方式でnotifyを呼び出す.urlはデータを転送します.
微信支払い&支付宝支払い
どのように2つを1つのページにカプセル化して使用するか、支付宝はHandlerコールバック(任意の場所に書くことができます).微信はWXPayEntryActivityコールバック、(位置固定)
方式1、アリペイのコールバックは任意に書くことができる以上、WXPayEntryActivityに直接書くことで、1ページ方式2、微信のパッケージのコールバックインタフェースを実現し、インタフェースを通じてデータを返信し、Android支払いパッケージ(微信+アリペイ)を参照することができる.