PayPal
Mobiele PayPal / creditcardbetalingen
Zoeken…
parameters
| Parameter | Details |
|---|---|
| knop | Eenvoudige betaalknop |
| config | PayPal-configuratieobject met onze klant-ID (van het maken van applicaties) en de omgeving die we willen gebruiken (sandbox of live) |
| betaling | PayPal betalingsgegevens |
| paymentConfig | Configuratie-opzet voor de betalingsinformatie en instellingen |
| serviceconfig | Configuratie-intentie voor de configuratieparametergegevens |
Opmerkingen
Voorbeelden met betrekking tot het verwerken van betalingen op mobiele apparaten
Android: PayPal / creditcardbetaling accepteren
In deze tutorial gaan we leren hoe we de PayPal-Android SDK kunnen instellen om een eenvoudige betaling te verwerken via een PayPal-betaling of een creditcardaankoop. Aan het einde van dit voorbeeld moet u een eenvoudige knop in een toepassing hebben die, wanneer erop wordt geklikt, de gebruiker naar PayPal zal doorsturen om een ingestelde betaling te bevestigen. Vervolgens keert de gebruiker terug naar de toepassing en logt de bevestiging van betaling.
De volledige applicatiecode voor dit voorbeeld is beschikbaar in de PayPal Developer Github Repository .
Laten we beginnen.
De eerste stap is het verkrijgen en toevoegen van de SDK aan uw project . We voegen de verwijzing naar onze build.gradle-afhankelijkheden als volgt toe:
dependencies {
compile 'com.paypal.sdk:paypal-android-sdk:2.14.1'
...
}
Nu gaan we naar ons bestand MainActivity.java (of waar u de PayPal-knopintegratie wilt toevoegen) en voegen een config voor onze klant-ID en de omgeving (sandbox) die we zullen gebruiken.
private static PayPalConfiguration config = new PayPalConfiguration()
.environment(PayPalConfiguration.ENVIRONMENT_SANDBOX)
.clientId("YOUR CLIENT ID");
Nu gaan we een knop maken in onze onCreate(...) -methode, waarmee we een betaling via PayPal kunnen verwerken zodra erop is geklikt.
@Override
protected void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
final Button button = (Button) findViewById(R.id.paypal_button);
}
We moeten nu de functionaliteit voor die knop definiëren. In uw res> layout> XML-hoofdbestand kunt u de volgende definitie voor de knop toevoegen, die de tekst en onClick-handler voor de knop met de paypal_button-ID definieert.
<Button android:id="@+id/paypal_button"
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:text="@string/paypal_button"
android:onClick="beginPayment" />
Wanneer erop wordt geklikt, roept de knop de methode beginPayment(...) . We kunnen vervolgens de tekst voor de knop als volgt aan ons bestand strings.xml toevoegen:
<string name="paypal_button">Pay with PayPal</string>
Met de knop op zijn plaats, moeten we nu de knopklik verwerken om de betalingsverwerking te starten. Voeg de volgende beginPayment(...) -methode toe onder onze vorige onCreate(...) -methode.
public void beginPayment(View view){
Intent serviceConfig = new Intent(this, PayPalService.class);
serviceConfig.putExtra(PayPalService.EXTRA_PAYPAL_CONFIGURATION, config);
startService(serviceConfig);
PayPalPayment payment = new PayPalPayment(new BigDecimal("5.65"),
"USD", "My Awesome Item", PayPalPayment.PAYMENT_INTENT_SALE);
Intent paymentConfig = new Intent(this, PaymentActivity.class);
paymentConfig.putExtra(PayPalService.EXTRA_PAYPAL_CONFIGURATION, config);
paymentConfig.putExtra(PaymentActivity.EXTRA_PAYMENT, payment);
startActivityForResult(paymentConfig, 0);
}
Wat we hier doen, is eerst de service-intentie ( serviceConfig ) instellen, met behulp van de config die we eerder hadden gedefinieerd voor onze klant-ID en de sandbox-omgeving. We specificeren vervolgens het betalingsobject dat we willen verwerken. Voor dit voorbeeld stellen we een statische prijs, valuta en beschrijving in. In uw uiteindelijke toepassing moeten deze waarden worden verkregen van wat de gebruiker in de toepassing probeert te kopen. Ten slotte hebben we de paymentConfig , waarbij we de config en payment die we eerder hadden gedefinieerd, toevoegen en de activiteit starten.
Op dit moment krijgt de gebruiker de PayPal-inlog- en betalingsschermen, zodat ze kunnen selecteren of ze met PayPal of een creditcard betalen (via handmatige invoer of card.io als de camera beschikbaar is). Dat scherm ziet er ongeveer zo uit:

Eenmaal gedaan, moeten we een handler klaar hebben voor wanneer PayPal de gebruiker na bevestiging van betaling of annulering terugstuurt naar de toepassing. Laten we voor dat doel onActivityResult(...) negeren.
@Override
protected void onActivityResult (int requestCode, int resultCode, Intent data){
if (resultCode == Activity.RESULT_OK){
PaymentConfirmation confirm = data.getParcelableExtra(
PaymentActivity.EXTRA_RESULT_CONFIRMATION);
if (confirm != null){
try {
Log.i("sampleapp", confirm.toJSONObject().toString(4));
// TODO: send 'confirm' to your server for verification
} catch (JSONException e) {
Log.e("sampleapp", "no confirmation data: ", e);
}
}
} else if (resultCode == Activity.RESULT_CANCELED) {
Log.i("sampleapp", "The user canceled.");
} else if (resultCode == PaymentActivity.RESULT_EXTRAS_INVALID) {
Log.i("sampleapp", "Invalid payment / config set");
}
}
Binnen de methode onActivityResult(...) controleren we of de resultCode die terugkomt RESULT_OK (door gebruiker bevestigde betaling), RESULT_CANCELED (door gebruiker geannuleerde betaling) of RESULT_EXTRAS_INVALID is (er was een configuratieprobleem). In het geval van een geldige bevestiging, krijgen we het object dat is teruggestuurd van de betaling en loggen we het in dit voorbeeld. Wat ons zal worden teruggegeven, zou er ongeveer zo uit moeten zien:
{
"client": {
"environment": "sandbox",
"paypal_sdk_version": "2.14.1",
"platform": "Android",
"product_name": "PayPal-Android-SDK"
},
"response": {
"create_time": "2016-05-02T15:33:43Z",
"id": "PAY-0PG63447RB821630KK1TXGTY",
"intent": "sale",
"state": "approved"
},
"response_type": "payment"
}
Als we onder het response kijken, zien we dat we de state approved , wat betekent dat de betaling is bevestigd. Op dit moment moet dat object naar uw server worden verzonden om te bevestigen dat een betaling daadwerkelijk is uitgevoerd. Zie deze documenten voor meer informatie over die stappen.
Onze laatste stap is opruimen in onze onDestroy(...) .
@Override
public void onDestroy(){
stopService(new Intent(this, PayPalService.class));
super.onDestroy();
}
Dat is alles wat er is. In dit voorbeeld hebben we een eenvoudige knop gemaakt om een betaling met PayPal of een creditcard te verwerken. Vanaf dit punt zijn er een paar volgende stappen voor u om dit voorbeeld uit te breiden:
- Betaling van betalingsinformatie dynamisch op basis van gebruikersproductselectie in de
beginPayment(...)-methode. - Verzenden van de betalingsbevestiging naar uw server en verifiëren dat de betaling daadwerkelijk is doorgegaan.
- Afhandeling van de fout en annulering gebruikersgevallen binnen de app.