Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Reactjs 如何在Google Pay react按钮中调用ProcessPayment函数?_Reactjs_Google Pay - Fatal编程技术网

Reactjs 如何在Google Pay react按钮中调用ProcessPayment函数?

Reactjs 如何在Google Pay react按钮中调用ProcessPayment函数?,reactjs,google-pay,Reactjs,Google Pay,我在react应用程序中集成google pay。根据文档,当生成令牌时,它将被传递到网关以处理支付。我使用的是@googlepay/按钮react。如何将令牌传递到网关。我在文档中没有找到任何东西。此库是否自行向网关发送令牌 从谷歌教程发送令牌到网关 processPayment(paymentDetail) { const paymentToken = paymentDetail.paymentMethodData.tokenizationData.token; let payme

我在react应用程序中集成google pay。根据文档,当生成令牌时,它将被传递到网关以处理支付。我使用的是@googlepay/按钮react。如何将令牌传递到网关。我在文档中没有找到任何东西。此库是否自行向网关发送令牌

从谷歌教程发送令牌到网关

 processPayment(paymentDetail) {
  const paymentToken = paymentDetail.paymentMethodData.tokenizationData.token;
  let paymentData = {
    orderId : '12331231232311',
    amount : '50.00'
  }
  axios.post("https://esqa.moneris.com/googlepay/googlepay-api.js", {
    body: JSON.stringify({
      paymentToken,
      paymentData
    })
  }).then(response => {
    if ( response && response.receipt && response.receipt.ResponseCode &&
    !isNaN(response.receipt.ResponseCode) )
    {
    if ( parseInt(response.receipt.ResponseCode) < 50 )
    {
    alert("Looks like the transaction is approved.");
    }
    else
    {
    alert("Looks like the transaction is declined.");
    }
    }
    else
    {
    throw ("Error processing receipt.");
    }
  })
  
}

<GooglePayButton
                environment="TEST"
                paymentRequest={{
                    apiVersion: 2,
                    apiVersionMinor: 0,
                    allowedPaymentMethods: [
                    {
                        type: 'CARD',
                        parameters: {
                        allowedAuthMethods: ['PAN_ONLY'],
                        allowedCardNetworks: ['MASTERCARD', 'VISA', 'DISCOVER', 'AMEX','DISCOVER','JCB','INTERAC'],
                        },
                        tokenizationSpecification: {
                        type: 'PAYMENT_GATEWAY',
                        parameters: {
                            gateway: "moneris",
                            gatewayMerchantId: "monca05217"
                        },
                        },
                    },
                    ],
                    merchantInfo: {
                    merchantId: '12345678901234567890',
                    merchantName: 'Demo Merchant',
                    },
                    transactionInfo: {
                    totalPriceStatus: 'FINAL',
                    totalPriceLabel: 'Total',
                    totalPrice: '50.00',
                    currencyCode: 'USD',
                    countryCode: 'CA',
                    },
                    callbackIntents: ['PAYMENT_AUTHORIZATION'],
                    emailRequired: true,
                }}
                onLoadPaymentData={paymentRequest => {
                    console.log('load payment data', paymentRequest);
                    this.processPayment(paymentRequest)

                }} 
                onPaymentAuthorized={(paymentData) => ({ 
                    transactionState: 'SUCCESS'                                       
                  })} 
                onReadyToPayChange={result => {
                  console.log('ready to pay change', result);
                  this.setState({isReadyToPay : result.isReadyToPay});
                }}                                     
                onCancel={() => alert('Cancelled')}
                existingPaymentMethodRequired = {true}                                  
                />
处理付款(paymentDetail){
const paymentToken=paymentDetail.paymentMethodData.tokenizationData.token;
让paymentData={
订单ID:'123312312311',
金额:'50.00'
}
axios.post(“https://esqa.moneris.com/googlepay/googlepay-api.js", {
正文:JSON.stringify({
paymentToken,
支付数据
})
})。然后(响应=>{
if(response&&response.receive&&response.receive.ResponseCode&&
!isNaN(响应.接收.响应代码))
{
if(parseInt(response.receive.ResponseCode)<50)
{
警报(“看起来交易已批准”);
}
其他的
{
警报(“看起来交易被拒绝了”);
}
}
其他的
{
抛出(“错误处理收据”);
}
})
}
{
console.log('load payment data',paymentRequest);
此。处理付款(paymentRequest)
}} 
onPaymentAuthorized={(paymentData)=>({
transactionState:“成功”
})} 
onReadyToPayChange={result=>{
console.log(“准备付款变更”,结果);
this.setState({isReadyToPay:result.isReadyToPay});
}}                                     
onCancel={()=>警报('Cancelled')}
existingPaymentMethodRequired={true}
/>

您需要从
onLoadPaymentData
调用您的
processPayment
方法

您的
processPayment
负责调用后端并将支付令牌传递给您的支付网关

例如:

onLoadPaymentData={paymentRequest=>{
处理付款();
}}
异步函数处理付款(paymentData){
const paymentToken=paymentData.paymentMethodData.tokenizationData.token;
const response=wait fetch(“/backend/api”{
方法:“张贴”,
正文:JSON.stringify({
paymentToken,
orderDetails:{/*有关订单的详细信息*/}
})
});
}

我收到此错误“从源站“”访问“”处的XMLHttpRequest已被CORS策略阻止:对飞行前请求的响应未通过访问控制检查:请求的资源上不存在“访问控制允许源站”标头。”再次查看代码我修改了它。看起来您正试图从前端调用您的PSP。你不应该这样。这个流程应该类似于浏览器>你的后端服务器>你的PSP。“MonerisGooglePay(){this.error=false;this.session=null;this.channel=null;this.container=null;this.validateCallback=null;this.receiptCallback=null;this.host=“esqa.moneris.com”;this.debug=false;this.\u credentials=null;};------------”我认为问题在于,您实际上是在向Nodejs请求他们的JS库。我不熟悉Moneris,但您需要找到一种使用NodeJ进行API调用的方法。看起来他们没有Nodejs库:你能看看这个链接并告诉我如何实现processPayment功能吗?