最近のアクセス:
GeneXus アプリケーションでの WeChat Pay を使用した決済方法

WeChat Pay とは

WeChat Pay は中国のソーシャル メディア アプリケーションの WeChat に含まれているモバイル決済プラットフォームです。Tencent 社が開発し、現在、中国の国内外に 9 億人以上のユーザーがいます。中国のモバイル決済市場で非常に大きなシェアを持つため、モバイルアプリケーションでは標準で WeChat Pay と連携することが求められています。そのためには WeChat Open Platform を使用する必要があります。

GeneXus との連携

GeneXus 15 Upgrade 8 以降で生成した Android および iOS アプリケーションは、WeChat Pay の決済機能と連携させることができます。使用する拡張ライブラリは GeneXus のインストールに含まれており、Payment API をインポートします。 

手順

1 - WeChat Open Platform サイトでのアプリケーションの登録

WeChat Open Platform サイトに開発者として登録し、決済機能と連携させるすべてのアプリケーションを登録する必要があります。この処理で、WeChat Pay と連携するのに必要なアプリケーション証明書を取得します。登録方法については、こちらを参照してください。

2 - 構成情報の設定

プログラミングの最初の手順は、情報を設定することです。既定では、WeChat Pay API が LoadConfig プロシージャーを使用して WeChatPay_Config という名前の XML ファイルから構成情報をロードします。このファイルを変更すると、WeChat Pay をアプリケーションに連携させるのに必要なすべての構成を設定できます。WeChatPay_Config.xml ファイルの構造と、その説明を次に示します。
<Configuration>     
   <AppId />     
   <Environment />     
   <CallbackURL />     
   <Timeout />     
   <MerchantId />     
   <MerchantKey />     
   <AdditionalConfig /> 
</Configuration>

  • AppId: アプリケーションを WeChat Pay に登録したときに取得する ID です。
  • Environment: 指定可能な値は Production または Sandbox です。決済トランザクションを実行するときの実行環境を指定します。 
  • CallbackURL: 決済トランザクションを完了する際に WeChat Pay が呼び出す決済通知サービスの URL です。既定では、WeChat Pay API にある CallbackService プロシージャーに含まれる URL が使用されます。
  • Timeout: 決済トランザクションのタイムアウト (分単位) です。
  • MerchantId: WeChat Open Platform に登録したユーザー ID です。
  • MerchantKey: WeChat Open Platform のアプリケーションに割り当てられたキーです。
  • AdditionalConfig: その他の情報の一覧です。 
WeChat Pay と連携する iOS アプリケーションを生成する場合は、追加の設定手順が必要です。スマートデバイスの [ Main object properties ] プロパティグループの [ WeChat Pay ] の [ Application Id ] の値を、設定ファイルの AppId タグに設定した値と同じにする必要があります。

3 - 決済データの準備

次の手順では、WeChat Pay に送信する決済データを準備します。まず、ユーザーは WeChat Pay API (製品コード、製品の説明、通貨、金額) からの PaymentApplicationData SDT に基づいて変数にいくつかの値を設定する必要があります。この変数は、WeChat Pay に送信する情報を返す GetPaymentInformation プロシージャーの入力になります。
GetPaymentInformation プロシージャーには中間の工程があります。つまり、送信可能な決済情報 (生成されたオーダー番号を含む) をユーザーの指示に沿って処理し、アプリケーションのデータベーステーブルに格納するといったことが可能です。これらのアクションは WeChat Pay APIOnAboutToPay プロシージャーで編集できます。

4 - WeChat Pay への決済情報の送信

これで WeChat Pay API に含まれる WeChatPayProvider 外部オブジェクトからの Pay メソッドを使用して、WeChat Pay に決済情報を送信する準備ができました。このメソッドでは、前の手順で GetPaymentInformation プロシージャーから返された処理済みの決済情報を、PaymentInformation SDT に基づいた変数で受け取ります。
手順 4 と手順 5 のアクションを行う GeneXus スマートデバイス オブジェクト イベントのコード例を次に示します。
Event 'Pay with WeChat Pay'
   Composite
      &PaymentApplicationData.ProductCode = 'Product name'
      &PaymentApplicationData.ProductDescription = 'Product description'
      &PaymentApplicationData.Currency = 'CNY'
      &PaymentApplicationData.Amount = 1000
      GeneXus.Common.UI.Progress.ShowWithTitleAndDescription("Please Wait...","Preparing payment information...")
      WeChatPay.GetPaymentInformation(&PaymentApplicationData, &PaymentInformation)
      GeneXus.Common.UI.Progress.Hide()
      if &PaymentInformation.ErrorCode > 0
          Msg("Error: " + &PaymentInformation.ErrorDescription)
      else
          WeChatPayProvider.Pay(&PaymentInformation)
      endif
   EndComposite
Endevent

5 - 決済結果の処理

WeChat Pay の決済結果を処理するには、2 つのアクションを行うコードを記述する必要があります。まず、OnPaymentFinished という WeChatPayProvider 外部オブジェクト イベントを作成します。このイベントは PaymentResult SDT に基づいた変数を受け取ります。これには完了した決済の ErrorCode、ErrorDescription、OrderNumber が含まれます。詳しくは、「WeChat Pay API」を参照してください。
このイベントのコード例を次に示します。
Event WeChatPayProvider.OnPaymentFinished(&PaymentResult)
   Composite
      if &PaymentResult.ErrorCode = 0
         GeneXus.Common.UI.Progress.ShowWithTitleAndDescription("Please Wait...","Finishing transaction...")
         SetSaleStatus(&PaymentResult.OrderNumber, PaymentStatus.Paid)
         ClearCart()
         GeneXus.Common.UI.Progress.Hide()
         ConfirmationPanel()
      else
         SetSaleStatus.Call(&PaymentResult.OrderNumber, PaymentStatus.Error)
         Msg(&PaymentResult.ErrorDescription)
      endif
   EndComposite
EndEvent

6 - 非同期決済通知サービス

最後の手順は、アプリケーションの開発者が提供する決済通知サービスの呼び出しの設定です。この呼び出しは WeChat Pay サーバーによって行われます。サービスの URL は、設定ファイルの CallbackURL パラメーターで指定したものです。既定では、この URL は WeChat Pay API に含まれる CallbackService プロシージャーを参照します。このプロシージャーは HTTP データを受け取って SDT 構造 (PaymentNotificationInfo) に変換します。次に、CallbackHandler という別のプロシージャーを呼び出して、その SDT を通知情報とともに処理します。

まとめ

アプリケーションの登録が済んだら、GeneXus の開発者は次のオブジェクトを変更するだけでアプリケーションに WeChat Pay を連携させることができます。
  • WeChatPay_Config.xml ファイルに構成を設定する。
  • OnAboutToPay プロシージャーで WeChat Pay に決済データを送信する直前に決済データ処理のコードを記述する。
  • 決済データを設定して、GetPaymentInformation プロシージャーとスマート デバイス オブジェクトにある WeChatPayProvider EO (外部オブジェクト) の Pay メソッドを呼び出す。
  • スマート デバイス オブジェクトにある WeChatPayProvider EO の OnPaymentFinished イベントのコードを記述する。
  • CallbackHandler プロシージャーで処理される通知サービスのコードを記述する。

例の詳細はこちらからダウンロードできます。




サブページ
Created: 18/10/29 01:07 by Admin Last update: 19/03/26 22:14 by Admin
カテゴリ
Powered by GXwiki 3.0