iOS Alipay支払い開発(更新バージョン)

1はじめに

この記事は以前のプロジェクトの要約です。関連する支払いSDKの反復により、元のテキストはニーズを満たしていません。参考のために次の更新が行われます。さらに、一般的な問題の要約が追加されました。

本日は主にAlipay決済をご紹介しますが、その他の決済紹介も早急に更新します。

支払いをする前に、インターネットで情報を検索しましたが、ほとんどの人が、支払いアクセスピットが多すぎて、WeChatピットが最も多く、銀聯のドキュメントが複雑すぎると言っていました。
実際、より多くのアクセスがある場合、それらのルーチンは回避できます。
オンライン体験のほとんどは比較的古く、比較的新しいもので使用できる記事は多くありません(しかし、私にとっても非常に役立つ良い記事がまだあります)。あなたを助けるために詳細な紹介をします。ピットを避けてください。

ソースコードの取得

公式アカウントWangluoDevelopment」をフォローし、「AlipayPay」と返信して受け取ります

2.インタラクティブなプロセス

最初に開発ドキュメントを注意深く読むことをお勧めします。必ず読んでください。最初は正直に読んでいませんでした。その結果、多くのピットに遭遇し、多くの時間を無駄にしました。したがって、それをお勧めします。特にインタラクティブプロセスのこの部分を注意深く読んでください。

2.1機能プロセス

2.2データの相互作用

WeChat Payと比較すると、Alipay支払いの機能プロセスは非常に単純です。上の2つの写真に示すように、アプリ(つまり、マーチャントクライアント)には3つのステップしかありません。

  • 注文を生成する
  • Alipayインターフェースを呼び出して注文を送信します
  • 注文の支払い結果を返し、処理する

3. AlipaySDKをダウンロードします

Alipayには多くのビジネスがあります。必要な支払いSDKを見つけるのに多大な労力がかかります。これが最新のSDKアドレスです。ダウンロードしたSDKパッケージには伝説的な開発ドキュメントがない
こと注意してください。他の場所で見つけるか、ウェブページ。

公開鍵、秘密鍵、PID、sellerID、鍵はすべてドキュメントで詳細に説明されているため、ここでは詳しく説明しません。概念を明確にする前に明確にする必要があります。そうしないと、しばらく混乱します。問題が発生した場合は、一緒に話し合うことができます。

4.ライブラリ統合SDKをインポートします

4.1ファイルとキーライブラリのインポート

CocoaPods経由でインポート

pod  'AlipaySDK-iOS' 

手動インポート

公式デモのスクリーンショット

フレームワークとその他のファイルを追加
するSDKファイルの新しいバージョンであるiOSプロジェクトを開きます。注文ファイルをコピーして、独自のプロジェクトに貼り付ける必要があります。

  • AlipaySDK.framework
  • AlipaySDK.bundle
  • フォルダーまで
  • opensslフォルダー
  • libcrypto.a和libssl.a

上記のファイルの一部は、開いているプロジェクトに表示されません。プロジェクトフォルダを開いて見つける必要があります。

[ビルドフェーズ]タブの[バイナリとライブラリのリンク]で、次の依存関係を追加します。

それらの中で、次のことに注意する必要があります。

  • Xcode 7.0以降のバージョンの場合は、libc ++。tbd、libz.tbdを追加する必要があります。
  • Xcode 7.0より前のバージョンの場合は、libc ++。dylib、libz.dylibを追加する必要があります(次の図を参照)。

この時点で、プロジェクトを開始すると、エラーレポートが見つかる可能性があります。

4.2ヘッダーファイルの紹介

AlipaySDKを呼び出す必要のあるファイルに、ヘッダーファイル参照を追加します。

import <AlipaySDK/AlipaySDK.h>

4.3通話支払いインターフェース

Alipayのアクセスドキュメントでは、注文を生成するステップはクライアント側で実行されますが、これはサーバー側で実行するのが最適です。

注文はバックグラウンドで生成され、スプライスされ、署名されます。次に、サーバー側が暗号化され署名されたパラメーターをクライアント側に直接送信します。これにより、より安全になります。

すべての注文情報、販売者情報などはあなた自身の手にあります。このように、APPはデータが傍受されることを恐れず、特に簡単に呼び出すことができます。支払いインターフェースを呼び出すだけで済みます。

注文を送信し、支払いを処理して結果を返すだけでよい場合は、ダウンロードしたSDKで簡単に見つけられるAlipaySDK.bundleとAlipaySDK.frameworkを追加するだけで済みます。
迅速な支払い方法は次のとおりです。

-(void)payOrder:(NSString *)orderStr fromScheme:(NSString *)schemeStr callback:(CompletionBlock)completionBlock;

支払いボタンで、Alipayクラスを使用して、このメソッドをもう一度呼び出します。次のように:

// NOTE: 调用支付结果开始支付
[[AlipaySDK defaultService] payOrder:orderString fromScheme:@"FBYAlipayDemo" callback:^(NSDictionary *resultDic) {
    NSLog(@"reslut = %@",resultDic);
}];

4.4URL処理メソッドを返すようにAlipayクライアントを構成する

たとえば、サンプルのAliSDKDemo \ APAppDelegate.mファイルに、参照コードを追加します。

import <AlipaySDK/AlipaySDK.h>

* @ * implementation AppDelegateでは、次のコードのNSLogが実際のビジネス処理コードに変更されます。

- (BOOL)application:(UIApplication *)app openURL:(NSURL *)url options:(NSDictionary<NSString*, id> *)options
{
    if ([url.host isEqualToString:@"safepay"]) {
        //跳转支付宝钱包进行支付,处理支付结果
        [[AlipaySDK defaultService] processOrderWithPaymentResult:url standbyCallback:^(NSDictionary *resultDic) {
            NSLog(@"result = %@",resultDic);
        }];
    }
    return YES;
}

4.5プロジェクト構成

最後に、URLスキームを書くことを忘れないでください。最後のスキームは
[ターゲット]-> [情報]の下にあります[情報]タブをクリックし、[URLタイプ]オプションで[+]をクリックします。

5.よくある質問のまとめ

5.1支払い後にアプリに戻ることはできません

通常、ホワイトリストは正しく設定されていません

// NOTE: 调用支付结果开始支付
[[AlipaySDK defaultService] payOrder:orderString fromScheme:@"FBYAlipayDemo" callback:^(NSDictionary *resultDic) {
    NSLog(@"reslut = %@",resultDic);
}];

上記のコードのappSchemeパラメーターは、4.5のプロジェクト構成で設定されたURLスキームと同じである必要があります。これにより、アプリを対応して返すことができます。

5.2 #include <openssl /opensslconf.h>が見つかりません

これは魔法の穴です。長い間グーグルで検索しましたが、理解できませんでした。ネチズンに思い出された後、#import ""と#import <>の違いを思い出しました。

解決策:[ビルド設定]の[ターゲット]-> [ヘッダー検索パス]。
図に示すように、次のディレクトリ「$(SRCROOT)/プロジェクト名/ファイルの絶対アドレス」を追加します

3.png

5.3'openssl /asn1.h 'ファイルが見つかりません

openslライブラリがプロジェクトに導入されたため、この問題はライブラリファイルプロジェクトが見つからないために発生します。次の図に示すように、ヘッダー検索パスに$(PROJECT_DIR)/ project name / opensslを追加するだけで済みます。 :

5.4未定義のシンボル:OBJC_METACLASS $ _WKWebView

上記の問題が発生した場合は、プロジェクト構成にシステムクラスライブラリを追加する必要があります:WebKit.framework

5.5実行後にエラーが報告された場合は、次のプロンプトメッセージのようになります。

Cannot find interface declaration for 'NSObject', superclass of 'Base64'

次に、エラーを報告したファイルを開き、ヘッダーファイルを追加する必要があります。

# import <Foundation/Foundation.h>

5.6SwiftでSDKにアクセスするときに発生する問題

プロジェクトで開発言語としてSwiftを使用している場合は、Bridging-Header.hなどのブリッジファイルを追加する必要があります。

同時に、プロジェクトのビルド設定でブリッジファイルの場所を設定します。

実行時に次のエラーが発生した場合は、ブリッジファイルに#import <UIKit /UIKit.h>を書き込んでください。

5.7クリックして支払い、スタートページのAlipayカードにジャンプします

これが発生すると、ページにスタックしたページに対応するエラーメッセージが表示されます。通常、次の状況があります。

  • 製品情報スプライシング文字列エラー
  • 支払いアカウントは更新ステータスを期待しています
  • マーチャントIDエラー
  • 注文情報の確認に失敗しました

この時点で、Alipayの支払いは基本的に完了しています。統合プロセス中に問題が発生した場合は、私にメッセージを残すことができます。

おすすめ

転載: blog.csdn.net/qq_36478920/article/details/113363062