10842
""定期決済"" と ""定期決済にかかる初期費用"" と ""最初の月の日割り料金"" を請求しようとしています。

1回の SetExpressCheckout ですべてを処理することは可能なのでしょうか。

定期決済は  
L_BILLINGTYPEn='RecurringPayments'  
で行い、  
初期費用は  
CreateRecurringPaymentsProfile  
にある  
'INITAMT'  
に含めようとしています。

日割り料金を SetExpressCheckout に含める場合にはどうすればよいでしょうか？  
L_BILLINGTYPEn を設定しようとしたのですが、  
'RecurringPayments'以外のものを入れるとエラーになり何を入れればいいかわかりません。

また、L_BILLINGAGREEMENTDESCRIPTIONnを複数設定した場合(n=0,1)、  
0番目のものしか表示されないのですが、すべて表示させたいと思っています。
CC BY-SA 3.0
2015-05-29T08:55:06.413
10759
2015-06-03T20:35:15.020
9415
question
paypal
定期決済と通常決済を同時に処理
以下の実装をおすすめします。

  1. SetExpressCheckout APIで、AMTに初月日割り分をセットしてAPIを呼び出す。  
（同時にこちらで初期費用の設定もされることをお勧めします。CreateRecurringPaymentProfleのINITAMTは、即座に決済されないので利用しないほうがよいかとおもいます）

  2. PayPal画面に遷移。  
支払い者は初月分（及び初期費用）決済と翌月以降の定期支払いに両方に同意する。

  3. 戻ってきたら、DoExpressCheckoutPayment API(AMTに初月日割り分及び初期費用をセット）を呼び出す。

  4. 引き続き、CreateRecurringPaymentProfile APIを呼び出す。

これにより、3のステップで初月分と初期費用がまず決済され、4のステップで翌月以降分が定期支払いとして定義されます。  
SetExpressCheckoutでの具体的なパラメータですが、以下のような感じがよいかと思います。  
（初期費用が1000円、日割り分が100円とした時の例）

```

    PAYMENTREQUEST_0_AMT=1100
    PAYMENTREQUEST_0_CURRENCYCODE=JPY
    L_PAYMENTREQUEST_0_NAME0=初期費用
    L_PAYMENTREQUEST_0_AMT0=1000
    L_PAYMENTREQUEST_0_QTY0=1
    L_PAYMENTREQUEST_0_DESC0=初期費用の説明
    L_PAYMENTREQUEST_0_NAME1=初月日割り分
    L_PAYMENTREQUEST_0_AMT1=100
    L_PAYMENTREQUEST_0_QTY1=1
    L_PAYMENTREQUEST_0_DESC1=初月日割り分の説明
    L_BILLINGTYPE0=RecurringPayments
    L_BILLINGAGREEMENTDESCRIPTION0=定期支払いの説明
    
```
CC BY-SA 3.0
2015-06-01T10:36:14.257
10842
2015-06-01T10:36:14.257
9416
10759
answer
一般的には、先にDoExpressCheckoutPayment
APIを呼び出し、成功した場合に限りCreateRecurringPaymentProfile APIを呼び出します。

これは、初期費用や日割り分が取れない（DoExpressCheckoutPayment がエラー）場合、  
翌月以降の定期支払いの定義をしないというビジネスロジックが一般的で、  
CreateRecurringPaymentProfile APIは基本的にはパラメータエラー以外ではエラーになることがないためです。

CreateRecurringPaymentProfile APIだけが失敗することはまれなので、こちらは個別対応でいいかと思います。
CC BY-SA 3.0
2015-06-03T20:35:15.020
10958
2015-06-03T20:35:15.020
9416
10759
answer