首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 綜合教學

硅谷商城項目實戰(七):支付寶移動支付 SDK 接入全流程

     編輯:Java 綜合教學

1. 支付寶商家入駐與簽約

  1. 訪問 支付寶開放平台
  2. 企業認證:營業執照、法人身份證、對公賬戶等資質
  3. 創建應用,獲取 AppID、配置密鑰(RSA2)、設置支付回調地址
  4. 簽約「手機網站支付」「APP 支付」等產品

2. 客戶端 SDK 集成

依賴引入

// build.gradle
dependencies {
    implementation 'com.alipay.sdk:alipay-sdk-android:15.8.0' // 版本以官方最新為準
    implementation 'com.android.support:appcompat-v7:28.0.0'
}

支付調用核心代碼


public class PayUtil {
    private static final String APP_ID = "你的AppID";
    private static final String RSA2_PRIVATE = "你的應用私鑰";
    private static final String ALIPAY_PUBLIC = "支付寶公鑰";
    private static final String NOTIFY_URL = "你的服務端異步通知地址";
    
    public static void pay(Activity activity, String subject, String body, String orderNo, String amount) {
        // 1. 構建訂單信息
        String orderInfo = buildOrderInfo(subject, body, orderNo, amount);
        // 2. 簽名
        String sign = signOrderInfo(orderInfo, RSA2_PRIVATE);
        // 3. 最終支付串
        String finalOrderInfo = orderInfo + "&sign=" + URLEncoder.encode(sign, "UTF-8") + "&sign_type=RSA2";
        
        // 4. 啟動支付
        Runnable payRunnable = () -> {
            PayTask alipay = new PayTask(activity);
            Map<String, String> result = alipay.payV2(finalOrderInfo, true);
            Message msg = new Message();
            msg.what = 1;
            msg.obj = result;
            handler.sendMessage(msg);
        };
        new Thread(payRunnable).start();
    }
    
    private static String buildOrderInfo(...) { ... }
    private static String signOrderInfo(...) { ... }
    
    private static Handler handler = new Handler(Looper.getMainLooper()) {
        @Override public void handleMessage(Message msg) {
            if (msg.what == 1) {
                @SuppressWarnings("unchecked")
                Map<String, String> result = (Map<String, String>) msg.obj;
                // resultStatus: 9000 成功、8000 正在處理、4000 失敗、6001 用戶取消
                String status = result.get("resultStatus");
                // 業務邏輯處理...
            }
        }
    };
}

3. 服務端簽名與驗簽(安全關鍵)

  • 私鑰簽名:服務端生成訂單字符串,用應用私鑰簽名,返回給客戶端
  • 公鑰驗簽:支付寶回調時,用支付寶公鑰驗證簽名,防篡改
  • 推薦使用支付寶官方 Java SDK:com.alipay.sdk:alipay-sdk-java

4. 常見坑位避雷

5. 參考資源

支付涉及資金安全,務必嚴格遵循「服務端簽名、客戶端調起、異步通知驗簽、同步跳轉僅展示」的安全原則,上線前完成沙箱環境全流程測試。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved
問題原因解決
ALI64 錯誤簽名驗證失敗檢查私鑰/公鑰配置、字符集 UTF-8、參數排序
支付喚不起未安裝支付寶/版本過低集成 H5 支付降級方案
回調未收到notify_url 不可達/未配置 HTTPS配置公網可訪問的 HTTPS 回調地址
金額精度float/double 精度丟失用 BigDecimal,單位分(整數)