Google Pay的主要支付流程
1. 手机端通过与Java服务端的交互,发起支付请求并生成预订单,在完成后将生成的订单号返回给手机端。
2. 通过手机端向Google发起支付请求(包含本地服务器生成的订单号)。
3. Google服务器将支付结果发送回手机端(由于此处涉及消耗型产品,购买后必须通知Google Play我已完成本次交易)。
4. 手机端向Java服务端发送校验请求,一旦通过校验,即可顺利处理订单。服务端会进行重试校验,并在确认无误后进行发货操作,以确保订单能够成功正常发货。
配置
应用包名:packageName

凭证:密码










Java服务端处理
为了成功调用Google API,必须满足一个前提条件:需要使用海外服务器。否则,可能会出现超时的情况。
Maven Dependencies:
```xml
com.google.apis
google-api-services-androidpublisher
v3-rev20211125-1.32.1
校验代码:
``` @RestController
public class GoogleController {
//packageName为应用程序包名、productId商品id、purchaseToken谷歌返回的收据
@PostMapping(/)
public ProductPurchase checkOrder(@RequestBody GooglePayDto googlePayDto, HttpServletRequest requestDto) throws IOException, GeneralSecurityException {
//使用服务帐户Json文件获取Google凭据
List scopes = new ArrayList();
scopes.add(AndroidPublisherScopes.ANDROIDPUBLISHER);
ResourceLoader resourceLoader = new DefaultResourceLoader();
Resource resource = resourceLoader.getResource(classpath:static/刚下载的json文件,这里放到了static目录下);
GoogleCredential credential = GoogleCredential.fromStream(resource.getInputStream())
.createScoped(scopes);
//使用谷歌凭据和收据从谷歌获取购买信息
HttpTransport httpTransport = GoogleNetHttpTransport.newTrustedTransport();
JacksonFactory jsonFactory = new JacksonFactory();
AndroidPublisher publisher = new AndroidPublisher.Builder(httpTransport, jsonFactory, credential)
.setApplicationName(应用程序名).build();
AndroidPublisher.Purchases purchases = publisher.purchases();
final AndroidPublisher.Purchases.Products.Get request = purchases.products().get(googlePayDto.getPackageName(), googlePayDto.getProductId(),googlePayDto.getPurchaseToken());
Syst...
}
```
packageName: the name of the package
商品ID:产品编号
购买令牌:支付凭证
结果:
