iOSアプリでPayPalをここに統合する

1つのプロジェクトに取り組んでいるときに、 PayPal Hereをアプリケーションに統合する必要に直面しました。 PayPalは開発者の元にはまったく行きませんでした。統合するのは非常に困難でしたが、PayPalでは状況が多少異なります(gitHubに全体のがあります)。 一言で言えば、あなたがオンラインストア、オンラインオークションの所有者であるか、あなたのアプリケーションで支払いをしたいのであれば、あなたはここでPayPalをiOSに統合する方法について読むことに興味があるでしょう。



画像



ちなみに、PayPal経由で支払う多数のオンラインストアにもかかわらず、PayPal Hereサービスはロシアのストアではまだ利用できません。







ここでPayPalとは何ですか?





PayPalこちらは、支払いを支払うことができるモバイル端末であり、Squareの同様のプログラムの直接の競争相手です。 クレジットカードでの支払いに加えて、PayPal Hereは小切手での支払いや一定期間の金融取引の確認に使用できます。 PayPal Hereソフトウェアを介して受信者のメールに請求書を送信することもできます。請求書を受け取った購入者は、請求書を支払うことができます。



iOSとOblective-Cの統合例を示します。 誰かがAndroidに興味を持っているなら、彼のサポートも利用できますが、私はそれを使っていません。



統合プロセス。





残念ながら、PayPalは、アプリケーションから直接トランザクションを実行するための個別のライブラリを提供していません。 しかし、安全性が最重要です。 サードパーティのアプリケーションを呼び出す必要があります-URLを作成して、以下を実行します。



UIApplication *application = [UIApplication sharedApplication]; if ([application canOpenURL:pphUrl]){ [application openURL:pphUrl]; } else { NSURL *url = [NSURL URLWithString:@"itms://itunes.apple.com/us/app/paypal-here/id505911015?mt=8"]; [application openURL:url]; }
      
      





pphUrlにはすべての支払い情報が含まれます。



次に、データを編集するための簡単なUIViewControllerを作成します。



 @interface PPViewController : UIViewController <UITextFieldDelegate> @property (weak, nonatomic) IBOutlet UITextField *priceField; @property (weak, nonatomic) IBOutlet UITextField *taxField; @property (weak, nonatomic) IBOutlet UITextField *nameField; @property (weak, nonatomic) IBOutlet UITextField *quantityField; @property (weak, nonatomic) IBOutlet UITextField *descriptionField; @end
      
      







必要なすべてのリクエストフィールドを追加します。



 NSMutableDictionary *shirt = [NSMutableDictionary dictionary]; NSMutableDictionary *itemList = [NSMutableDictionary dictionary]; NSMutableDictionary *invoice = [NSMutableDictionary dictionary]; [shirt setObject:self.taxField.text forKey:@"taxRate"]; [shirt setObject:self.priceField.text forKey:@"unitPrice"]; [shirt setObject:self.quantityField.text forKey:@"quantity"]; [shirt setObject:self.nameField.text forKey:@"name"]; [shirt setObject:self.descriptionField.text forKey:@"description"]; [shirt setObject:@"Tax" forKey:@"taxName"]; NSMutableArray *items = [NSMutableArray arrayWithObject:shirt]; [itemList setObject:items forKey:@"item"]; [invoice setObject:@"DueOnReceipt" forKey:@"paymentTerms"]; [invoice setObject:@"0" forKey:@"discountPercent"]; [invoice setObject:@"USD" forKey:@"currencyCode"]; [invoice setObject:@"merchant@ebay.com" forKey:@"merchantEmail"]; [invoice setObject:@"foo@bar.com" forKey:@"payerEmail"]; [invoice setObject:itemList forKey:@"itemList"];
      
      







そして最終段階に進みます(ここではJSONKitが必要です ):



 NSString *jsonInvoice = [invoice JSONString]; NSString *encodedInvoice = [jsonInvoice stringByAddingPercentEscapesUsingEncoding:NSASCIIStringEncoding]; NSString *encodedPaymentTypes = [@"cash,card,paypal" stringByAddingPercentEscapesUsingEncoding:NSASCIIStringEncoding]; NSString *encodedReturnUrl = [@"myapp://handler?{result}?Type={Type}&InvoiceId={InvoiceId}&Tip={Tip}&Email={Email}&TxId={TxId}" stringByAddingPercentEscapesUsingEncoding:NSASCIIStringEncoding]; NSString *pphUrlString = [NSString stringWithFormat:@"paypalhere://takePayment?accepted=%@&returnUrl=%@&invoice=%@&step=choosePayment", encodedPaymentTypes, encodedReturnUrl, encodedInvoice]; NSURL *pphUrl = [NSURL URLWithString:pphUrlString];
      
      





その後、上記のようにpphUrlでアプリケーションを開きます。



おわりに





このスキームには小さなBUTが1つあります。今のところ、PayPalHereアプリケーションは支払いが行われた後にアプリケーションをコールバックできませんが、開発者はすぐに修正すると思います。

個人的には、サーバー上で必要なURLを作成することをお勧めします。これは、面倒が少なく、エラー耐性が高いためです。 いずれにせよ、私はそれをやった。



この記事が、すべての成功した統合に役立つことを願っています!

私はあなたの質問に答えて、あなたの経験について読んでうれしいです。



All Articles