フォーム経由の支払いの受領

目次up

概要

SkyDesk Creatorは、支払いフォームを作成して、ユーザーからの支払いを受領できます。簡単な設定によって、ユーザーから様々な種類の支払いの受領が可能です。この機能には以下があります。

  • 物品の販売 - ユーザーが購入するアイテムを選択できるように表示します。
  • 寄付の収集 - 非営利団体の場合、ユーザーからの寄付を集めます。
  • オンライン登録 - イベントや研修などの登録フォームを作成して、支払いフォーム経由で会費を集めます。

支払いモジュールは、以下のプランで提供しています。

  • レギュラープラン - プロフェッショナル / エンタープライズ
  • エクスプレスプラン - プロフェッショナル

フォームで支払いを有効にする

SkyDesk Creatorは、フォームに追加する支払い機能を提供しています。支払いがフォームに設定されると、ユーザーはフォームにレコードが追加された時に、支払いの手続きへ誘導されます。支払いのデータは、追加されたレコードから取得されます。したがって、支払いの設定は、フォームの項目の支払い項目への関連付けによって構成されています。例えば、フォームに[Amount]項目がある場合、これは支払い金額に関連付けられます。この場合、 ユーザーが[Amount]項目に入力するたび、レコードへ追加される際に支払い金額として使用されます。

フォームで支払いの機能を有効にする手順は以下になります。

  1. フォームを選択して、設定 -> 支払いをクリックします。支払いの設定画面は以下のようになります。

2. 設定の種類について以下に説明します。対象の値を指定して、[保存]をクリックして、フォームへの支払いを設定します。

  • PaypalのメールID:Paypalアカウントのメールアドレスを指定します。これは、支払いを受領する業務用のアカウントである必要があります。
  • サンドボックスの使用: Paypalのサンドボックス環境を使って、支払いフォーム連携のテストをする場合、[サンドボックスの使用]を選択します。確認ができたら、チェックを外してください。
  • 通貨: 支払いに利用する通貨を参照します。ドロップダウンに表示される通貨がPaypalでサポートされています。表示されている通貨の中から、使用する通貨を選択します。 
  • 定期支払いを受け付け:ユーザーに定期的な支払いを請求する場合に選択します。支払いの間隔も日、週、月、年で指定できます。設定が完了すると、Paypalは支払者から承認を取り、 (Paypal アカウントやクレジット/デビットカード)、指定した期間に基づいて、ユーザーのアカウントから繰り返し引き落とされます。
  • 支払者の住所が必要:ユーザーがPaypal のサイトからチェックアウトする際、住所を指定する必要がある場合に選択します。
  • お支払いの種類:支払いの種類は、支払いの受領方法の違いを参照します。[販売項目]の種類は一般的に、ある製品を販売する際に使用されます。ユーザーが提示した価格で製品を購入するために、[金額] と[数量]項目を指定します。寄付は、ユーザーから寄付を募る場合に利用されます。[寄付]を選択すると、数量は寄付に適用されませんので、[数量]項目は非表示になります。
  • 言語:Paypalのチェックアウトのページの言語を選択します。

後から支払いフォームを無効にして、一般的なフォームとして活用する場合、 設定 -> 支払いページで、[支払いを有効]のチェックボックスを外して無効にします。

支払いの項目

支払い項目は個別の項目を参照します。そのため、追加レコードから必要な項目のデータがPaypalに送信されます。

  1. 金額 - [寄付]の場合は支払われた金額、[販売項目]の場合はアイテムの価格を参照します。数字の項目 (数字、小数、通貨)のいずれかになります。通貨項目が選択されていると、最終的に支払いに使用される通貨は、通貨を解析するロジックに従います。そうでなければ、上記に設定された通貨が使用されます。
  2. 製品 - 支払いの参照に便利です。製品名、支払いの備考などに使用されます。文字列の項目(一列、複数列など)の種類のいずれかになります。
  3. 数量 - 注文されたアイテムの数量を参照します。フォームの数字項目のいずれかです。この項目が残っていると、数字の値のデフォルトは1になります。

通貨の解析ロジック

通貨項目に[金額] が使用されている場合、支払い設定で設定された通貨と項目の通貨の間で競合が起こることがあります。例えば、USドルが支払い設定の通貨、ルピーが項目の通貨に設定される場合、以下のロジックがPaypalに送信される通貨の解析に使用されます。為替レートは計算されません。オリジナルの金額の値が使用されますが、Paypalに送信する前に、適切な通貨が使用されます。

  • 項目の通貨が有効なPaypal の通貨の場合、その項目の通貨がPaypalに送信されます。
  • 項目の通貨が有効なPaypal の通貨でない場合、支払いの設定で設定された通貨が使用されます。

一回限りの支払い

  1. ライブモードでは、フォームが送信されると、フォーム追加の工程が[成功時]アクションを除いて実施されます。 
  2. データが検証、追加されると、ユーザーは支払いをするPaypalのサイトにリダイレクトされます。 
  3. 支払いは、新規レコードが追加された時に一度だけ実行されます。レポートでレコードが編集されても実行されません。支払いは、スクリプトやインポート、その他の方法を通じてレコードが追加された時にも実行されません。
  4. Paypalのサイトで支払いが完了すると、ユーザーは[Return] ボタンをクリックして、Creatorのサイトに戻ります。ユーザーは[成功時]アクションの結果、他のページに移動します。 
  5. 支払いが実行されると、Paypalは、すべての支払いの詳細をSkyDesk Creatorに個別に送付します。SkyDesk Creatorは、その情報の手続きをします。支払いの詳細を格納して、追加レコードに配置します。これを実施するために、SkyDesk Creatorは、支払いがフォームに設定されるとサブフォームのシステム項目を追加します。支払いの詳細の格納トは別に、[成功時]アクションが実行されます。これは、[成功時]アクションの入金完了までの一連の作業のロジックの指定に役立ちます。
  6. 上記で定めたように、フォームは支払いためのサブフォームのシステムを持っています。この項目は、表示していないアプリのフォームに存在する支払い履歴を参照します。各レコードは、支払いごとの記録を履歴フォームの中に配置します。支払いレコードの詳細を確認するために、支払い関連項目を含むフォームのビューに拡張できます。これは、レポートの編集モードで実施できます。 

定期的な支払い

  1. ライブモードでは、フォームが送信されると、フォーム追加の工程が[成功時]アクションを除いて実施されます。
  2. データが認証され、追加されると、ユーザーは購入手続きをするために、Paypalのサイトにリダイレクトされます。
  3. Paypalのサイトでは、ユーザーが購入手続き後、[Return]ボタンをクリックして、 Creatorのサイトに戻ります。ユーザーは[成功時]アクションの結果、他のページに移動します。ユーザーが支払いをすると、購入の登録された詳細がSkyDesk Creatorに送付されます。SkyDesk Creator は、購入の登録を格納して、レコードに追加します。購入の登録の格納とは別に、[成功時]アクションが実行されます。
  4. Paypal は、これ以降、指定された間隔に基づいて、ユーザーのアカウントの支払いを管理します。支払いが実施されるごとに、Paypalは支払いの詳細を送信します。1回限りの支払いのプロセスでは、SkyDesk Creatorは支払いの詳細を格納して、追加レコードに配置します。支払い詳細の格納に加えて、[成功時]アクションが実行されます。

メモ:

  • ルックアップ、数式の項目は、それらの値が適切な種類であれば、項目の割り当てにも使用されます。例えば、数式が数値を解決する場合、[金額]項目(数式項目はドロップダウンに表示)が使用されます。同様に、[数字]項目を参照しているルックアップを含む項目は、[数量]が使用されます。これらの拡張機能は、複雑なケースの実装に役立ちます。
  • ドロップダウンの項目に数字が入っていても、文字列の種類のみ解決します。したがって、それらは、[金額]や[数量]項目が使用されることはなく、[Description]項目のみが使用されます。
  • Iframeを使ってWebページに組み込まれているフォームの場合、支払いのリダイレクトは、メインウィンドウを通じてのみ実行されます。Iframeは使用されません。Paypal は、安全性を確保するためにIframeでは支払いを許可しません。
  • 全体的な流れをスムーズに進めるために、下記の設定をpaypal profileで、ご確認ください。
    • Auto-returnを [Off]に設定します。
    • Payment Data Transferを[Off]に設定します。

 FAQ

1. I want to accept payments from my users. What are the prerequisites?

You need a Paypal business account to accept payments from your users. Please check https://www.paypal.com/cgi-bin/webscr?cmd=p/gen/personal_vs_business-outside for more details.

2. Is it possible to test my payment form with virtual currency before I expose it to the users?

Yes. It is possible to test your payment form with virtual currency through Paypal Sandbox site. To create a test setup, follow the steps below.

  • Signup for a Paypal developer account at https://developer.paypal.com/
  • Create atleast one business account and personal account. Please check https://cms.paypal.com/cms_content/US/en_US/files/developer/PP_Sandbox_UserGuide.pdf for more details.
  • Use the business account created above while configuring the payment settings in SkyDesk Creator. Ensure that “Use Sandbox” option is selected. Else, it will assume it is a live account.
  • Use the personal account created above during checkout.

3. I already have a Paypal account. Can I use it in Sandbox?

No. Paypal maintains separate setup for Live and Sandbox. Hence a Live Paypal account cannot be used in Sandbox or vice versa.

4. Can a stateless form be used to submit payment and in the on success script can we write code to manipulate data in the records of another form?

No. Currently, we support payments only through stateful forms.

5. I see a new field labeled “Payment” in my view. What is it useful for?

The “Payment” field maintains a list of transactions that have taken place for a particular record. While it will have one transaction for a non-recurring transaction, it will maintain a list of transactions for recurring transactions.

6. I embed the Payment form in my website. But it leaves my website and gets redirected to Paypal.

The payment forms are embedded using Iframes in your website. For security reasons, Paypal does not allow payments through Iframe. Hence the behavior.

7. What happens if the return button is not clicked? Will the On-Success script run in such a case?

Yes. Even if the users do not click the “Return” button in the Paypal website, the On-Success script will run. This is achieved through a background handshake between SkyDesk Creator and Paypal, wherein Paypal sends the transaction details to SkyDesk Creator.

8. Can you elaborate the recurring payment process? How payments are obtained from users at a periodical interval?

SkyDesk Creator forms can be configured to accept recurring payments. When users add a record to such a form, they will be redirected to Paypal sending along with, the recurring amount and duration details. Once they authorize the payment, a subscription profile will be created. After this profile is created in Paypal, aka “subscription signup”, Paypal will take care of obtaining the recurring payments on a regular interval based on the recurring duration setup in the payment configuration, till the profile is canceled by the user. Please check this link for more details.

9. How do users cancel subscription? In case they contact us, how do we cancel their subscription?

Users can cancel subscription through the Profile pages in their account. Please check https://www.paypal.com/helpcenter/main.jsp?cmd=_help&solutionId=27715&t=solutionTab for more details. 
Please check https://cms.paypal.com/us/cgi-bin/?cmd=_render-content&content_ID=developer/howto_admin_recurringpayments#admin to understand how to administer all recurring payment profiles that your users have created and cancel any profile based on your user's request

10. Will we get intimated whenever users pay?

Yes. Whenever any payment takes place, the details are sent by Paypal to SkyDesk Creator. SkyDesk Creator processes those transactions, stores them and links them to the record in the Payment form that initiated the payment, through the “Payment” field.

11. If a user's payment fails for a particular period, will we be intimated about it? In case we need to check manually, what should we do?

Yes. Any events taking place in Paypal will be intimated to SkyDesk Creator. SkyDesk Creator will process, store and link those details to the record in the Payment form that initiated the payment through the “Payment” field.

12. I see only “Selling Items” and “Donation” as payment types. What should I do if I want to create a registration form, fee collection form etc ?

As long as the form contains a string field to map as a payment item name/remark/description and a decimal/currency field to map as the payment amount, any stateful form can be can be configured for payment. To achieve this, create the form with the required fields. Open the “Payment” dialog from the Form Edit. Configure your Paypal settings, select “Selling Items” type and then map the Payment fields. If you want the payments to be marked as donation, select “Donations” type instead.

13. I want my users to choose a donation amount from a dropdown of present donation amounts. Is it possible?

Yes. Follow the steps given below.

  • Create a Single-Item selling form through the Create Form flow.
  • Go to the edit mode of the payment form.
  • Click the “Payment” link to open the “Payment Settings” dialog.
  • Change the payment type to “Donations” and save.

14. I want to send Emails (in general, any post-payment processing) to my user confirming their payment. How do I do?

You can achieve any post-payment processing through the On-Add On-Success script. You can use the following code template to perform any post-payment processing.

Non-Recurring Payment

//ZC_Payment is a subform field present in the form. It will contain a list of transactions related to the current record
//Loop through all records in ZC_Payment subform field.
for each rec in input.ZC_Payment
{

//payment_processing_status will be "" for records that are not processed.
//Once the On-Success script finishes successfully, its value will be "Completed". Skip them here.
//If the On-Success script finishes unsuccessfully, its value will be "On Success Error". Skip them here.

if(rec.payment_processing_status == "")
{

//Check if it is payment transaction.

if (rec.txn_type.equalsIgnoreCase("web_accept"))

{

//payment_status is valid only for payment transactions
//Make sure the payment_status is "Completed".

if(rec.payment_status == "Completed")
{
//related code
}
else
{
//handle all other payment_status values
}
}
else
{
//handle all other txn_type values
}
}
}

Recurring Payment

//ZC_Payment is a subform field present in the form. It will contain a list of transactions related to the current record
//Loop through all records in ZC_Payment subform field.

for each rec in input.ZC_Payment
{

//payment_processing_status will be "" for records that are not processed.
//Once the On-Success script finishes successfully, its value will be "Completed". Skip them here.
//If the On-Success script finishes unsuccessfully, its value will be "On Success Error". Skip them here

if(rec.payment_processing_status == "")
{

//Check if it is a subscription signup.

if (rec.txn_type.equalsIgnoreCase("subscr_signup"))
{

//related code
}
//Check if it is a subscription cancellation.
else if (rec.txn_type.equalsIgnoreCase("subscr_cancel"))
{
//related code
}

//Check if it is recurring payment transaction.
else if (rec.txn_type.equalsIgnoreCase("subscr_payment"))

{
//payment_status is valid only for payment transactions
//Make sure the payment_status is "Completed".

if(rec.payment_status == "Completed")
{
//related code
}
else
{
//handle all other payment_status values
}
}
else
{
//handle all other txn_type values
}
}
}

15. What payment fields can I use in my On-Success logic?

The following fields can be used through the ZC_Payment subform.

Fields internal to SkyDesk Creator: 
payment_id - Unique value to identify the payment in SkyDesk Creator. It has the format Paypal-WPS-<transaction id>
environment - Sandbox or Live
all_params - The consolidated value of all parameters received from Paypal, delimited by "&"
payment_processing_status - The processing status of this record.

Fields whose values are obtained from Paypal:
payment_type - The funding sources for the payment.
payment_date - The time when the payment took place. It is empty for non-payment transactions, like subscription signup/cancel.
payment_status - The status of the payment transaction.
address_status - The address status of the payer.
payer_status - The status of the payer.
first_name - The first name of the payer.
last_name - The last name of the payer.
payer_email - The email id of the payer.
payer_id - A unique value to identify the payer in Paypal.
business - The Paypal business Email Id to which payments are made.
receiver_email - The primary Email Id of the receiver.
receiver_id - A unique value to identify the receiver in Paypal.
mc_currency - The currency in which the payment is made. It is empty for non-payment transactions, like subscription signup/cancel.
mc_fee - The fee taken by Paypal for the transaction. It is empty for non-payment transactions, like subscription signup/cancel.
mc_gross - The total amount paid by the payer. It is empty for non-payment transactions, like subscription signup/cancel.
txn_type - The transaction type. It can be web accept, subscription signup, subscription payment etc.,
txn_id - A unique transaction id generated by Paypal for the transaction. It is empty for non-payment transactions, like subscription signup/cancel.
mc_amount3 - The regular subscription amount setup in Paypal. This has a value only when txn_type is “subscr_signup”.
Period3 - The regular subscription interval setup in Paypal. This has a value only when txn_type is “subscr_signup”.

16. Once the user finishes payment, I want to redirect them to a different page instead of the payment form. How do I do that?

Use one the of following options to specify the next url

  • Configure the url in the Edit Form – More Options – Form Properties dialog.
  • Configure the next url while embedding. More details..
  • Use the OpenUrl task in On-Success script. More details..